OLD | NEW |
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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 import 'dart:convert'; | 6 import 'dart:convert'; |
7 import 'unicode_tests.dart'; | 7 import 'unicode_tests.dart'; |
8 | 8 |
9 String decode(List<int> bytes, int chunkSize) { | 9 String decode(List<int> bytes, int chunkSize) { |
10 StringBuffer buffer = new StringBuffer(); | 10 StringBuffer buffer = new StringBuffer(); |
11 ChunkedConversionSink stringSink = | 11 ChunkedConversionSink stringSink = |
12 new StringConversionSink.fromStringSink(buffer); | 12 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 List nextChunk = []; |
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 | |
30 main() { | 29 main() { |
31 for (var test in UNICODE_TESTS) { | 30 for (var test in UNICODE_TESTS) { |
32 var bytes = test[0]; | 31 var bytes = test[0]; |
33 var expected = test[1]; | 32 var expected = test[1]; |
34 Expect.stringEquals(expected, decode(bytes, 1)); | 33 Expect.stringEquals(expected, decode(bytes, 1)); |
35 Expect.stringEquals(expected, decode(bytes, 2)); | 34 Expect.stringEquals(expected, decode(bytes, 2)); |
36 Expect.stringEquals(expected, decode(bytes, 3)); | 35 Expect.stringEquals(expected, decode(bytes, 3)); |
37 Expect.stringEquals(expected, decode(bytes, 4)); | 36 Expect.stringEquals(expected, decode(bytes, 4)); |
38 } | 37 } |
39 } | 38 } |
OLD | NEW |