snarkvm_console_types_group/
from_bits.rs1use super::*;
17
18impl<E: Environment> FromBits for Group<E> {
19 fn from_bits_le(bits_le: &[bool]) -> Result<Self> {
21 Self::from_x_coordinate(Field::<E>::from_bits_le(bits_le)?)
22 }
23
24 fn from_bits_be(bits_be: &[bool]) -> Result<Self> {
26 Self::from_x_coordinate(Field::<E>::from_bits_be(bits_be)?)
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33 use snarkvm_console_network_environment::Console;
34
35 type CurrentEnvironment = Console;
36
37 const ITERATIONS: usize = 100;
38
39 fn check_from_bits_le() -> Result<()> {
40 let mut rng = TestRng::default();
41
42 for i in 0..ITERATIONS {
43 let expected: Group<CurrentEnvironment> = Uniform::rand(&mut rng);
45 let given_bits = expected.to_bits_le();
46 assert_eq!(Group::<CurrentEnvironment>::size_in_bits(), given_bits.len());
47
48 let candidate = Group::<CurrentEnvironment>::from_bits_le(&given_bits)?;
49 assert_eq!(expected, candidate);
50
51 let candidate = [given_bits, vec![false; i]].concat();
53
54 let candidate = Group::<CurrentEnvironment>::from_bits_le(&candidate)?;
55 assert_eq!(expected, candidate);
56 assert_eq!(Group::<CurrentEnvironment>::size_in_bits(), candidate.to_bits_le().len());
57 }
58 Ok(())
59 }
60
61 fn check_from_bits_be() -> Result<()> {
62 let mut rng = TestRng::default();
63
64 for i in 0..ITERATIONS {
65 let expected: Group<CurrentEnvironment> = Uniform::rand(&mut rng);
67 let given_bits = expected.to_bits_be();
68 assert_eq!(Group::<CurrentEnvironment>::size_in_bits(), given_bits.len());
69
70 let candidate = Group::<CurrentEnvironment>::from_bits_be(&given_bits)?;
71 assert_eq!(expected, candidate);
72
73 let candidate = [vec![false; i], given_bits].concat();
75
76 let candidate = Group::<CurrentEnvironment>::from_bits_be(&candidate)?;
77 assert_eq!(expected, candidate);
78 assert_eq!(Group::<CurrentEnvironment>::size_in_bits(), candidate.to_bits_be().len());
79 }
80 Ok(())
81 }
82
83 #[test]
84 fn test_from_bits_le() -> Result<()> {
85 check_from_bits_le()
86 }
87
88 #[test]
89 fn test_from_bits_be() -> Result<()> {
90 check_from_bits_be()
91 }
92}