Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1106)

Unified Diff: tests/lib/convert/streamed_conversion_json_encode1_test.dart

Issue 20374003: Add transformer support to Converters. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Provide better types for bind. Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 55%
copy from tests/lib/convert/chunked_conversion_json_encode1_test.dart
copy to tests/lib/convert/streamed_conversion_json_encode1_test.dart
index c521aa59d0268496e3c903b67a6898683a2eec79..5ace394f62447597f90670efe29e2a24ccf94eca 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;
+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;
+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() {
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);
}
}

Powered by Google App Engine
This is Rietveld 408576698