| 142 | |
| 143 | #[test] |
| 144 | fn test_pointer_to_bytes() { |
| 145 | let rlp_hash = RlpNode::word_rlp(&EMPTY_ROOT_HASH); |
| 146 | let pointer = Pointer::new(Location::for_cell(1), rlp_hash); |
| 147 | let bytes = pointer.serialize().unwrap(); |
| 148 | let mut expected = vec![0, 0, 0, 1, 1]; |
| 149 | expected.extend(EMPTY_ROOT_HASH); |
| 150 | assert_eq!(bytes, expected); |
| 151 | |
| 152 | let short_rlp = RlpNode::from_rlp(&encode(42u64)); |
| 153 | let pointer = Pointer::new(Location::for_cell(1), short_rlp); |
| 154 | let bytes = pointer.serialize().unwrap(); |
| 155 | let mut expected = vec![0, 0, 0, 1, 0, 42]; |
| 156 | expected.extend([0; 31]); |
| 157 | assert_eq!(bytes, expected); |
| 158 | |
| 159 | let zero_rlp = RlpNode::from_rlp(&encode(0u64)); |
| 160 | let pointer = Pointer::new(Location::for_cell(1), zero_rlp); |
| 161 | let bytes = pointer.serialize().unwrap(); |
| 162 | let mut expected = vec![0, 0, 0, 1, 0, 128]; |
| 163 | expected.extend([0; 31]); |
| 164 | assert_eq!(bytes, expected); |
| 165 | |
| 166 | let short_string_rlp = RlpNode::from_rlp(&encode("hello world")); |
| 167 | let pointer = Pointer::new(Location::for_cell(1), short_string_rlp); |
| 168 | let bytes = pointer.serialize().unwrap(); |
| 169 | let mut expected = vec![0, 0, 0, 1, 0, 139]; |
| 170 | expected.extend(b"hello world"); |
| 171 | expected.extend([0; 20]); |
| 172 | assert_eq!(bytes, expected); |
| 173 | |
| 174 | // Hex encoding of ["abc", 12345] |
| 175 | let short_leaf_rlp = RlpNode::from_rlp(&hex!("c783616263823039")); |
| 176 | let pointer = Pointer::new(Location::for_cell(1), short_leaf_rlp); |
| 177 | let bytes = pointer.serialize().unwrap(); |
| 178 | let mut expected = vec![0, 0, 0, 1, 0, 0xc7, 0x83, 0x61, 0x62, 0x63, 0x82, 0x30, 0x39]; |
| 179 | expected.extend([0; 24]); |
| 180 | assert_eq!(bytes, expected); |
| 181 | } |
| 182 | |
| 183 | #[test] |
| 184 | fn test_pointer_from_bytes() { |