1
1
namespace tests ;
2
2
using System . Text ;
3
+ using SimdUnicode ;
3
4
4
5
//TODO (Nick Nuon): Test UTF8 Generator works correctly
5
6
@@ -113,7 +114,7 @@ public void Test_random_ASCII_sequences_of_varying_lengths()
113
114
}
114
115
115
116
// Print the validation results
116
- Console . WriteLine ( $ "For { length } -byte sequences, { validSequencesCount * 100.0 / NUM_TRIALS } % were valid ASCII.") ;
117
+ // Console.WriteLine($"For {length}-byte sequences, {validSequencesCount * 100.0 / NUM_TRIALS}% were valid ASCII.");
117
118
118
119
// Assertion or check to ensure all sequences were valid ASCII
119
120
if ( validSequencesCount != NUM_TRIALS )
@@ -123,5 +124,65 @@ public void Test_random_ASCII_sequences_of_varying_lengths()
123
124
}
124
125
}
125
126
127
+
128
+ [ Fact ]
129
+ // This mimics the no_error_ASCII test
130
+ public void TestNoErrorASCII ( )
131
+ {
132
+ const int NUM_TRIALS = 1000 ;
133
+ const int LENGTH = 512 ;
134
+ RandomUtf8 utf8Generator = new RandomUtf8 ( 0 , 100 , 0 , 0 , 0 ) ; // Only ASCII/one-bytes
135
+
136
+ for ( int trial = 0 ; trial < NUM_TRIALS ; trial ++ )
137
+ {
138
+ byte [ ] ascii = utf8Generator . Generate ( LENGTH ) ;
139
+
140
+ unsafe
141
+ {
142
+ fixed ( byte * pAscii = ascii )
143
+ {
144
+ nuint result = Ascii . GetIndexOfFirstNonAsciiByte ( pAscii , ( nuint ) ascii . Length ) ;
145
+ if ( result != ( nuint ) ascii . Length )
146
+ {
147
+ throw new Exception ( $ "Unexpected non-ASCII character found at index { result } ") ;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+
154
+ [ Fact ]
155
+ // This mimics the error_ASCII test
156
+ public void TestErrorASCII ( )
157
+ {
158
+ const int NUM_TRIALS = 1000 ;
159
+ const int LENGTH = 512 ;
160
+ RandomUtf8 utf8Generator = new RandomUtf8 ( 0 , 100 , 0 , 0 , 0 ) ; // Only ASCII/one-bytes
161
+
162
+ for ( int trial = 0 ; trial < NUM_TRIALS ; trial ++ )
163
+ {
164
+ byte [ ] ascii = utf8Generator . Generate ( LENGTH ) ;
165
+
166
+ for ( int i = 0 ; i < ascii . Length ; i ++ )
167
+ {
168
+ ascii [ i ] += 0b10000000 ;
169
+
170
+ unsafe
171
+ {
172
+ fixed ( byte * pAscii = ascii )
173
+ {
174
+ nuint result = Ascii . GetIndexOfFirstNonAsciiByte ( pAscii , ( nuint ) ascii . Length ) ;
175
+ if ( result != ( nuint ) i )
176
+ {
177
+ throw new Exception ( $ "Expected non-ASCII character at index { i } , but found at index { result } ") ;
178
+ }
179
+ }
180
+ }
181
+
182
+ ascii [ i ] -= 0b10000000 ;
183
+ }
184
+ }
185
+ }
186
+
126
187
127
188
}
0 commit comments