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