Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Side by Side Diff: tests/lib_strong/convert/chunked_conversion_utf82_test.dart

Issue 2989993002: fix unsound cast failures in tests (Closed)
Patch Set: fix Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library utf8_test; 5 library utf8_test;
6 6
7 import "package:expect/expect.dart"; 7 import "package:expect/expect.dart";
8 import 'dart:convert'; 8 import 'dart:convert';
9 9
10 String decode(List<int> bytes, int chunkSize) { 10 String decode(List<int> bytes, int chunkSize) {
11 StringBuffer buffer = new StringBuffer(); 11 StringBuffer buffer = new StringBuffer();
12 var stringSink = new StringConversionSink.fromStringSink(buffer); 12 var stringSink = new StringConversionSink.fromStringSink(buffer);
13 var byteSink = new Utf8Decoder().startChunkedConversion(stringSink); 13 var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
14 int i = 0; 14 int i = 0;
15 while (i < bytes.length) { 15 while (i < bytes.length) {
16 List nextChunk = []; 16 var nextChunk = <int>[];
17 for (int j = 0; j < chunkSize; j++) { 17 for (int j = 0; j < chunkSize; j++) {
18 if (i < bytes.length) { 18 if (i < bytes.length) {
19 nextChunk.add(bytes[i]); 19 nextChunk.add(bytes[i]);
20 i++; 20 i++;
21 } 21 }
22 } 22 }
23 byteSink.add(nextChunk); 23 byteSink.add(nextChunk);
24 } 24 }
25 byteSink.close(); 25 byteSink.close();
26 return buffer.toString(); 26 return buffer.toString();
27 } 27 }
28 28
29 String decodeAllowMalformed(List<int> bytes, int chunkSize) { 29 String decodeAllowMalformed(List<int> bytes, int chunkSize) {
30 StringBuffer buffer = new StringBuffer(); 30 StringBuffer buffer = new StringBuffer();
31 var stringSink = new StringConversionSink.fromStringSink(buffer); 31 var stringSink = new StringConversionSink.fromStringSink(buffer);
32 var decoder = new Utf8Decoder(allowMalformed: true); 32 var decoder = new Utf8Decoder(allowMalformed: true);
33 var byteSink = decoder.startChunkedConversion(stringSink); 33 var byteSink = decoder.startChunkedConversion(stringSink);
34 int i = 0; 34 int i = 0;
35 while (i < bytes.length) { 35 while (i < bytes.length) {
36 List nextChunk = []; 36 var nextChunk = <int>[];
37 for (int j = 0; j < chunkSize; j++) { 37 for (int j = 0; j < chunkSize; j++) {
38 if (i < bytes.length) { 38 if (i < bytes.length) {
39 nextChunk.add(bytes[i]); 39 nextChunk.add(bytes[i]);
40 i++; 40 i++;
41 } 41 }
42 } 42 }
43 byteSink.add(nextChunk); 43 byteSink.add(nextChunk);
44 } 44 }
45 byteSink.close(); 45 byteSink.close();
46 return buffer.toString(); 46 return buffer.toString();
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 ] 219 ]
220 ]; 220 ];
221 221
222 main() { 222 main() {
223 var allTests = TESTS.expand((test) { 223 var allTests = TESTS.expand((test) {
224 // Pairs of test and expected string output when malformed strings are 224 // Pairs of test and expected string output when malformed strings are
225 // allowed. Replacement character: U+FFFD 225 // allowed. Replacement character: U+FFFD
226 return [ 226 return [
227 [test, "\u{FFFD}"], 227 [test, "\u{FFFD}"],
228 [ 228 [
229 new List.from([0x61])..addAll(test), 229 new List<int>.from([0x61])..addAll(test),
230 "a\u{FFFD}" 230 "a\u{FFFD}"
231 ], 231 ],
232 [ 232 [
233 new List.from([0x61]) 233 new List<int>.from([0x61])
234 ..addAll(test) 234 ..addAll(test)
235 ..add(0x61), 235 ..add(0x61),
236 "a\u{FFFD}a" 236 "a\u{FFFD}a"
237 ], 237 ],
238 [new List.from(test)..add(0x61), "\u{FFFD}a"], 238 [new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
239 [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"], 239 [new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
240 [ 240 [
241 new List.from(test) 241 new List<int>.from(test)
242 ..add(0x61) 242 ..add(0x61)
243 ..addAll(test), 243 ..addAll(test),
244 "\u{FFFD}a\u{FFFD}" 244 "\u{FFFD}a\u{FFFD}"
245 ], 245 ],
246 [ 246 [
247 new List.from([0xc3, 0xa5])..addAll(test), 247 new List<int>.from([0xc3, 0xa5])..addAll(test),
248 "å\u{FFFD}" 248 "å\u{FFFD}"
249 ], 249 ],
250 [ 250 [
251 new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]), 251 new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
252 "å\u{FFFD}å" 252 "å\u{FFFD}å"
253 ], 253 ],
254 [ 254 [
255 new List.from(test)..addAll([0xc3, 0xa5]), 255 new List<int>.from(test)..addAll([0xc3, 0xa5]),
256 "\u{FFFD}å" 256 "\u{FFFD}å"
257 ], 257 ],
258 [ 258 [
259 new List.from(test)..addAll([0xc3, 0xa5])..addAll(test), 259 new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
260 "\u{FFFD}å\u{FFFD}" 260 "\u{FFFD}å\u{FFFD}"
261 ] 261 ]
262 ]; 262 ];
263 }); 263 });
264 264
265 var allTests2 = TESTS2.map((test) { 265 var allTests2 = TESTS2.map((test) {
266 // Pairs of test and expected string output when malformed strings are 266 // Pairs of test and expected string output when malformed strings are
267 // allowed. Replacement character: U+FFFD 267 // allowed. Replacement character: U+FFFD
268 String expected = (test[1] as String).replaceAll("X", "\u{FFFD}"); 268 String expected = (test[1] as String).replaceAll("X", "\u{FFFD}");
269 return [test[0], expected]; 269 return [test[0], expected];
270 }); 270 });
271 271
272 for (var test in []..addAll(allTests)..addAll(allTests2)) { 272 for (var test in []..addAll(allTests)..addAll(allTests2)) {
273 List<int> bytes = test[0]; 273 List<int> bytes = test[0];
274 Expect.throws(() => decode(bytes, 1), (e) => e is FormatException); 274 Expect.throws(() => decode(bytes, 1), (e) => e is FormatException);
275 Expect.throws(() => decode(bytes, 2), (e) => e is FormatException); 275 Expect.throws(() => decode(bytes, 2), (e) => e is FormatException);
276 Expect.throws(() => decode(bytes, 3), (e) => e is FormatException); 276 Expect.throws(() => decode(bytes, 3), (e) => e is FormatException);
277 Expect.throws(() => decode(bytes, 4), (e) => e is FormatException); 277 Expect.throws(() => decode(bytes, 4), (e) => e is FormatException);
278 278
279 String expected = test[1]; 279 String expected = test[1];
280 Expect.equals(expected, decodeAllowMalformed(bytes, 1)); 280 Expect.equals(expected, decodeAllowMalformed(bytes, 1));
281 Expect.equals(expected, decodeAllowMalformed(bytes, 2)); 281 Expect.equals(expected, decodeAllowMalformed(bytes, 2));
282 Expect.equals(expected, decodeAllowMalformed(bytes, 3)); 282 Expect.equals(expected, decodeAllowMalformed(bytes, 3));
283 Expect.equals(expected, decodeAllowMalformed(bytes, 4)); 283 Expect.equals(expected, decodeAllowMalformed(bytes, 4));
284 } 284 }
285 } 285 }
OLDNEW
« no previous file with comments | « tests/lib_strong/collection/linked_list_test.dart ('k') | tests/lib_strong/convert/chunked_conversion_utf83_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698