Index: test/codegen/lib/convert/chunked_conversion2_test.dart |
diff --git a/test/codegen/lib/convert/chunked_conversion2_test.dart b/test/codegen/lib/convert/chunked_conversion2_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..751b447e57d761f2043e7fff48d9c47b9c9909b2 |
--- /dev/null |
+++ b/test/codegen/lib/convert/chunked_conversion2_test.dart |
@@ -0,0 +1,52 @@ |
+// 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 'dart:convert'; |
+ |
+import 'package:expect/expect.dart'; |
+ |
+// Test that the String and ByteConversionSinks make a copy when they need to |
+// adapt. |
+ |
+class MyByteSink extends ByteConversionSinkBase { |
+ var accumulator = []; |
+ add(List<int> bytes) { |
+ accumulator.add(bytes); |
+ } |
+ close() {} |
+} |
+ |
+void testBase() { |
+ var byteSink = new MyByteSink(); |
+ var bytes = [1]; |
+ byteSink.addSlice(bytes, 0, 1, false); |
+ bytes[0] = 2; |
+ byteSink.addSlice(bytes, 0, 1, true); |
+ Expect.equals(1, byteSink.accumulator[0][0]); |
+ Expect.equals(2, byteSink.accumulator[1][0]); |
+} |
+ |
+class MyChunkedSink extends ChunkedConversionSink<List<int>> { |
+ var accumulator = []; |
+ add(List<int> bytes) { |
+ accumulator.add(bytes); |
+ } |
+ close() {} |
+} |
+ |
+void testAdapter() { |
+ var chunkedSink = new MyChunkedSink(); |
+ var byteSink = new ByteConversionSink.from(chunkedSink); |
+ var bytes = [1]; |
+ byteSink.addSlice(bytes, 0, 1, false); |
+ bytes[0] = 2; |
+ byteSink.addSlice(bytes, 0, 1, true); |
+ Expect.equals(1, chunkedSink.accumulator[0][0]); |
+ Expect.equals(2, chunkedSink.accumulator[1][0]); |
+} |
+ |
+void main() { |
+ testBase(); |
+ testAdapter(); |
+} |