mirror of https://git.sr.ht/~stygianentity/bincode
Added unit tests for encode_signed
This commit is contained in:
parent
1313e989ad
commit
f914b3e580
|
|
@ -88,20 +88,231 @@ pub fn varint_encode_isize<W: Writer>(
|
|||
|
||||
#[test]
|
||||
fn test_encode_i16() {
|
||||
// TODO
|
||||
let cases: &[(i16, &[u8], &[u8])] = &[
|
||||
(0, &[0], &[0]),
|
||||
(2, &[4], &[4]),
|
||||
(256, &[super::U16_BYTE, 0, 2], &[super::U16_BYTE, 2, 0]),
|
||||
(
|
||||
16_000,
|
||||
&[super::U16_BYTE, 0, 125],
|
||||
&[super::U16_BYTE, 125, 0],
|
||||
),
|
||||
(
|
||||
i16::MAX - 1,
|
||||
&[super::U16_BYTE, 252, 255],
|
||||
&[super::U16_BYTE, 255, 252],
|
||||
),
|
||||
(
|
||||
i16::MAX,
|
||||
&[super::U16_BYTE, 254, 255],
|
||||
&[super::U16_BYTE, 255, 254],
|
||||
),
|
||||
];
|
||||
|
||||
use crate::enc::write::SliceWriter;
|
||||
let mut buffer = [0u8; 20];
|
||||
for &(value, expected_le, expected_be) in cases {
|
||||
std::dbg!(value);
|
||||
|
||||
// Little endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i16(&mut writer, Endian::Little, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_le.len());
|
||||
assert_eq!(&buffer[..expected_le.len()], expected_le);
|
||||
|
||||
// Big endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i16(&mut writer, Endian::Big, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_be.len());
|
||||
assert_eq!(&buffer[..expected_be.len()], expected_be);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_encode_i32() {
|
||||
// TODO
|
||||
let cases: &[(i32, &[u8], &[u8])] = &[
|
||||
(0, &[0], &[0]),
|
||||
(2, &[4], &[4]),
|
||||
(256, &[super::U16_BYTE, 0, 2], &[super::U16_BYTE, 2, 0]),
|
||||
(
|
||||
16_000,
|
||||
&[super::U16_BYTE, 0, 125],
|
||||
&[super::U16_BYTE, 125, 0],
|
||||
),
|
||||
(
|
||||
40_000,
|
||||
&[super::U32_BYTE, 128, 56, 1, 0],
|
||||
&[super::U32_BYTE, 0, 1, 56, 128],
|
||||
),
|
||||
(
|
||||
i32::MAX - 1,
|
||||
&[super::U32_BYTE, 252, 255, 255, 255],
|
||||
&[super::U32_BYTE, 255, 255, 255, 252],
|
||||
),
|
||||
(
|
||||
i32::MAX,
|
||||
&[super::U32_BYTE, 254, 255, 255, 255],
|
||||
&[super::U32_BYTE, 255, 255, 255, 254],
|
||||
),
|
||||
];
|
||||
|
||||
use crate::enc::write::SliceWriter;
|
||||
let mut buffer = [0u8; 20];
|
||||
for &(value, expected_le, expected_be) in cases {
|
||||
std::dbg!(value);
|
||||
|
||||
// Little endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i32(&mut writer, Endian::Little, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_le.len());
|
||||
assert_eq!(&buffer[..expected_le.len()], expected_le);
|
||||
|
||||
// Big endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i32(&mut writer, Endian::Big, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_be.len());
|
||||
assert_eq!(&buffer[..expected_be.len()], expected_be);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_encode_i64() {
|
||||
// TODO
|
||||
let cases: &[(i64, &[u8], &[u8])] = &[
|
||||
(0, &[0], &[0]),
|
||||
(2, &[4], &[4]),
|
||||
(256, &[super::U16_BYTE, 0, 2], &[super::U16_BYTE, 2, 0]),
|
||||
(
|
||||
16_000,
|
||||
&[super::U16_BYTE, 0, 125],
|
||||
&[super::U16_BYTE, 125, 0],
|
||||
),
|
||||
(
|
||||
40_000,
|
||||
&[super::U32_BYTE, 128, 56, 1, 0],
|
||||
&[super::U32_BYTE, 0, 1, 56, 128],
|
||||
),
|
||||
(
|
||||
3_000_000_000,
|
||||
&[super::U64_BYTE, 0, 188, 160, 101, 1, 0, 0, 0],
|
||||
&[super::U64_BYTE, 0, 0, 0, 1, 101, 160, 188, 0],
|
||||
),
|
||||
(
|
||||
i64::MAX - 1,
|
||||
&[super::U64_BYTE, 252, 255, 255, 255, 255, 255, 255, 255],
|
||||
&[super::U64_BYTE, 255, 255, 255, 255, 255, 255, 255, 252],
|
||||
),
|
||||
(
|
||||
i64::MAX,
|
||||
&[super::U64_BYTE, 254, 255, 255, 255, 255, 255, 255, 255],
|
||||
&[super::U64_BYTE, 255, 255, 255, 255, 255, 255, 255, 254],
|
||||
),
|
||||
];
|
||||
|
||||
use crate::enc::write::SliceWriter;
|
||||
let mut buffer = [0u8; 20];
|
||||
for &(value, expected_le, expected_be) in cases {
|
||||
std::dbg!(value);
|
||||
|
||||
// Little endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i64(&mut writer, Endian::Little, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_le.len());
|
||||
assert_eq!(&buffer[..expected_le.len()], expected_le);
|
||||
|
||||
// Big endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i64(&mut writer, Endian::Big, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_be.len());
|
||||
assert_eq!(&buffer[..expected_be.len()], expected_be);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_encode_i128() {
|
||||
// TODO
|
||||
#[rustfmt::skip]
|
||||
let cases: &[(i128, &[u8], &[u8])] = &[
|
||||
(0, &[0], &[0]),
|
||||
(2, &[4], &[4]),
|
||||
(256, &[super::U16_BYTE, 0, 2], &[super::U16_BYTE, 2, 0]),
|
||||
(
|
||||
16_000,
|
||||
&[super::U16_BYTE, 0, 125],
|
||||
&[super::U16_BYTE, 125, 0],
|
||||
),
|
||||
(
|
||||
40_000,
|
||||
&[super::U32_BYTE, 128, 56, 1, 0],
|
||||
&[super::U32_BYTE, 0, 1, 56, 128],
|
||||
),
|
||||
(
|
||||
3_000_000_000,
|
||||
&[super::U64_BYTE, 0, 188, 160, 101, 1, 0, 0, 0],
|
||||
&[super::U64_BYTE, 0, 0, 0, 1, 101, 160, 188, 0],
|
||||
),
|
||||
(
|
||||
11_000_000_000_000_000_000,
|
||||
&[
|
||||
super::U128_BYTE,
|
||||
0, 0, 152, 98, 112, 179, 79, 49,
|
||||
1, 0, 0, 0, 0, 0, 0, 0,
|
||||
],
|
||||
&[
|
||||
super::U128_BYTE,
|
||||
0, 0, 0, 0, 0, 0, 0, 1,
|
||||
49, 79, 179, 112, 98, 152, 0, 0,
|
||||
],
|
||||
),
|
||||
(
|
||||
i128::MAX - 1,
|
||||
&[
|
||||
super::U128_BYTE,
|
||||
252, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255,
|
||||
],
|
||||
&[
|
||||
super::U128_BYTE,
|
||||
255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 252,
|
||||
],
|
||||
),
|
||||
(
|
||||
i128::MAX,
|
||||
&[
|
||||
super::U128_BYTE,
|
||||
254, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255,
|
||||
],
|
||||
&[
|
||||
super::U128_BYTE,
|
||||
255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 254,
|
||||
],
|
||||
),
|
||||
];
|
||||
|
||||
use crate::enc::write::SliceWriter;
|
||||
let mut buffer = [0u8; 20];
|
||||
for &(value, expected_le, expected_be) in cases {
|
||||
std::dbg!(value);
|
||||
|
||||
// Little endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i128(&mut writer, Endian::Little, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_le.len());
|
||||
assert_eq!(&buffer[..expected_le.len()], expected_le);
|
||||
|
||||
// Big endian
|
||||
let mut writer = SliceWriter::new(&mut buffer);
|
||||
varint_encode_i128(&mut writer, Endian::Big, value).unwrap();
|
||||
|
||||
assert_eq!(writer.bytes_written(), expected_be.len());
|
||||
assert_eq!(&buffer[..expected_be.len()], expected_be);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue