| Index: tests/lib/convert/chunked_conversion_utf82_test.dart
|
| diff --git a/tests/lib/convert/chunked_conversion_utf82_test.dart b/tests/lib/convert/chunked_conversion_utf82_test.dart
|
| index 6e1c6e78416cb1acfeb05638814d46e763fc3eea..1201892e6c9650cffdc3b9d96adebaf6c56ca39b 100644
|
| --- a/tests/lib/convert/chunked_conversion_utf82_test.dart
|
| +++ b/tests/lib/convert/chunked_conversion_utf82_test.dart
|
| @@ -3,6 +3,7 @@
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| library utf8_test;
|
| +
|
| import "package:expect/expect.dart";
|
| import 'dart:convert';
|
|
|
| @@ -49,87 +50,218 @@ String decodeAllowMalformed(List<int> bytes, int chunkSize) {
|
|
|
| final TESTS = [
|
| // Unfinished UTF-8 sequences.
|
| - [ 0xc3 ],
|
| - [ 0xE2, 0x82 ],
|
| - [ 0xF0, 0xA4, 0xAD ],
|
| + [0xc3],
|
| + [0xE2, 0x82],
|
| + [0xF0, 0xA4, 0xAD],
|
| // Overlong encoding of euro-sign.
|
| - [ 0xF0, 0x82, 0x82, 0xAC ],
|
| + [0xF0, 0x82, 0x82, 0xAC],
|
| // Other overlong/unfinished sequences.
|
| - [ 0xC0 ],
|
| - [ 0xC1 ],
|
| - [ 0xF5 ],
|
| - [ 0xF6 ],
|
| - [ 0xF7 ],
|
| - [ 0xF8 ],
|
| - [ 0xF9 ],
|
| - [ 0xFA ],
|
| - [ 0xFB ],
|
| - [ 0xFC ],
|
| - [ 0xFD ],
|
| - [ 0xFE ],
|
| - [ 0xFF ],
|
| - [ 0xC0, 0x80 ],
|
| - [ 0xC1, 0x80 ],
|
| + [0xC0],
|
| + [0xC1],
|
| + [0xF5],
|
| + [0xF6],
|
| + [0xF7],
|
| + [0xF8],
|
| + [0xF9],
|
| + [0xFA],
|
| + [0xFB],
|
| + [0xFC],
|
| + [0xFD],
|
| + [0xFE],
|
| + [0xFF],
|
| + [0xC0, 0x80],
|
| + [0xC1, 0x80],
|
| // Outside valid range.
|
| - [ 0xF4, 0xBF, 0xBF, 0xBF ]];
|
| + [0xF4, 0xBF, 0xBF, 0xBF]
|
| +];
|
|
|
| final TESTS2 = [
|
| // Test that 0xC0|1, 0x80 does not eat the next character.
|
| - [[ 0xC0, 0x80, 0x61 ], "Xa" ],
|
| - [[ 0xC1, 0x80, 0x61 ], "Xa" ],
|
| + [
|
| + [0xC0, 0x80, 0x61],
|
| + "Xa"
|
| + ],
|
| + [
|
| + [0xC1, 0x80, 0x61],
|
| + "Xa"
|
| + ],
|
| // 0xF5 .. 0xFF never appear in valid UTF-8 sequences.
|
| - [[ 0xF5, 0x80 ], "XX" ],
|
| - [[ 0xF6, 0x80 ], "XX" ],
|
| - [[ 0xF7, 0x80 ], "XX" ],
|
| - [[ 0xF8, 0x80 ], "XX" ],
|
| - [[ 0xF9, 0x80 ], "XX" ],
|
| - [[ 0xFA, 0x80 ], "XX" ],
|
| - [[ 0xFB, 0x80 ], "XX" ],
|
| - [[ 0xFC, 0x80 ], "XX" ],
|
| - [[ 0xFD, 0x80 ], "XX" ],
|
| - [[ 0xFE, 0x80 ], "XX" ],
|
| - [[ 0xFF, 0x80 ], "XX" ],
|
| - [[ 0xF5, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xF6, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xF7, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xF8, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xF9, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xFA, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xFB, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xFC, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xFD, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xFE, 0x80, 0x61 ], "XXa" ],
|
| - [[ 0xFF, 0x80, 0x61 ], "XXa" ],
|
| + [
|
| + [0xF5, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xF6, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xF7, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xF8, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xF9, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xFA, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xFB, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xFC, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xFD, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xFE, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xFF, 0x80],
|
| + "XX"
|
| + ],
|
| + [
|
| + [0xF5, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xF6, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xF7, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xF8, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xF9, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xFA, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xFB, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xFC, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xFD, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xFE, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| + [
|
| + [0xFF, 0x80, 0x61],
|
| + "XXa"
|
| + ],
|
| // Characters outside the valid range.
|
| - [[ 0xF5, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xF6, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xF7, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xF8, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xF9, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xFA, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xFB, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xFC, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xFD, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xFE, 0x80, 0x80, 0x61 ], "XXXa" ],
|
| - [[ 0xFF, 0x80, 0x80, 0x61 ], "XXXa" ]];
|
| + [
|
| + [0xF5, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xF6, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xF7, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xF8, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xF9, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xFA, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xFB, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xFC, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xFD, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xFE, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ],
|
| + [
|
| + [0xFF, 0x80, 0x80, 0x61],
|
| + "XXXa"
|
| + ]
|
| +];
|
|
|
| main() {
|
| var allTests = TESTS.expand((test) {
|
| // Pairs of test and expected string output when malformed strings are
|
| // allowed. Replacement character: U+FFFD
|
| - return [[ test, "\u{FFFD}" ],
|
| - [ new List.from([0x61])..addAll(test), "a\u{FFFD}" ],
|
| - [ new List.from([0x61])..addAll(test)..add(0x61), "a\u{FFFD}a" ],
|
| - [ new List.from(test)..add(0x61), "\u{FFFD}a" ],
|
| - [ new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}" ],
|
| - [ new List.from(test)..add(0x61)..addAll(test),
|
| - "\u{FFFD}a\u{FFFD}" ],
|
| - [ new List.from([0xc3, 0xa5])..addAll(test), "å\u{FFFD}" ],
|
| - [ new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
| - "å\u{FFFD}å" ],
|
| - [ new List.from(test)..addAll([0xc3, 0xa5]), "\u{FFFD}å" ],
|
| - [ new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
| - "\u{FFFD}å\u{FFFD}" ]];
|
| + return [
|
| + [test, "\u{FFFD}"],
|
| + [
|
| + new List.from([0x61])..addAll(test),
|
| + "a\u{FFFD}"
|
| + ],
|
| + [
|
| + new List.from([0x61])
|
| + ..addAll(test)
|
| + ..add(0x61),
|
| + "a\u{FFFD}a"
|
| + ],
|
| + [new List.from(test)..add(0x61), "\u{FFFD}a"],
|
| + [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
| + [
|
| + new List.from(test)
|
| + ..add(0x61)
|
| + ..addAll(test),
|
| + "\u{FFFD}a\u{FFFD}"
|
| + ],
|
| + [
|
| + new List.from([0xc3, 0xa5])..addAll(test),
|
| + "å\u{FFFD}"
|
| + ],
|
| + [
|
| + new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
| + "å\u{FFFD}å"
|
| + ],
|
| + [
|
| + new List.from(test)..addAll([0xc3, 0xa5]),
|
| + "\u{FFFD}å"
|
| + ],
|
| + [
|
| + new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
| + "\u{FFFD}å\u{FFFD}"
|
| + ]
|
| + ];
|
| });
|
|
|
| var allTests2 = TESTS2.map((test) {
|
|
|