@@ -9,6 +9,80 @@ public void Test1()
99 Assert . True ( SimdUnicode . Ascii . IsAscii ( "absads12323123232131231232132132132312321321312321" ) ) ;
1010 Assert . False ( SimdUnicode . Ascii . IsAscii ( "absaé12323123232131231232132132132312321321312321" ) ) ;
1111 Assert . True ( SimdUnicode . Ascii . SIMDIsAscii ( "absads12323123232131231232132132132312321321312321" ) ) ;
12+ Assert . True ( SimdUnicode . Ascii . SIMDIsAscii ( "12345678" ) ) ;
13+ Assert . True ( SimdUnicode . Ascii . SIMDIsAscii ( "123456789" ) ) ;
14+ Assert . True ( SimdUnicode . Ascii . SIMDIsAscii ( "1234567890123456" ) ) ;
1215 Assert . False ( SimdUnicode . Ascii . SIMDIsAscii ( "absaé12323123232131231232132132132312321321312321" ) ) ;
16+ Assert . False ( SimdUnicode . Ascii . SIMDIsAscii ( "absa12323123232131231232132132132312321321312321é" ) ) ;
17+ }
18+
19+ [ Fact ]
20+ public void HardCodedSequencesTest ( )
21+ {
22+ string [ ] goodsequences = {
23+ "a" ,
24+ "abcde12345" ,
25+ "\x71 " ,
26+ "\x75 \x4c " ,
27+ "\x7f \x4c \x23 \x3c \x3a \x6f \x5d \x44 \x13 \x70 "
28+ } ;
29+
30+ string [ ] badsequences = {
31+ "\xc3 \x28 " ,
32+ "\xa0 \xa1 " ,
33+ "\xe2 \x28 \xa1 " ,
34+ "\xe2 \x82 \x28 " ,
35+ "\xf0 \x28 \x8c \xbc " ,
36+ "\xf0 \x90 \x28 \xbc " ,
37+ "\xf0 \x28 \x8c \x28 " ,
38+ "\xc0 \x9f " ,
39+ "\xf5 \xff \xff \xff " ,
40+ "\xed \xa0 \x81 " ,
41+ "\xf8 \x90 \x80 \x80 \x80 " ,
42+ "123456789012345\xed " ,
43+ "123456789012345\xf1 " ,
44+ "123456789012345\xc2 " ,
45+ "\xC2 \x7F " ,
46+ "\xce " ,
47+ "\xce \xba \xe1 " ,
48+ "\xce \xba \xe1 \xbd " ,
49+ "\xce \xba \xe1 \xbd \xb9 \xcf " ,
50+ "\xce \xba \xe1 \xbd \xb9 \xcf \x83 \xce " ,
51+ "\xce \xba \xe1 \xbd \xb9 \xcf \x83 \xce \xbc \xce " ,
52+ "\xdf " ,
53+ "\xef \xbf " ,
54+ "\x80 " ,
55+ "\x91 \x85 \x95 \x9e " ,
56+ "\x6c \x02 \x8e \x18 " ,
57+ "\x25 \x5b \x6e \x2c \x32 \x2c \x5b \x5b \x33 \x2c \x34 \x2c \x05 \x29 \x2c \x33 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5d \x2c \x35 \x2e \x33 \x2c \x39 \x2e \x33 \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x34 \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x33 \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x34 \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x20 \x01 \x01 \x01 \x01 \x01 \x02 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x23 \x0a \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x7e \x7e \x0a \x0a \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5d \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x33 \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x34 \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x33 \x2c \x37 \x2e \x33 \x2c \x39 \x2e \x34 \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x5d \x01 \x01 \x80 \x01 \x01 \x01 \x79 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 " ,
58+ "[[[[[[[[[[[[[[[\x80 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x010 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 " ,
59+ "\x20 \x0b \x01 \x01 \x01 \x64 \x3a \x64 \x3a \x64 \x3a \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x5b \x30 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x80 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 \x01 " ,
60+ "\x80 " ,
61+ "\x90 " ,
62+ "\xa1 " ,
63+ "\xb2 " ,
64+ "\xc3 " ,
65+ "\xd4 " ,
66+ "\xe5 " ,
67+ "\xf6 " ,
68+ "\xc3 \xb1 " ,
69+ "\xe2 \x82 \xa1 " ,
70+ "\xf0 \x90 \x8c \xbc " ,
71+ "\xc2 \x80 " ,
72+ "\xf0 \x90 \x80 \x80 " ,
73+ "\xee \x80 \x80 " ,
74+ "\xef \xbb \xbf " } ;
75+
76+ foreach ( var sequence in goodsequences )
77+ {
78+ Assert . True ( SimdUnicode . Ascii . IsAscii ( sequence ) , "Expected valid ASCII sequence" ) ;
79+ Assert . True ( SimdUnicode . Ascii . SIMDIsAscii ( sequence ) , "Expected SIMDIsAscii to validate ASCII sequence" ) ;
80+ }
81+
82+ foreach ( var sequence in badsequences )
83+ {
84+ Assert . False ( SimdUnicode . Ascii . IsAscii ( sequence ) , "Expected non-valid ASCII sequence" ) ;
85+ Assert . False ( SimdUnicode . Ascii . SIMDIsAscii ( sequence ) , "Expected SIMDIsAscii to invalidate non-ASCII sequence" ) ;
86+ }
1387 }
1488}
0 commit comments