tests.rs (1589B)
1 extern crate alloc; 2 use crate::{ 3 char_set::ASCII_HYPHEN_DIGITS_LETTERS, 4 dom::{Domain, Rfc1123Domain}, 5 }; 6 use alloc::string::String; 7 #[test] 8 fn serde() { 9 assert!( 10 serde_json::from_str::<Domain<&str>>(r#""example.com""#) 11 .is_ok_and(|dom| dom.into_iter().count() == 2) 12 ); 13 assert!( 14 serde_json::from_str::<Domain<String>>(r#""c\"om""#) 15 .is_ok_and(|dom| dom.into_iter().count() == 1) 16 ); 17 // Can't borrow since input needs to be de-escaped. 18 assert!( 19 serde_json::from_str::<Domain<&str>>(r#""c\"om""#) 20 .is_err_and(|err| err.is_data() && err.column() == 7) 21 ); 22 assert!( 23 Domain::try_from_bytes("example.com", &ASCII_HYPHEN_DIGITS_LETTERS).is_ok_and(|dom| { 24 serde_json::to_string(&dom).is_ok_and(|output| output == r#""example.com""#) 25 }) 26 ); 27 assert!( 28 Domain::try_from_bytes(b"example.com", &ASCII_HYPHEN_DIGITS_LETTERS).is_ok_and(|dom| { 29 serde_json::to_string(&dom).is_ok_and(|output| output == r#""example.com""#) 30 }) 31 ); 32 assert!( 33 serde_json::from_str::<Rfc1123Domain<&str>>(r#""example.com""#) 34 .is_ok_and(|dom| dom.into_iter().count() == 2) 35 ); 36 assert!( 37 serde_json::from_str::<Rfc1123Domain<String>>(r#""c\u006fm""#) 38 .is_ok_and(|dom| dom.tld().as_str() == "com") 39 ); 40 // Can't borrow since input needs to be de-escaped. 41 assert!( 42 serde_json::from_str::<Rfc1123Domain<&str>>(r#""c\u006fm""#) 43 .is_err_and(|err| err.is_data() && err.column() == 10) 44 ); 45 }