From a432f65848c359ba3d39b82708306579d9677044 Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 23 Apr 2023 03:10:17 +0000 Subject: [PATCH] addresses tests --- src/core/addresses.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/core/addresses.rs b/src/core/addresses.rs index 4f57988..2dcc507 100644 --- a/src/core/addresses.rs +++ b/src/core/addresses.rs @@ -64,3 +64,46 @@ impl<'a, Ctx: 'a + Context, F: Factory<'a, Ctx>> ExtFactory<'a, Ctx> for F { _parse_slice::(self, slice, resolver) } } + +#[cfg(test)] +mod tests { + use crate::core::*; + + #[test] + fn can_read_one_address() { + let mut addresses = Addresses::start(); + let point = b"A".repeat(HASH_SIZE); + let mut deserializer = SliceDeserializer::from(point.as_slice()); + let address = addresses.next(&mut deserializer).unwrap(); + assert_eq!(address.point, point.as_slice()); + assert_eq!(address.index, 0); + } + + #[test] + fn can_read_three_addresses_and_fail_on_extra_tail() { + let mut addresses = Addresses::start(); + let point0 = b"A".repeat(HASH_SIZE); + let point1 = b"B".repeat(HASH_SIZE); + let point2 = b"C".repeat(HASH_SIZE); + let tail = b"tail"; + let mut source = Vec::new(); + source.extend(&point0); + source.extend(&point1); + source.extend(&point2); + source.extend(tail); + let mut deserializer = SliceDeserializer::from(source.as_slice()); + let address = addresses.next(&mut deserializer).unwrap(); + assert_eq!(address.point, point0.as_slice()); + assert_eq!(address.index, 0); + let address = addresses.next(&mut deserializer).unwrap(); + assert_eq!(address.point, point1.as_slice()); + assert_eq!(address.index, 1); + let address = addresses.next(&mut deserializer).unwrap(); + assert_eq!(address.point, point2.as_slice()); + assert_eq!(address.index, 2); + if tail.len() < HASH_SIZE { + let err = addresses.next(&mut deserializer).unwrap_err(); + assert_eq!(err, tail); + } + } +}