Skip to content

Commit

Permalink
Switch from serde_test to serde_assert.
Browse files Browse the repository at this point in the history
  • Loading branch information
Anders429 committed Jan 17, 2023
1 parent e50aaed commit 3fb0832
Show file tree
Hide file tree
Showing 8 changed files with 885 additions and 700 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ serde = {version = "1.0.148", default-features = false, features = ["alloc"], op
[dev-dependencies]
claims = "0.7.1"
rustversion = "1.0.9"
serde_assert = "0.2.0"
serde_derive = "1.0.148"
serde_test = "1.0.148"
trybuild = "1.0.72"

[features]
Expand Down
59 changes: 39 additions & 20 deletions src/archetype/identifier/impl_serde.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,20 @@ mod tests {
use super::*;
use crate::Registry;
use alloc::vec;
use serde_test::{
assert_de_tokens_error,
assert_tokens,
use claims::{
assert_err_eq,
assert_ok_eq,
};
use serde::de::{
Error as _,
Unexpected,
};
use serde_assert::{
de::Error,
Deserializer,
Serializer,
Token,
Tokens,
};

macro_rules! create_components {
Expand All @@ -146,52 +156,61 @@ mod tests {
fn serialize_deserialize() {
let identifier = unsafe { Identifier::<Registry>::new(vec![1, 2, 3, 0]) };

assert_tokens(
&identifier,
&[
let serializer = Serializer::builder().build();
assert_ok_eq!(
identifier.serialize(&serializer),
Tokens(vec![
Token::Tuple { len: 4 },
Token::U8(1),
Token::U8(2),
Token::U8(3),
Token::U8(0),
Token::TupleEnd,
],
Token::TupleEnd
])
);
}

#[test]
fn serialize_deserialize_empty() {
let identifier = unsafe { Identifier::<Registry!()>::new(vec![]) };

assert_tokens(&identifier, &[Token::Tuple { len: 0 }, Token::TupleEnd]);
let serializer = Serializer::builder().build();
assert_ok_eq!(
identifier.serialize(&serializer),
Tokens(vec![Token::Tuple { len: 0 }, Token::TupleEnd])
);
}

#[test]
fn deserialize_from_too_many_bits() {
assert_de_tokens_error::<Identifier<Registry>>(
&[
let mut deserializer = Deserializer::builder()
.tokens(Tokens(vec![
Token::Tuple { len: 4 },
Token::U8(1),
Token::U8(2),
Token::U8(3),
Token::U8(255),
Token::TupleEnd,
],
"invalid value: byte array [1, 2, 3, 255], expected 26 bits corresponding to components, with prefixed 0s padded on the last byte to round up to 4 bytes"
);
]))
.self_describing(false)
.build();

assert_err_eq!(Identifier::<Registry>::deserialize(&mut deserializer), Error::invalid_value(Unexpected::Other("byte array [1, 2, 3, 255]"), &"26 bits corresponding to components, with prefixed 0s padded on the last byte to round up to 4 bytes"));
}

#[test]
fn deserialize_from_too_few_bytes() {
assert_de_tokens_error::<Identifier<Registry>>(
&[
Token::Tuple { len: 3 },
let mut deserializer = Deserializer::builder()
.tokens(Tokens(vec![
Token::Tuple { len: 4 },
Token::U8(1),
Token::U8(2),
Token::U8(3),
Token::TupleEnd,
],
"invalid length 3, expected 26 bits corresponding to components, with prefixed 0s padded on the last byte to round up to 4 bytes"
);
]))
.self_describing(false)
.build();

assert_err_eq!(Identifier::<Registry>::deserialize(&mut deserializer), Error::invalid_length(3, &"26 bits corresponding to components, with prefixed 0s padded on the last byte to round up to 4 bytes"));
}
}
Loading

0 comments on commit 3fb0832

Please sign in to comment.