MCPcopy Create free account
hub / github.com/BitVM/BitVM / test_zip

Function test_zip

bitvm/src/bigint/std.rs:712–775  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

710
711 #[test]
712 fn test_zip() {
713 const N_BITS: u32 = 1450;
714 const N_U30_LIMBS: u32 = 50;
715
716 let mut prng = ChaCha20Rng::seed_from_u64(0);
717
718 for _ in 0..50 {
719 let mut v = vec![];
720 for _ in 0..N_U30_LIMBS {
721 v.push(prng.gen::<i32>());
722 }
723 for _ in 0..N_U30_LIMBS {
724 v.push(prng.gen::<i32>());
725 }
726
727 let mut expected = vec![];
728 for i in 0..N_U30_LIMBS {
729 expected.push(v[i as usize]);
730 expected.push(v[(N_U30_LIMBS + i) as usize]);
731 }
732
733 let script = script! {
734 for i in 0..N_U30_LIMBS * 2 {
735 { v[i as usize] }
736 }
737 { BigIntImpl::<N_BITS, 29>::zip(1, 0) }
738 for i in 0..N_U30_LIMBS * 2 {
739 { expected[(N_U30_LIMBS * 2 - 1 - i) as usize] }
740 OP_EQUALVERIFY
741 }
742 OP_TRUE
743 };
744 run(script);
745 }
746
747 for _ in 0..50 {
748 let mut v = vec![];
749 for _ in 0..N_U30_LIMBS {
750 v.push(prng.gen::<i32>());
751 }
752 for _ in 0..N_U30_LIMBS {
753 v.push(prng.gen::<i32>());
754 }
755
756 let mut expected = vec![];
757 for i in 0..N_U30_LIMBS {
758 expected.push(v[(N_U30_LIMBS + i) as usize]);
759 expected.push(v[i as usize]);
760 }
761
762 let script = script! {
763 for i in 0..N_U30_LIMBS * 2 {
764 { v[i as usize] }
765 }
766 { BigIntImpl::<N_BITS, 29>::zip(0, 1) }
767 for i in 0..N_U30_LIMBS * 2 {
768 { expected[(N_U30_LIMBS * 2 - 1 - i) as usize] }
769 OP_EQUALVERIFY

Callers

nothing calls this directly

Calls 2

runFunction · 0.85
pushMethod · 0.45

Tested by

no test coverage detected