Skip to content

Commit e903fbd

Browse files
committed
Add tests for ByteArray
1 parent 82e8a3c commit e903fbd

File tree

4 files changed

+60
-4
lines changed

4 files changed

+60
-4
lines changed

src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ pub use crate::bytebuf::ByteBuf;
8181
///
8282
/// #[serde(with = "serde_bytes")]
8383
/// byte_buf: Vec<u8>,
84+
///
85+
/// #[serde(with = "serde_bytes")]
86+
/// byte_array: [u8; 314],
8487
/// }
8588
/// ```
8689
pub fn serialize<T, S>(bytes: &T, serializer: S) -> Result<S::Ok, S::Error>
@@ -106,6 +109,9 @@ where
106109
/// struct Packet {
107110
/// #[serde(with = "serde_bytes")]
108111
/// payload: Vec<u8>,
112+
///
113+
/// #[serde(with = "serde_bytes")]
114+
/// byte_array: [u8; 314],
109115
/// }
110116
/// ```
111117
#[cfg(any(feature = "std", feature = "alloc"))]

tests/test_derive.rs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![allow(clippy::derive_partial_eq_without_eq, clippy::ref_option_ref)]
22

3-
use serde_bytes::{ByteBuf, Bytes};
3+
use serde_bytes::{ByteArray, ByteBuf, Bytes};
44
use serde_derive::{Deserialize, Serialize};
55
use serde_test::{assert_tokens, Token};
66
use std::borrow::Cow;
@@ -10,12 +10,18 @@ struct Test<'a> {
1010
#[serde(with = "serde_bytes")]
1111
slice: &'a [u8],
1212

13+
#[serde(with = "serde_bytes")]
14+
array: [u8; 314],
15+
1316
#[serde(with = "serde_bytes")]
1417
vec: Vec<u8>,
1518

1619
#[serde(with = "serde_bytes")]
1720
bytes: &'a Bytes,
1821

22+
#[serde(with = "serde_bytes")]
23+
byte_array: ByteArray<314>,
24+
1925
#[serde(with = "serde_bytes")]
2026
byte_buf: ByteBuf,
2127

@@ -37,6 +43,12 @@ struct Test<'a> {
3743
#[serde(with = "serde_bytes")]
3844
opt_vec: Option<Vec<u8>>,
3945

46+
#[serde(with = "serde_bytes")]
47+
opt_array: Option<[u8; 314]>,
48+
49+
#[serde(with = "serde_bytes")]
50+
opt_bytearray: Option<ByteArray<314>>,
51+
4052
#[serde(with = "serde_bytes")]
4153
opt_cow_slice: Option<Cow<'a, [u8]>>,
4254
}
@@ -51,15 +63,19 @@ struct Dst {
5163
fn test() {
5264
let test = Test {
5365
slice: b"...",
66+
array: [0; 314],
5467
vec: b"...".to_vec(),
5568
bytes: Bytes::new(b"..."),
69+
byte_array: ByteArray::new([0; 314]),
5670
byte_buf: ByteBuf::from(b"...".as_ref()),
5771
cow_slice: Cow::Borrowed(b"..."),
5872
cow_bytes: Cow::Borrowed(Bytes::new(b"...")),
5973
boxed_slice: b"...".to_vec().into_boxed_slice(),
6074
boxed_bytes: ByteBuf::from(b"...".as_ref()).into_boxed_bytes(),
6175
opt_slice: Some(b"..."),
6276
opt_vec: Some(b"...".to_vec()),
77+
opt_array: Some([0; 314]),
78+
opt_bytearray: Some(ByteArray::new([0; 314])),
6379
opt_cow_slice: Some(Cow::Borrowed(b"...")),
6480
};
6581

@@ -68,14 +84,18 @@ fn test() {
6884
&[
6985
Token::Struct {
7086
name: "Test",
71-
len: 11,
87+
len: 15,
7288
},
7389
Token::Str("slice"),
7490
Token::BorrowedBytes(b"..."),
91+
Token::Str("array"),
92+
Token::Bytes(&[0; 314]),
7593
Token::Str("vec"),
7694
Token::Bytes(b"..."),
7795
Token::Str("bytes"),
7896
Token::BorrowedBytes(b"..."),
97+
Token::Str("byte_array"),
98+
Token::Bytes(&[0; 314]),
7999
Token::Str("byte_buf"),
80100
Token::Bytes(b"..."),
81101
Token::Str("cow_slice"),
@@ -92,6 +112,12 @@ fn test() {
92112
Token::Str("opt_vec"),
93113
Token::Some,
94114
Token::Bytes(b"..."),
115+
Token::Str("opt_array"),
116+
Token::Some,
117+
Token::Bytes(&[0; 314]),
118+
Token::Str("opt_bytearray"),
119+
Token::Some,
120+
Token::Bytes(&[0; 314]),
95121
Token::Str("opt_cow_slice"),
96122
Token::Some,
97123
Token::BorrowedBytes(b"..."),

tests/test_partialeq.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![allow(clippy::needless_pass_by_value)]
22

3-
use serde_bytes::{ByteBuf, Bytes};
3+
use serde_bytes::{ByteArray, ByteBuf, Bytes};
44

55
fn _bytes_eq_slice(bytes: &Bytes, slice: &[u8]) -> bool {
66
bytes == slice
@@ -13,3 +13,11 @@ fn _bytebuf_eq_vec(bytebuf: ByteBuf, vec: Vec<u8>) -> bool {
1313
fn _bytes_eq_bytestring(bytes: &Bytes) -> bool {
1414
bytes == b"..."
1515
}
16+
17+
fn _bytearray_eq_bytestring<const N: usize>(bytes: &ByteArray<N>) -> bool {
18+
bytes == &[0u8; N]
19+
}
20+
21+
fn _bytearray_eq_bytearray<const N: usize>(bytes: &ByteArray<N>, other: &ByteArray<N>) -> bool {
22+
bytes == other
23+
}

tests/test_serde.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use serde_bytes::{ByteBuf, Bytes};
1+
use serde_bytes::{ByteArray, ByteBuf, Bytes};
22
use serde_test::{assert_de_tokens, assert_ser_tokens, assert_tokens, Token};
33

44
#[test]
@@ -57,3 +57,19 @@ fn test_byte_buf() {
5757
],
5858
);
5959
}
60+
61+
#[test]
62+
fn test_bytearray() {
63+
let empty = ByteArray::new([]);
64+
assert_tokens(&empty, &[Token::BorrowedBytes(b"")]);
65+
assert_ser_tokens(&empty, &[Token::Bytes(b"")]);
66+
assert_ser_tokens(&empty, &[Token::ByteBuf(b"")]);
67+
assert_de_tokens(&empty, &[Token::BorrowedStr("")]);
68+
69+
let buf = [65, 66, 67];
70+
let bytes = ByteArray::new(buf);
71+
assert_tokens(&bytes, &[Token::BorrowedBytes(b"ABC")]);
72+
assert_ser_tokens(&bytes, &[Token::Bytes(b"ABC")]);
73+
assert_ser_tokens(&bytes, &[Token::ByteBuf(b"ABC")]);
74+
assert_de_tokens(&bytes, &[Token::BorrowedStr("ABC")]);
75+
}

0 commit comments

Comments
 (0)