OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 import 'dart:convert'; | 6 import 'dart:convert'; |
7 | 7 |
8 String decode(List<int> bytes) { | 8 String decode(List<int> bytes) { |
9 StringBuffer buffer = new StringBuffer(); | 9 StringBuffer buffer = new StringBuffer(); |
10 var stringSink = new StringConversionSink.fromStringSink(buffer); | 10 var stringSink = new StringConversionSink.fromStringSink(buffer); |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 ] | 201 ] |
202 ]; | 202 ]; |
203 | 203 |
204 main() { | 204 main() { |
205 var allTests = TESTS.expand((test) { | 205 var allTests = TESTS.expand((test) { |
206 // Pairs of test and expected string output when malformed strings are | 206 // Pairs of test and expected string output when malformed strings are |
207 // allowed. Replacement character: U+FFFD | 207 // allowed. Replacement character: U+FFFD |
208 return [ | 208 return [ |
209 [test, "\u{FFFD}"], | 209 [test, "\u{FFFD}"], |
210 [ | 210 [ |
211 new List.from([0x61])..addAll(test), | 211 new List<int>.from([0x61])..addAll(test), |
212 "a\u{FFFD}" | 212 "a\u{FFFD}" |
213 ], | 213 ], |
214 [ | 214 [ |
215 new List.from([0x61]) | 215 new List<int>.from([0x61]) |
216 ..addAll(test) | 216 ..addAll(test) |
217 ..add(0x61), | 217 ..add(0x61), |
218 "a\u{FFFD}a" | 218 "a\u{FFFD}a" |
219 ], | 219 ], |
220 [new List.from(test)..add(0x61), "\u{FFFD}a"], | 220 [new List<int>.from(test)..add(0x61), "\u{FFFD}a"], |
221 [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"], | 221 [new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"], |
222 [ | 222 [ |
223 new List.from(test) | 223 new List<int>.from(test) |
224 ..add(0x61) | 224 ..add(0x61) |
225 ..addAll(test), | 225 ..addAll(test), |
226 "\u{FFFD}a\u{FFFD}" | 226 "\u{FFFD}a\u{FFFD}" |
227 ], | 227 ], |
228 [ | 228 [ |
229 new List.from([0xc3, 0xa5])..addAll(test), | 229 new List<int>.from([0xc3, 0xa5])..addAll(test), |
230 "å\u{FFFD}" | 230 "å\u{FFFD}" |
231 ], | 231 ], |
232 [ | 232 [ |
233 new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]), | 233 new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]), |
234 "å\u{FFFD}å" | 234 "å\u{FFFD}å" |
235 ], | 235 ], |
236 [ | 236 [ |
237 new List.from(test)..addAll([0xc3, 0xa5]), | 237 new List<int>.from(test)..addAll([0xc3, 0xa5]), |
238 "\u{FFFD}å" | 238 "\u{FFFD}å" |
239 ], | 239 ], |
240 [ | 240 [ |
241 new List.from(test)..addAll([0xc3, 0xa5])..addAll(test), | 241 new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test), |
242 "\u{FFFD}å\u{FFFD}" | 242 "\u{FFFD}å\u{FFFD}" |
243 ] | 243 ] |
244 ]; | 244 ]; |
245 }); | 245 }); |
246 | 246 |
247 var allTests2 = TESTS2.map((test) { | 247 var allTests2 = TESTS2.map((test) { |
248 // Pairs of test and expected string output when malformed strings are | 248 // Pairs of test and expected string output when malformed strings are |
249 // allowed. Replacement character: U+FFFD | 249 // allowed. Replacement character: U+FFFD |
250 String expected = (test[1] as String).replaceAll("X", "\u{FFFD}"); | 250 String expected = (test[1] as String).replaceAll("X", "\u{FFFD}"); |
251 return [test[0], expected]; | 251 return [test[0], expected]; |
252 }); | 252 }); |
253 | 253 |
254 for (var test in []..addAll(allTests)..addAll(allTests2)) { | 254 for (var test in []..addAll(allTests)..addAll(allTests2)) { |
255 List<int> bytes = test[0]; | 255 List<int> bytes = test[0]; |
256 Expect.throws(() => decode(bytes), (e) => e is FormatException); | 256 Expect.throws(() => decode(bytes), (e) => e is FormatException); |
257 | 257 |
258 String expected = test[1]; | 258 String expected = test[1]; |
259 Expect.equals(expected, decodeAllowMalformed(bytes)); | 259 Expect.equals(expected, decodeAllowMalformed(bytes)); |
260 } | 260 } |
261 } | 261 } |
OLD | NEW |