addresses tests

This commit is contained in:
AF 2023-04-23 03:10:17 +00:00
parent c91c8f5a0d
commit a432f65848

View File

@ -64,3 +64,46 @@ impl<'a, Ctx: 'a + Context, F: Factory<'a, Ctx>> ExtFactory<'a, Ctx> for F {
_parse_slice::<Ctx, F::Mtbl>(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);
}
}
}