1
1
// Integration tests from https://tools.ietf.org/html/draft-josefsson-idn-test-vectors-00
2
2
extern crate stringprep;
3
3
4
- use stringprep:: { Error , nameprep } ;
4
+ use stringprep:: { nameprep , Error } ;
5
5
6
6
fn assert_prohibited_character < T > ( result : Result < T , Error > ) {
7
7
assert ! ( result. is_err( ) ) ;
@@ -14,25 +14,47 @@ fn assert_prohibited_bidirectional_text<T>(result: Result<T, Error>) {
14
14
// Additional examples from http://josefsson.org/idn.php
15
15
#[ test]
16
16
fn test_nameprep ( ) {
17
- assert_eq ! ( "安室奈美恵-with-super-monkeys" , nameprep( "安室奈美恵-with-SUPER-MONKEYS" ) . unwrap( ) ) ;
18
- assert_eq ! ( "미술" , nameprep( "미술" ) . unwrap( ) ) ; // Korean
19
- assert_eq ! ( "ليهمابتكلموشعربي؟" , nameprep( "ليهمابتكلموشعربي؟" ) . unwrap( ) ) ; // Egyptian
20
- assert_eq ! ( "他们为什么不说中文" , nameprep( "他们为什么不说中文" ) . unwrap( ) ) ; // Chinese
21
- assert_eq ! ( "למההםפשוטלאמדבריםעברית" , nameprep( "למההםפשוטלאמדבריםעברית" ) . unwrap( ) ) ; // Hebrew
22
- assert_eq ! ( "почемужеонинеговорятпорусски" , nameprep( "почемужеонинеговорятпорусски" ) . unwrap( ) ) ; // Russian
23
- assert_eq ! ( "tạisaohọkhôngthểchỉnóitiếngviệt" , nameprep( "TạisaohọkhôngthểchỉnóitiếngViệt" ) . unwrap( ) ) ; // Vietnamese
24
- assert_eq ! ( "ひとつ屋根の下2" , nameprep( "ひとつ屋根の下2" ) . unwrap( ) ) ; // Japanese
25
- assert_eq ! ( "pročprostěnemluvíčesky" , nameprep( "Pročprostěnemluvíčesky" ) . unwrap( ) ) ; // Czech
26
- assert_eq ! ( "यहलोगहिन्दीक्योंनहींबोलसकतेहैं" , nameprep( "यहलोगहिन्दीक्योंनहींबोलसकतेहैं" ) . unwrap( ) ) ; // Hindi
27
- assert_eq ! ( "ພາສາລາວ" , nameprep( "ພາສາລາວ" ) . unwrap( ) ) ; // Lao
28
- assert_eq ! ( "bonġusaħħa" , nameprep( "bonġusaħħa" ) . unwrap( ) ) ; // Maltese
29
- assert_eq ! ( "ελληνικά" , nameprep( "ελληνικά" ) . unwrap( ) ) ; // Greek
17
+ assert_eq ! (
18
+ "安室奈美恵-with-super-monkeys" ,
19
+ nameprep( "安室奈美恵-with-SUPER-MONKEYS" ) . unwrap( )
20
+ ) ;
21
+ assert_eq ! ( "미술" , nameprep( "미술" ) . unwrap( ) ) ; // Korean
22
+ assert_eq ! ( "ليهمابتكلموشعربي؟" , nameprep( "ليهمابتكلموشعربي؟" ) . unwrap( ) ) ; // Egyptian
23
+ assert_eq ! (
24
+ "他们为什么不说中文" ,
25
+ nameprep( "他们为什么不说中文" ) . unwrap( )
26
+ ) ; // Chinese
27
+ assert_eq ! (
28
+ "למההםפשוטלאמדבריםעברית" ,
29
+ nameprep( "למההםפשוטלאמדבריםעברית" ) . unwrap( )
30
+ ) ; // Hebrew
31
+ assert_eq ! (
32
+ "почемужеонинеговорятпорусски" ,
33
+ nameprep( "почемужеонинеговорятпорусски" ) . unwrap( )
34
+ ) ; // Russian
35
+ assert_eq ! (
36
+ "tạisaohọkhôngthểchỉnóitiếngviệt" ,
37
+ nameprep( "TạisaohọkhôngthểchỉnóitiếngViệt" ) . unwrap( )
38
+ ) ; // Vietnamese
39
+ assert_eq ! ( "ひとつ屋根の下2" , nameprep( "ひとつ屋根の下2" ) . unwrap( ) ) ; // Japanese
40
+ assert_eq ! (
41
+ "pročprostěnemluvíčesky" ,
42
+ nameprep( "Pročprostěnemluvíčesky" ) . unwrap( )
43
+ ) ; // Czech
44
+ assert_eq ! (
45
+ "यहलोगहिन्दीक्योंनहींबोलसकतेहैं" ,
46
+ nameprep( "यहलोगहिन्दीक्योंनहींबोलसकतेहैं" ) . unwrap( )
47
+ ) ; // Hindi
48
+ assert_eq ! ( "ພາສາລາວ" , nameprep( "ພາສາລາວ" ) . unwrap( ) ) ; // Lao
49
+ assert_eq ! ( "bonġusaħħa" , nameprep( "bonġusaħħa" ) . unwrap( ) ) ; // Maltese
50
+ assert_eq ! ( "ελληνικά" , nameprep( "ελληνικά" ) . unwrap( ) ) ; // Greek
30
51
}
31
52
32
53
// 4.1 Map to nothing
33
54
#[ test]
34
55
fn should_map_to_nothing ( ) {
35
- let input = "foo\u{00ad} \u{034f} \u{1806} \u{180b} bar\u{200b} \u{2060} baz\u{fe00} \u{fe08} \u{fe0f} \u{feff} " ;
56
+ let input =
57
+ "foo\u{00ad} \u{034f} \u{1806} \u{180b} bar\u{200b} \u{2060} baz\u{fe00} \u{fe08} \u{fe0f} \u{feff} " ;
36
58
assert_eq ! ( "foobarbaz" , nameprep( input) . unwrap( ) ) ;
37
59
}
38
60
@@ -264,7 +286,10 @@ fn should_prohibit_mixed_randalcat() {
264
286
// 4.42 Bidi: RandALCat character U+0627 U+0031 U+0628
265
287
#[ test]
266
288
fn should_permit_randalcat2 ( ) {
267
- assert_eq ! ( "\u{0627} \u{0031} \u{0628} " , nameprep( "\u{0627} \u{0031} \u{0628} " ) . unwrap( ) ) ;
289
+ assert_eq ! (
290
+ "\u{0627} \u{0031} \u{0628} " ,
291
+ nameprep( "\u{0627} \u{0031} \u{0628} " ) . unwrap( )
292
+ ) ;
268
293
}
269
294
270
295
// 4.43 Unassigned code point U+E0002
0 commit comments