Skip to content

Commit

Permalink
Add more Serde test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
daxpedda committed Aug 18, 2024
1 parent c12b22a commit 9387306
Showing 1 changed file with 42 additions and 7 deletions.
49 changes: 42 additions & 7 deletions tests/serde.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ test! {
Token::Seq { len: Some(2) },
Token::U64(0),
Token::U32(0),
Token::SeqEnd
Token::SeqEnd,
],
);
}
Expand All @@ -69,7 +69,7 @@ test! {
Token::U64(0),
Token::Str("nanos_since_epoch"),
Token::U32(0),
Token::MapEnd
Token::MapEnd,
],
);

Expand All @@ -81,7 +81,7 @@ test! {
Token::U64(0),
Token::Bytes(b"nanos_since_epoch"),
Token::U32(0),
Token::MapEnd
Token::MapEnd,
],
);
}
Expand All @@ -91,26 +91,43 @@ test! {
serde_test::assert_de_tokens_error::<SystemTime>(
&[
Token::Seq { len: Some(0) },
Token::SeqEnd
Token::SeqEnd,
],
"invalid length 0, expected struct SystemTime",
);

serde_test::assert_de_tokens_error::<SystemTime>(
&[
Token::Seq { len: Some(1) },
Token::Unit,
],
"invalid type: unit value, expected u64",
);

serde_test::assert_de_tokens_error::<SystemTime>(
&[
Token::Seq { len: Some(1) },
Token::U64(0),
Token::SeqEnd
Token::SeqEnd,
],
"invalid length 1, expected struct SystemTime",
);

serde_test::assert_de_tokens_error::<SystemTime>(
&[
Token::Seq { len: Some(2) },
Token::U64(0),
Token::Unit,
],
"invalid type: unit value, expected u32",
);

serde_test::assert_de_tokens_error::<SystemTime>(
&[
Token::Seq { len: Some(2) },
Token::U64(u64::MAX),
Token::U32(u32::MAX),
Token::SeqEnd
Token::SeqEnd,
],
"overflow deserializing SystemTime epoch offset",
);
Expand Down Expand Up @@ -209,9 +226,27 @@ test! {
Token::U64(u64::MAX),
Token::Str("nanos_since_epoch"),
Token::U32(u32::MAX),
Token::MapEnd
Token::MapEnd,
],
"overflow deserializing SystemTime epoch offset",
);
}

/// Serializing failures.
async fn failure_serialize() {
let mut serialized = [0; 0];
let error = serde_json::to_writer(serialized.as_mut(), &SystemTime::UNIX_EPOCH).unwrap_err();

assert_eq!(error.to_string(), "failed to write whole buffer");

let mut serialized = [0; 1];
let error = serde_json::to_writer(serialized.as_mut(), &SystemTime::UNIX_EPOCH).unwrap_err();

assert_eq!(error.to_string(), "failed to write whole buffer");

let mut serialized = [0; 21];
let error = serde_json::to_writer(serialized.as_mut(), &SystemTime::UNIX_EPOCH).unwrap_err();

assert_eq!(error.to_string(), "failed to write whole buffer");
}
}

0 comments on commit 9387306

Please sign in to comment.