]> git.proxmox.com Git - rustc.git/blob - src/vendor/arrayvec/tests/serde.rs
New upstream version 1.25.0+dfsg1
[rustc.git] / src / vendor / arrayvec / tests / serde.rs
1 #![cfg(feature = "serde-1")]
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]
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]
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]
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]
54 fn test_ser_de_empty() {
55 let string = ArrayString::<[u8; 0]>::new();
56
57 assert_tokens(&string, &[
58 Token::Str(""),
59 ]);
60 }
61
62
63 #[test]
64 fn test_ser_de() {
65 let string = ArrayString::<[u8; 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]
74 fn test_de_too_large() {
75 assert_de_tokens_error::<ArrayString<[u8; 2]>>(&[
76 Token::Str("afd")
77 ], "invalid length 3, expected a string no more than 2 bytes long");
78 }
79 }