Index: test/codegen/lib/convert/chunked_conversion_utf89_test.dart |
diff --git a/test/codegen/lib/convert/chunked_conversion_utf89_test.dart b/test/codegen/lib/convert/chunked_conversion_utf89_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a04512455a8c9d1845af313758a75d7e56eb3c82 |
--- /dev/null |
+++ b/test/codegen/lib/convert/chunked_conversion_utf89_test.dart |
@@ -0,0 +1,34 @@ |
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+import "package:expect/expect.dart"; |
+import 'dart:convert'; |
+ |
+class MySink extends ChunkedConversionSink<String> { |
+ final Function _add; |
+ final Function _close; |
+ |
+ MySink(this._add, this._close); |
+ |
+ void add(x) { _add(x); } |
+ void close() { _close(); } |
+} |
+ |
+main() { |
+ // Make sure the UTF-8 decoder works eagerly. |
+ String lastString; |
+ bool isClosed = false; |
+ ChunkedConversionSink sink = new MySink((x) => lastString = x, |
+ () => isClosed = true); |
+ var byteSink = new Utf8Decoder().startChunkedConversion(sink); |
+ byteSink.add("abc".codeUnits); |
+ Expect.equals("abc", lastString); |
+ byteSink.add([0x61, 0xc3]); // 'a' followed by first part of Î. |
+ Expect.equals("a", lastString); |
+ byteSink.add([0x8e]); // second part of Î. |
+ Expect.equals("Î", lastString); |
+ Expect.isFalse(isClosed); |
+ byteSink.close(); |
+ Expect.isTrue(isClosed); |
+} |