1 extern crate idna;
2 extern crate unicode_normalization;
3 
4 use idna::uts46;
5 use unicode_normalization::char::is_combining_mark;
6 
7 
_to_ascii(domain: &str) -> Result<String, uts46::Errors>8 fn _to_ascii(domain: &str) -> Result<String, uts46::Errors> {
9     uts46::to_ascii(domain, uts46::Flags {
10         transitional_processing: false,
11         use_std3_ascii_rules: true,
12         verify_dns_length: true,
13     })
14 }
15 
16 #[test]
test_v5()17 fn test_v5() {
18     // IdnaTest:784 蔏。��
19     assert!(is_combining_mark('\u{11C3A}'));
20     assert!(_to_ascii("\u{11C3A}").is_err());
21     assert!(_to_ascii("\u{850f}.\u{11C3A}").is_err());
22     assert!(_to_ascii("\u{850f}\u{ff61}\u{11C3A}").is_err());
23 }
24 
25 #[test]
test_v8_bidi_rules()26 fn test_v8_bidi_rules() {
27     assert_eq!(_to_ascii("abc").unwrap(), "abc");
28     assert_eq!(_to_ascii("123").unwrap(), "123");
29     assert_eq!(_to_ascii("אבּג").unwrap(), "xn--kdb3bdf");
30     assert_eq!(_to_ascii("ابج").unwrap(), "xn--mgbcm");
31     assert_eq!(_to_ascii("abc.ابج").unwrap(), "abc.xn--mgbcm");
32     assert_eq!(_to_ascii("אבּג.ابج").unwrap(), "xn--kdb3bdf.xn--mgbcm");
33 
34     // Bidi domain names cannot start with digits
35     assert!(_to_ascii("0a.\u{05D0}").is_err());
36     assert!(_to_ascii("0à.\u{05D0}").is_err());
37 
38     // Bidi chars may be punycode-encoded
39     assert!(_to_ascii("xn--0ca24w").is_err());
40 }
41