snarkvm_synthesizer_program/mapping/
bytes.rs1use super::*;
17
18impl<N: Network> FromBytes for Mapping<N> {
19 #[inline]
21 fn read_le<R: Read>(mut reader: R) -> IoResult<Self> {
22 let name = Identifier::<N>::read_le(&mut reader)?;
24 let key = FromBytes::read_le(&mut reader)?;
26 let value = FromBytes::read_le(&mut reader)?;
28 Ok(Self::new(name, key, value))
30 }
31}
32
33impl<N: Network> ToBytes for Mapping<N> {
34 #[inline]
36 fn write_le<W: Write>(&self, mut writer: W) -> IoResult<()> {
37 self.name.write_le(&mut writer)?;
39 self.key.write_le(&mut writer)?;
41 self.value.write_le(&mut writer)
43 }
44}
45
46#[cfg(test)]
47mod tests {
48 use super::*;
49 use console::network::MainnetV0;
50
51 type CurrentNetwork = MainnetV0;
52
53 #[test]
54 fn test_mapping_bytes() -> Result<()> {
55 let mapping_string = r"
56mapping main:
57 key as field.public;
58 value as field.public;";
59
60 let expected = Mapping::<CurrentNetwork>::from_str(mapping_string)?;
61 let expected_bytes = expected.to_bytes_le()?;
62 println!("String size: {:?}, Bytecode size: {:?}", mapping_string.len(), expected_bytes.len());
63
64 let candidate = Mapping::<CurrentNetwork>::from_bytes_le(&expected_bytes)?;
65 assert_eq!(expected.to_string(), candidate.to_string());
66 assert_eq!(expected_bytes, candidate.to_bytes_le()?);
67 Ok(())
68 }
69}