| Index: tests/lib/convert/streamed_conversion_json_encode1_test.dart
|
| diff --git a/tests/lib/convert/chunked_conversion_json_encode1_test.dart b/tests/lib/convert/streamed_conversion_json_encode1_test.dart
|
| similarity index 54%
|
| copy from tests/lib/convert/chunked_conversion_json_encode1_test.dart
|
| copy to tests/lib/convert/streamed_conversion_json_encode1_test.dart
|
| index c521aa59d0268496e3c903b67a6898683a2eec79..1a31ea61768d114214d9d7d524204a94268a0b0e 100644
|
| --- a/tests/lib/convert/chunked_conversion_json_encode1_test.dart
|
| +++ b/tests/lib/convert/streamed_conversion_json_encode1_test.dart
|
| @@ -3,7 +3,9 @@
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| import "package:expect/expect.dart";
|
| +import 'dart:async';
|
| import 'dart:convert';
|
| +import '../../async_helper.dart';
|
|
|
| final TESTS = [
|
| [ 5, '5' ],
|
| @@ -30,49 +32,46 @@ final TESTS = [
|
| [ r'\foo', r'"\\foo"' ],
|
| ];
|
|
|
| -class MyStringConversionSink extends StringConversionSinkBase {
|
| - var buffer = new StringBuffer();
|
| - var callback;
|
| -
|
| - MyStringConversionSink(this.callback);
|
| -
|
| - addSlice(str, start, end, bool isLast) {
|
| - buffer.write(str.substring(start, end));
|
| - if (isLast) close();
|
| - }
|
| -
|
| - close() {
|
| - callback(buffer.toString());
|
| - }
|
| +Stream<String> encode(Object o) {
|
| + var encoder = new JsonEncoder();
|
| + StreamController controller;
|
| + controller = new StreamController(onListen: () {
|
| + controller.add(o);
|
| + controller.close();
|
| + });
|
| + return controller.stream.transform(encoder);
|
| }
|
|
|
| -String encode(Object o) {
|
| - var result;
|
| - var encoder = new JsonEncoder();
|
| - ChunkedConversionSink stringSink =
|
| - new MyStringConversionSink((x) => result = x);
|
| - var objectSink = new JsonEncoder().startChunkedConversion(stringSink);
|
| - objectSink.add(o);
|
| - objectSink.close();
|
| - return result;
|
| +void testNoPause(String expected, Object o) {
|
| + asyncStart();
|
| + Stream stream = encode(o);
|
| + stream.toList().then((list) {
|
| + StringBuffer buffer = new StringBuffer();
|
| + buffer.writeAll(list);
|
| + Expect.stringEquals(expected, buffer.toString());
|
| + asyncEnd();
|
| + });
|
| }
|
|
|
| -String encode2(Object o) {
|
| - var result;
|
| - var encoder = new JsonEncoder();
|
| - ChunkedConversionSink stringSink =
|
| - new StringConversionSink.withCallback((x) => result = x);
|
| - var objectSink = encoder.startChunkedConversion(stringSink);
|
| - objectSink.add(o);
|
| - objectSink.close();
|
| - return result;
|
| +void testWithPause(String expected, Object o) {
|
| + asyncStart();
|
| + Stream stream = encode(o);
|
| + StringBuffer buffer = new StringBuffer();
|
| + var sub;
|
| + sub = stream.listen((x) {
|
| + buffer.write(x);
|
| + sub.pause(new Future.delayed(Duration.ZERO));
|
| + }, onDone: () {
|
| + Expect.stringEquals(expected, buffer.toString());
|
| + asyncEnd();
|
| + });
|
| }
|
|
|
| -main() {
|
| +void main() {
|
| for (var test in TESTS) {
|
| var o = test[0];
|
| var expected = test[1];
|
| - Expect.equals(expected, encode(o));
|
| - Expect.equals(expected, encode2(o));
|
| + testNoPause(expected, o);
|
| + testWithPause(expected, o);
|
| }
|
| }
|
|
|