ark-r1cs-std/tests/to_bytes_test.rs
tests/to_bytes_test.rsRaw
1use ark_ec::PairingEngine;
2use ark_ff::{to_bytes, Zero};
3use ark_mnt4_298::MNT4_298;
4use ark_mnt6_298::MNT6_298;
5use ark_r1cs_std::alloc::AllocVar;
6use ark_r1cs_std::fields::nonnative::NonNativeFieldVar;
7use ark_r1cs_std::{R1CSVar, ToBitsGadget, ToBytesGadget};
8use ark_relations::r1cs::ConstraintSystem;
9
10#[test]
11fn to_bytes_test() {
12 let cs = ConstraintSystem::<<MNT6_298 as PairingEngine>::Fr>::new_ref();
13
14 let target_test_elem = <MNT4_298 as PairingEngine>::Fr::from(123456u128);
15 let target_test_gadget = NonNativeFieldVar::<
16 <MNT4_298 as PairingEngine>::Fr,
17 <MNT6_298 as PairingEngine>::Fr,
18 >::new_witness(cs, || Ok(target_test_elem))
19 .unwrap();
20
21 let target_to_bytes: Vec<u8> = target_test_gadget
22 .to_bytes()
23 .unwrap()
24 .iter()
25 .map(|v| v.value().unwrap())
26 .collect();
27
28 // 123456 = 65536 + 226 * 256 + 64
29 assert_eq!(target_to_bytes[0], 64);
30 assert_eq!(target_to_bytes[1], 226);
31 assert_eq!(target_to_bytes[2], 1);
32
33 for byte in target_to_bytes.iter().skip(3) {
34 assert_eq!(*byte, 0);
35 }
36
37 assert_eq!(to_bytes!(target_test_elem).unwrap(), target_to_bytes);
38}
39
40#[test]
41fn to_bits_test() {
42 type F = ark_bls12_377::Fr;
43 type CF = ark_bls12_377::Fq;
44
45 let cs = ConstraintSystem::<CF>::new_ref();
46 let f = F::zero();
47
48 let f_var = NonNativeFieldVar::<F, CF>::new_input(cs.clone(), || Ok(f)).unwrap();
49 f_var.to_bits_le().unwrap();
50}