ascii_domain

Domains whose labels are only ASCII.
git clone https://git.philomathiclife.com/repos/ascii_domain
Log | Files | Refs | README

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 }