1 #![cfg(feature = "serde")]
2 extern crate arrayvec;
3 extern crate serde_test;
4 
5 mod array_vec {
6     use arrayvec::ArrayVec;
7 
8     use serde_test::{Token, assert_tokens, assert_de_tokens_error};
9 
10     #[test]
test_ser_de_empty()11     fn test_ser_de_empty() {
12         let vec = ArrayVec::<u32, 0>::new();
13 
14         assert_tokens(&vec, &[
15             Token::Seq { len: Some(0) },
16             Token::SeqEnd,
17         ]);
18     }
19 
20 
21     #[test]
test_ser_de()22     fn test_ser_de() {
23         let mut vec = ArrayVec::<u32, 3>::new();
24         vec.push(20);
25         vec.push(55);
26         vec.push(123);
27 
28         assert_tokens(&vec, &[
29             Token::Seq { len: Some(3) },
30             Token::U32(20),
31             Token::U32(55),
32             Token::U32(123),
33             Token::SeqEnd,
34         ]);
35     }
36 
37     #[test]
test_de_too_large()38     fn test_de_too_large() {
39         assert_de_tokens_error::<ArrayVec<u32, 2>>(&[
40             Token::Seq { len: Some(3) },
41             Token::U32(13),
42             Token::U32(42),
43             Token::U32(68),
44         ], "invalid length 3, expected an array with no more than 2 items");
45     }
46 }
47 
48 mod array_string {
49     use arrayvec::ArrayString;
50 
51     use serde_test::{Token, assert_tokens, assert_de_tokens_error};
52 
53     #[test]
test_ser_de_empty()54     fn test_ser_de_empty() {
55         let string = ArrayString::<0>::new();
56 
57         assert_tokens(&string, &[
58             Token::Str(""),
59         ]);
60     }
61 
62 
63     #[test]
test_ser_de()64     fn test_ser_de() {
65         let string = ArrayString::<9>::from("1234 abcd")
66             .expect("expected exact specified capacity to be enough");
67 
68         assert_tokens(&string, &[
69             Token::Str("1234 abcd"),
70         ]);
71     }
72 
73     #[test]
test_de_too_large()74     fn test_de_too_large() {
75         assert_de_tokens_error::<ArrayString<2>>(&[
76             Token::Str("afd")
77         ], "invalid length 3, expected a string no more than 2 bytes long");
78     }
79 }
80