summaryrefslogtreecommitdiff
path: root/vendor/arrayvec/tests/serde.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/arrayvec/tests/serde.rs')
-rw-r--r--vendor/arrayvec/tests/serde.rs79
1 files changed, 79 insertions, 0 deletions
diff --git a/vendor/arrayvec/tests/serde.rs b/vendor/arrayvec/tests/serde.rs
new file mode 100644
index 00000000..3876d2a7
--- /dev/null
+++ b/vendor/arrayvec/tests/serde.rs
@@ -0,0 +1,79 @@
+#![cfg(feature = "serde")]
+extern crate arrayvec;
+extern crate serde_test;
+
+mod array_vec {
+ use arrayvec::ArrayVec;
+
+ use serde_test::{Token, assert_tokens, assert_de_tokens_error};
+
+ #[test]
+ fn test_ser_de_empty() {
+ let vec = ArrayVec::<[u32; 0]>::new();
+
+ assert_tokens(&vec, &[
+ Token::Seq { len: Some(0) },
+ Token::SeqEnd,
+ ]);
+ }
+
+
+ #[test]
+ fn test_ser_de() {
+ let mut vec = ArrayVec::<[u32; 3]>::new();
+ vec.push(20);
+ vec.push(55);
+ vec.push(123);
+
+ assert_tokens(&vec, &[
+ Token::Seq { len: Some(3) },
+ Token::U32(20),
+ Token::U32(55),
+ Token::U32(123),
+ Token::SeqEnd,
+ ]);
+ }
+
+ #[test]
+ fn test_de_too_large() {
+ assert_de_tokens_error::<ArrayVec<[u32; 2]>>(&[
+ Token::Seq { len: Some(3) },
+ Token::U32(13),
+ Token::U32(42),
+ Token::U32(68),
+ ], "invalid length 3, expected an array with no more than 2 items");
+ }
+}
+
+mod array_string {
+ use arrayvec::ArrayString;
+
+ use serde_test::{Token, assert_tokens, assert_de_tokens_error};
+
+ #[test]
+ fn test_ser_de_empty() {
+ let string = ArrayString::<[u8; 0]>::new();
+
+ assert_tokens(&string, &[
+ Token::Str(""),
+ ]);
+ }
+
+
+ #[test]
+ fn test_ser_de() {
+ let string = ArrayString::<[u8; 9]>::from("1234 abcd")
+ .expect("expected exact specified capacity to be enough");
+
+ assert_tokens(&string, &[
+ Token::Str("1234 abcd"),
+ ]);
+ }
+
+ #[test]
+ fn test_de_too_large() {
+ assert_de_tokens_error::<ArrayString<[u8; 2]>>(&[
+ Token::Str("afd")
+ ], "invalid length 3, expected a string no more than 2 bytes long");
+ }
+}