OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:charcode/ascii.dart'; | 7 import 'package:charcode/ascii.dart'; |
8 import 'package:convert/convert.dart'; | 8 import 'package:convert/convert.dart'; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 | 10 |
(...skipping 19 matching lines...) Expand all Loading... |
30 expect(percent.encode([0x80, 0xFF]), equals("%80%FF")); | 30 expect(percent.encode([0x80, 0xFF]), equals("%80%FF")); |
31 }); | 31 }); |
32 | 32 |
33 test("mixes encoded and unencoded characters", () { | 33 test("mixes encoded and unencoded characters", () { |
34 expect(percent.encode([$a, $plus, $b, $equal, 0x80]), | 34 expect(percent.encode([$a, $plus, $b, $equal, 0x80]), |
35 equals("a%2Bb%3D%80")); | 35 equals("a%2Bb%3D%80")); |
36 }); | 36 }); |
37 | 37 |
38 group("with chunked conversion", () { | 38 group("with chunked conversion", () { |
39 test("percent-encodes byte arrays", () { | 39 test("percent-encodes byte arrays", () { |
40 var results = []; | 40 var results = <String>[]; |
41 var controller = new StreamController(sync: true); | 41 var controller = new StreamController<String>(sync: true); |
42 controller.stream.listen(results.add); | 42 controller.stream.listen(results.add); |
43 var sink = percent.encoder.startChunkedConversion(controller.sink); | 43 var sink = percent.encoder.startChunkedConversion(controller.sink); |
44 | 44 |
45 sink.add([$a, $plus, $b, $equal, 0x80]); | 45 sink.add([$a, $plus, $b, $equal, 0x80]); |
46 expect(results, equals(["a%2Bb%3D%80"])); | 46 expect(results, equals(["a%2Bb%3D%80"])); |
47 | 47 |
48 sink.add([0x00, 0x01, 0xfe, 0xff]); | 48 sink.add([0x00, 0x01, 0xfe, 0xff]); |
49 expect(results, equals(["a%2Bb%3D%80", "%00%01%FE%FF"])); | 49 expect(results, equals(["a%2Bb%3D%80", "%00%01%FE%FF"])); |
50 }); | 50 }); |
51 | 51 |
52 test("handles empty and single-byte lists", () { | 52 test("handles empty and single-byte lists", () { |
53 var results = []; | 53 var results = <String>[]; |
54 var controller = new StreamController(sync: true); | 54 var controller = new StreamController<String>(sync: true); |
55 controller.stream.listen(results.add); | 55 controller.stream.listen(results.add); |
56 var sink = percent.encoder.startChunkedConversion(controller.sink); | 56 var sink = percent.encoder.startChunkedConversion(controller.sink); |
57 | 57 |
58 sink.add([]); | 58 sink.add([]); |
59 expect(results, equals([""])); | 59 expect(results, equals([""])); |
60 | 60 |
61 sink.add([0x00]); | 61 sink.add([0x00]); |
62 expect(results, equals(["", "%00"])); | 62 expect(results, equals(["", "%00"])); |
63 | 63 |
64 sink.add([]); | 64 sink.add([]); |
(...skipping 26 matching lines...) Expand all Loading... |
91 }); | 91 }); |
92 | 92 |
93 test("supports less aggressive encoding", () { | 93 test("supports less aggressive encoding", () { |
94 expect(percent.decode(" `{@[,/^}\x7F\x00"), equals([ | 94 expect(percent.decode(" `{@[,/^}\x7F\x00"), equals([ |
95 $space, $backquote, $open_brace, $at, $open_bracket, $comma, | 95 $space, $backquote, $open_brace, $at, $open_bracket, $comma, |
96 $division, $caret, $close_brace, $del, $nul | 96 $division, $caret, $close_brace, $del, $nul |
97 ])); | 97 ])); |
98 }); | 98 }); |
99 | 99 |
100 group("with chunked conversion", () { | 100 group("with chunked conversion", () { |
101 var results; | 101 List<List<int>> results; |
102 var sink; | 102 var sink; |
103 setUp(() { | 103 setUp(() { |
104 results = []; | 104 results = []; |
105 var controller = new StreamController(sync: true); | 105 var controller = new StreamController<List<int>>(sync: true); |
106 controller.stream.listen(results.add); | 106 controller.stream.listen(results.add); |
107 sink = percent.decoder.startChunkedConversion(controller.sink); | 107 sink = percent.decoder.startChunkedConversion(controller.sink); |
108 }); | 108 }); |
109 | 109 |
110 test("converts percent to byte arrays", () { | 110 test("converts percent to byte arrays", () { |
111 sink.add("a%2Bb%3D%80"); | 111 sink.add("a%2Bb%3D%80"); |
112 expect(results, equals([[$a, $plus, $b, $equal, 0x80]])); | 112 expect(results, equals([[$a, $plus, $b, $equal, 0x80]])); |
113 | 113 |
114 sink.add("%00%01%FE%FF"); | 114 sink.add("%00%01%FE%FF"); |
115 expect(results, | 115 expect(results, |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 | 199 |
200 test("rejects dangling % detected in convert()", () { | 200 test("rejects dangling % detected in convert()", () { |
201 expect(() => percent.decode("ab%"), throwsFormatException); | 201 expect(() => percent.decode("ab%"), throwsFormatException); |
202 }); | 202 }); |
203 | 203 |
204 test("rejects dangling digit detected in convert()", () { | 204 test("rejects dangling digit detected in convert()", () { |
205 expect(() => percent.decode("ab%2"), throwsFormatException); | 205 expect(() => percent.decode("ab%2"), throwsFormatException); |
206 }); | 206 }); |
207 }); | 207 }); |
208 } | 208 } |
OLD | NEW |