diff options
Diffstat (limited to 'third_party/rust/serde_bytes/tests/test_derive.rs')
-rw-r--r-- | third_party/rust/serde_bytes/tests/test_derive.rs | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/third_party/rust/serde_bytes/tests/test_derive.rs b/third_party/rust/serde_bytes/tests/test_derive.rs new file mode 100644 index 0000000000..c7e97f1ec4 --- /dev/null +++ b/third_party/rust/serde_bytes/tests/test_derive.rs @@ -0,0 +1,101 @@ +#![allow(clippy::derive_partial_eq_without_eq, clippy::ref_option_ref)] + +use serde_bytes::{ByteBuf, Bytes}; +use serde_derive::{Deserialize, Serialize}; +use serde_test::{assert_tokens, Token}; +use std::borrow::Cow; + +#[derive(Serialize, Deserialize, PartialEq, Debug)] +struct Test<'a> { + #[serde(with = "serde_bytes")] + slice: &'a [u8], + + #[serde(with = "serde_bytes")] + vec: Vec<u8>, + + #[serde(with = "serde_bytes")] + bytes: &'a Bytes, + + #[serde(with = "serde_bytes")] + byte_buf: ByteBuf, + + #[serde(with = "serde_bytes")] + cow_slice: Cow<'a, [u8]>, + + #[serde(with = "serde_bytes")] + cow_bytes: Cow<'a, Bytes>, + + #[serde(with = "serde_bytes")] + boxed_slice: Box<[u8]>, + + #[serde(with = "serde_bytes")] + boxed_bytes: Box<Bytes>, + + #[serde(with = "serde_bytes")] + opt_slice: Option<&'a [u8]>, + + #[serde(with = "serde_bytes")] + opt_vec: Option<Vec<u8>>, + + #[serde(with = "serde_bytes")] + opt_cow_slice: Option<Cow<'a, [u8]>>, +} + +#[derive(Serialize)] +struct Dst { + #[serde(with = "serde_bytes")] + bytes: [u8], +} + +#[test] +fn test() { + let test = Test { + slice: b"...", + vec: b"...".to_vec(), + bytes: Bytes::new(b"..."), + byte_buf: ByteBuf::from(b"...".as_ref()), + cow_slice: Cow::Borrowed(b"..."), + cow_bytes: Cow::Borrowed(Bytes::new(b"...")), + boxed_slice: b"...".to_vec().into_boxed_slice(), + boxed_bytes: ByteBuf::from(b"...".as_ref()).into_boxed_bytes(), + opt_slice: Some(b"..."), + opt_vec: Some(b"...".to_vec()), + opt_cow_slice: Some(Cow::Borrowed(b"...")), + }; + + assert_tokens( + &test, + &[ + Token::Struct { + name: "Test", + len: 11, + }, + Token::Str("slice"), + Token::BorrowedBytes(b"..."), + Token::Str("vec"), + Token::Bytes(b"..."), + Token::Str("bytes"), + Token::BorrowedBytes(b"..."), + Token::Str("byte_buf"), + Token::Bytes(b"..."), + Token::Str("cow_slice"), + Token::BorrowedBytes(b"..."), + Token::Str("cow_bytes"), + Token::BorrowedBytes(b"..."), + Token::Str("boxed_slice"), + Token::Bytes(b"..."), + Token::Str("boxed_bytes"), + Token::Bytes(b"..."), + Token::Str("opt_slice"), + Token::Some, + Token::BorrowedBytes(b"..."), + Token::Str("opt_vec"), + Token::Some, + Token::Bytes(b"..."), + Token::Str("opt_cow_slice"), + Token::Some, + Token::BorrowedBytes(b"..."), + Token::StructEnd, + ], + ); +} |