Index: test/json_document_transformer_test.dart |
diff --git a/test/json_document_transformer_test.dart b/test/json_document_transformer_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fec3d2ac115aba52f3f452edaed1dbfe24bfab4f |
--- /dev/null |
+++ b/test/json_document_transformer_test.dart |
@@ -0,0 +1,50 @@ |
+// Copyright (c) 2016, 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:async'; |
+import 'dart:convert'; |
+ |
+import 'package:stream_channel/stream_channel.dart'; |
+import 'package:test/test.dart'; |
+ |
+import 'utils.dart'; |
+ |
+void main() { |
+ var streamController; |
+ var sinkController; |
+ var channel; |
+ setUp(() { |
+ streamController = new StreamController(); |
+ sinkController = new StreamController(); |
+ channel = new StreamChannel( |
+ streamController.stream, sinkController.sink); |
+ }); |
+ |
+ test("decodes JSON emitted by the channel", () { |
+ var transformed = channel.transform(jsonDocument); |
+ streamController.add('{"foo": "bar"}'); |
+ expect(transformed.stream.first, completion(equals({"foo": "bar"}))); |
+ }); |
+ |
+ test("encodes objects added to the channel", () { |
+ var transformed = channel.transform(jsonDocument); |
+ transformed.sink.add({"foo": "bar"}); |
+ expect(sinkController.stream.first, |
+ completion(equals(JSON.encode({"foo": "bar"})))); |
+ }); |
+ |
+ test("supports the reviver function", () { |
+ var transformed = channel.transform( |
+ new JsonDocumentTransformer(reviver: (key, value) => "decoded")); |
+ streamController.add('{"foo": "bar"}'); |
+ expect(transformed.stream.first, completion(equals("decoded"))); |
+ }); |
+ |
+ test("supports the toEncodable function", () { |
+ var transformed = channel.transform( |
+ new JsonDocumentTransformer(toEncodable: (object) => "encoded")); |
+ transformed.sink.add(new Object()); |
+ expect(sinkController.stream.first, completion(equals('"encoded"'))); |
+ }); |
+} |