| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- extern crate idna;
- extern crate unicode_normalization;
- use idna::uts46;
- use unicode_normalization::char::is_combining_mark;
- fn _to_ascii(domain: &str) -> Result<String, uts46::Errors> {
- uts46::to_ascii(domain, uts46::Flags {
- transitional_processing: false,
- use_std3_ascii_rules: true,
- verify_dns_length: true,
- })
- }
- #[test]
- fn test_v5() {
- // IdnaTest:784 蔏。𑰺
- assert!(is_combining_mark('\u{11C3A}'));
- assert!(_to_ascii("\u{11C3A}").is_err());
- assert!(_to_ascii("\u{850f}.\u{11C3A}").is_err());
- assert!(_to_ascii("\u{850f}\u{ff61}\u{11C3A}").is_err());
- }
- #[test]
- fn test_v8_bidi_rules() {
- assert_eq!(_to_ascii("abc").unwrap(), "abc");
- assert_eq!(_to_ascii("123").unwrap(), "123");
- assert_eq!(_to_ascii("אבּג").unwrap(), "xn--kdb3bdf");
- assert_eq!(_to_ascii("ابج").unwrap(), "xn--mgbcm");
- assert_eq!(_to_ascii("abc.ابج").unwrap(), "abc.xn--mgbcm");
- assert_eq!(_to_ascii("אבּג.ابج").unwrap(), "xn--kdb3bdf.xn--mgbcm");
- // Bidi domain names cannot start with digits
- assert!(_to_ascii("0a.\u{05D0}").is_err());
- assert!(_to_ascii("0à.\u{05D0}").is_err());
- // Bidi chars may be punycode-encoded
- assert!(_to_ascii("xn--0ca24w").is_err());
- }
|