mirror of https://git.sr.ht/~stygianentity/bincode
Added unit tests for decoding errors
This commit is contained in:
parent
ca353b9882
commit
1313e989ad
|
|
@ -213,6 +213,38 @@ fn test_decode_u16() {
|
||||||
let found = varint_decode_u16(&mut reader, Endian::Big).unwrap();
|
let found = varint_decode_u16(&mut reader, Endian::Big).unwrap();
|
||||||
assert_eq!(expected_be, found);
|
assert_eq!(expected_be, found);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let errors: &[(&[u8], DecodeError)] = &[
|
||||||
|
(
|
||||||
|
&[U32_BYTE],
|
||||||
|
DecodeError::InvalidIntegerType {
|
||||||
|
expected: IntegerType::U16,
|
||||||
|
found: IntegerType::U32,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U64_BYTE],
|
||||||
|
DecodeError::InvalidIntegerType {
|
||||||
|
expected: IntegerType::U16,
|
||||||
|
found: IntegerType::U64,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE],
|
||||||
|
DecodeError::InvalidIntegerType {
|
||||||
|
expected: IntegerType::U16,
|
||||||
|
found: IntegerType::U128,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(&[U16_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U16_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
];
|
||||||
|
|
||||||
|
for (slice, expected) in errors {
|
||||||
|
let mut reader = crate::de::read::SliceReader::new(slice);
|
||||||
|
let found = varint_decode_u16(&mut reader, Endian::Little).unwrap_err();
|
||||||
|
assert_eq!(std::format!("{:?}", expected), std::format!("{:?}", found));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -232,6 +264,35 @@ fn test_decode_u32() {
|
||||||
let found = varint_decode_u32(&mut reader, Endian::Big).unwrap();
|
let found = varint_decode_u32(&mut reader, Endian::Big).unwrap();
|
||||||
assert_eq!(expected_be, found);
|
assert_eq!(expected_be, found);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let errors: &[(&[u8], DecodeError)] = &[
|
||||||
|
(
|
||||||
|
&[U64_BYTE],
|
||||||
|
DecodeError::InvalidIntegerType {
|
||||||
|
expected: IntegerType::U32,
|
||||||
|
found: IntegerType::U64,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE],
|
||||||
|
DecodeError::InvalidIntegerType {
|
||||||
|
expected: IntegerType::U32,
|
||||||
|
found: IntegerType::U128,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(&[U16_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U16_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
];
|
||||||
|
|
||||||
|
for (slice, expected) in errors {
|
||||||
|
let mut reader = crate::de::read::SliceReader::new(slice);
|
||||||
|
let found = varint_decode_u32(&mut reader, Endian::Little).unwrap_err();
|
||||||
|
assert_eq!(std::format!("{:?}", expected), std::format!("{:?}", found));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -256,6 +317,36 @@ fn test_decode_u64() {
|
||||||
let found = varint_decode_u64(&mut reader, Endian::Big).unwrap();
|
let found = varint_decode_u64(&mut reader, Endian::Big).unwrap();
|
||||||
assert_eq!(expected_be, found);
|
assert_eq!(expected_be, found);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let errors: &[(&[u8], DecodeError)] = &[
|
||||||
|
(
|
||||||
|
&[U128_BYTE],
|
||||||
|
DecodeError::InvalidIntegerType {
|
||||||
|
expected: IntegerType::U64,
|
||||||
|
found: IntegerType::U128,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(&[U16_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U16_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
];
|
||||||
|
|
||||||
|
for (slice, expected) in errors {
|
||||||
|
let mut reader = crate::de::read::SliceReader::new(slice);
|
||||||
|
let found = varint_decode_u64(&mut reader, Endian::Little).unwrap_err();
|
||||||
|
assert_eq!(std::format!("{:?}", expected), std::format!("{:?}", found));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
@ -285,4 +376,67 @@ fn test_decode_u128() {
|
||||||
let found = varint_decode_u128(&mut reader, Endian::Big).unwrap();
|
let found = varint_decode_u128(&mut reader, Endian::Big).unwrap();
|
||||||
assert_eq!(expected_be, found);
|
assert_eq!(expected_be, found);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let errors: &[(&[u8], DecodeError)] = &[
|
||||||
|
(&[U16_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U16_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U32_BYTE, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U64_BYTE, 0, 0, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(&[U128_BYTE, 0, 0, 0, 0, 0, 0], DecodeError::UnexpectedEnd),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
&[U128_BYTE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
DecodeError::UnexpectedEnd,
|
||||||
|
),
|
||||||
|
];
|
||||||
|
|
||||||
|
for (slice, expected) in errors {
|
||||||
|
let mut reader = crate::de::read::SliceReader::new(slice);
|
||||||
|
let found = varint_decode_u128(&mut reader, Endian::Little).unwrap_err();
|
||||||
|
std::dbg!(slice);
|
||||||
|
assert_eq!(std::format!("{:?}", expected), std::format!("{:?}", found));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue