Skip to content

Commit

Permalink
Add some more tests for generic structures
Browse files Browse the repository at this point in the history
  • Loading branch information
fwcd committed Aug 2, 2023
1 parent 275a936 commit 87dd855
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 3 deletions.
18 changes: 18 additions & 0 deletions tests/pack_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,24 @@ fn basic_structs() {
assert_eq!(pack_vec::<BigEndian, _>(Unit), vec![]);
}

#[test]
fn generic_structs() {
#[derive(Size, Pack)]
#[allow(dead_code)]
struct Wrap<T>(T);

#[derive(Size, Pack)]
#[allow(dead_code)]
struct Pair<L, R> {
left: L,
right: R,
}

assert_eq!(pack_vec::<LittleEndian, _>(Wrap(3i32)), vec![3, 0, 0, 0]);
assert_eq!(pack_vec::<BigEndian, _>(Wrap(4u16)), vec![0, 4]);
assert_eq!(pack_vec::<BigEndian, _>(Pair { left: -4i16, right: 3u8 }), pack_vec::<BigEndian, _>((-4i16, 3u8)));
}

#[test]
fn primitive_enums() {
#[derive(Size, Pack, Clone, Copy)]
Expand Down
18 changes: 18 additions & 0 deletions tests/roundtrip_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,24 @@ fn basic_structs() {
assert_roundtrips!(Unit);
}

#[test]
fn generic_structs() {
#[derive(Size, Pack, Unpack, Debug, PartialEq, Eq)]
#[allow(dead_code)]
struct Wrap<T>(T);

#[derive(Size, Pack, Unpack, Debug, PartialEq, Eq)]
#[allow(dead_code)]
struct Pair<L, R> {
left: L,
right: R,
}

assert_roundtrips!(Wrap(-1i8));
assert_roundtrips!(Wrap(13u16));
assert_roundtrips!(Pair { left: Wrap(23i64), right: Wrap(274u32) });
}

#[test]
fn primitive_enums() {
#[derive(Size, Pack, Unpack, Clone, Copy, PartialEq, Eq, Debug)]
Expand Down
4 changes: 1 addition & 3 deletions tests/size_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,7 @@ fn basic_structs() {
fn generic_structs() {
#[derive(Size)]
#[allow(dead_code)]
struct Wrap<T> {
wrapped: T,
}
struct Wrap<T>(T);

#[derive(Size)]
#[allow(dead_code)]
Expand Down
23 changes: 23 additions & 0 deletions tests/unpack_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,29 @@ fn basic_structs() {
assert_eq!(Unit::unpack::<BigEndian>(&[1, 2]), Ok(Unit));
}

#[test]
fn generic_structs() {
#[derive(Size, Unpack, Debug, PartialEq, Eq)]
#[allow(dead_code)]
struct Wrap<T>(T);

#[derive(Size, Unpack, Debug, PartialEq, Eq)]
#[allow(dead_code)]
struct Pair<L, R> {
left: L,
right: R,
}

assert_eq!(Wrap::unpack::<LittleEndian>(&[3, 0, 0, 0]), Ok(Wrap(3i32)));
assert_eq!(Wrap::unpack::<BigEndian>(&[0, 4]), Ok(Wrap(4u16)));

let buffer = [9, 8, 3];
assert_eq!(
<(i16, u8)>::unpack::<BigEndian>(&buffer),
Pair::<i16, u8>::unpack::<BigEndian>(&buffer).map(|Pair { left, right }| (left, right))
);
}

#[test]
fn primitive_enums() {
#[derive(Size, Unpack, Clone, Copy, PartialEq, Eq, Debug)]
Expand Down

0 comments on commit 87dd855

Please sign in to comment.