| #![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::<0>::new(); |
| |
| assert_tokens(&string, &[ |
| Token::Str(""), |
| ]); |
| } |
| |
| |
| #[test] |
| fn test_ser_de() { |
| let string = ArrayString::<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<2>>(&[ |
| Token::Str("afd") |
| ], "invalid length 3, expected a string no more than 2 bytes long"); |
| } |
| } |