From 707651f9ee5b234b52a200fb17c4dc3381ec2666 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2026 07:46:49 +0000 Subject: [PATCH 1/2] Add tests for varint_decode_i16 Co-authored-by: panayang <223123845+panayang@users.noreply.github.com> --- src/varint/decode_signed.rs | 59 +++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/varint/decode_signed.rs b/src/varint/decode_signed.rs index 7cc97b45..acf3c86d 100644 --- a/src/varint/decode_signed.rs +++ b/src/varint/decode_signed.rs @@ -108,3 +108,62 @@ pub fn varint_decode_isize( | Err(e) => Err(e), } } + +#[test] +fn test_decode_i16() { + let cases: &[(&[u8], &[u8], i16)] = &[ + (&[0], &[0], 0), + (&[4], &[4], 2), + (&[3], &[3], -2), + (&[crate::varint::U16_BYTE, 0, 2], &[crate::varint::U16_BYTE, 2, 0], 256), + (&[crate::varint::U16_BYTE, 255, 1], &[crate::varint::U16_BYTE, 1, 255], -256), + (&[crate::varint::U16_BYTE, 0, 125], &[crate::varint::U16_BYTE, 125, 0], 16000), + (&[crate::varint::U16_BYTE, 255, 124], &[crate::varint::U16_BYTE, 124, 255], -16000), + (&[crate::varint::U16_BYTE, 252, 255], &[crate::varint::U16_BYTE, 255, 252], 32766), + (&[crate::varint::U16_BYTE, 254, 255], &[crate::varint::U16_BYTE, 255, 254], 32767), + (&[crate::varint::U16_BYTE, 253, 255], &[crate::varint::U16_BYTE, 255, 253], -32767), + (&[crate::varint::U16_BYTE, 255, 255], &[crate::varint::U16_BYTE, 255, 255], -32768), + ]; + + for &(slice_le, slice_be, expected) in cases { + let mut reader = crate::de::read::SliceReader::new(slice_le); + let found = varint_decode_i16(&mut reader, Endianness::Little).unwrap(); + assert_eq!(expected, found); + + let mut reader = crate::de::read::SliceReader::new(slice_be); + let found = varint_decode_i16(&mut reader, Endianness::Big).unwrap(); + assert_eq!(expected, found); + } + + let errors: &[(&[u8], DecodeError)] = &[ + ( + &[crate::varint::U32_BYTE], + DecodeError::InvalidIntegerType { + expected: IntegerType::I16, + found: IntegerType::I32, + }, + ), + ( + &[crate::varint::U64_BYTE], + DecodeError::InvalidIntegerType { + expected: IntegerType::I16, + found: IntegerType::I64, + }, + ), + ( + &[crate::varint::U128_BYTE], + DecodeError::InvalidIntegerType { + expected: IntegerType::I16, + found: IntegerType::I128, + }, + ), + (&[crate::varint::U16_BYTE], DecodeError::UnexpectedEnd { additional: 2 }), + (&[crate::varint::U16_BYTE, 0], DecodeError::UnexpectedEnd { additional: 1 }), + ]; + + for (slice, expected) in errors { + let mut reader = crate::de::read::SliceReader::new(slice); + let found = varint_decode_i16(&mut reader, Endianness::Little).unwrap_err(); + assert_eq!(std::format!("{expected:?}"), std::format!("{found:?}")); + } +} From 1c72e58238fa66dd39b45cbf21dd2adc424ae8d9 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 26 Jul 2026 16:01:49 +0000 Subject: [PATCH 2/2] Add tests for varint_decode_i16 --- src/varint/decode_signed.rs | 58 ++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/src/varint/decode_signed.rs b/src/varint/decode_signed.rs index acf3c86d..834fb05a 100644 --- a/src/varint/decode_signed.rs +++ b/src/varint/decode_signed.rs @@ -115,14 +115,46 @@ fn test_decode_i16() { (&[0], &[0], 0), (&[4], &[4], 2), (&[3], &[3], -2), - (&[crate::varint::U16_BYTE, 0, 2], &[crate::varint::U16_BYTE, 2, 0], 256), - (&[crate::varint::U16_BYTE, 255, 1], &[crate::varint::U16_BYTE, 1, 255], -256), - (&[crate::varint::U16_BYTE, 0, 125], &[crate::varint::U16_BYTE, 125, 0], 16000), - (&[crate::varint::U16_BYTE, 255, 124], &[crate::varint::U16_BYTE, 124, 255], -16000), - (&[crate::varint::U16_BYTE, 252, 255], &[crate::varint::U16_BYTE, 255, 252], 32766), - (&[crate::varint::U16_BYTE, 254, 255], &[crate::varint::U16_BYTE, 255, 254], 32767), - (&[crate::varint::U16_BYTE, 253, 255], &[crate::varint::U16_BYTE, 255, 253], -32767), - (&[crate::varint::U16_BYTE, 255, 255], &[crate::varint::U16_BYTE, 255, 255], -32768), + ( + &[crate::varint::U16_BYTE, 0, 2], + &[crate::varint::U16_BYTE, 2, 0], + 256, + ), + ( + &[crate::varint::U16_BYTE, 255, 1], + &[crate::varint::U16_BYTE, 1, 255], + -256, + ), + ( + &[crate::varint::U16_BYTE, 0, 125], + &[crate::varint::U16_BYTE, 125, 0], + 16000, + ), + ( + &[crate::varint::U16_BYTE, 255, 124], + &[crate::varint::U16_BYTE, 124, 255], + -16000, + ), + ( + &[crate::varint::U16_BYTE, 252, 255], + &[crate::varint::U16_BYTE, 255, 252], + 32766, + ), + ( + &[crate::varint::U16_BYTE, 254, 255], + &[crate::varint::U16_BYTE, 255, 254], + 32767, + ), + ( + &[crate::varint::U16_BYTE, 253, 255], + &[crate::varint::U16_BYTE, 255, 253], + -32767, + ), + ( + &[crate::varint::U16_BYTE, 255, 255], + &[crate::varint::U16_BYTE, 255, 255], + -32768, + ), ]; for &(slice_le, slice_be, expected) in cases { @@ -157,8 +189,14 @@ fn test_decode_i16() { found: IntegerType::I128, }, ), - (&[crate::varint::U16_BYTE], DecodeError::UnexpectedEnd { additional: 2 }), - (&[crate::varint::U16_BYTE, 0], DecodeError::UnexpectedEnd { additional: 1 }), + ( + &[crate::varint::U16_BYTE], + DecodeError::UnexpectedEnd { additional: 2 }, + ), + ( + &[crate::varint::U16_BYTE, 0], + DecodeError::UnexpectedEnd { additional: 1 }, + ), ]; for (slice, expected) in errors {