Index: tests/lib/codec/codec1_test.dart |
diff --git a/tests/lib/codec/codec1_test.dart b/tests/lib/codec/codec1_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c4b756c74cb087688d8565b8dc6306635b211422 |
--- /dev/null |
+++ b/tests/lib/codec/codec1_test.dart |
@@ -0,0 +1,70 @@ |
+// 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:codec'; |
+import 'dart:convert'; |
+ |
+import 'package:expect/expect.dart'; |
+ |
+class MyCodec extends Codec<int, String> { |
+ const MyCodec(); |
+ |
+ Converter<int, String> get encoder => new IntStringConverter(); |
+ Converter<String, int> get decoder => new StringIntConverter(); |
+} |
+ |
+class IntStringConverter extends Converter<int, String> { |
+ String convert(int i) => i.toString(); |
+} |
+ |
+class StringIntConverter extends Converter<String, int> { |
+ int convert(String str) => int.parse(str); |
+} |
+ |
+class MyCodec2 extends Codec<int, String> { |
+ const MyCodec2(); |
+ |
+ Converter<int, String> get encoder => new IntStringConverter2(); |
+ Converter<String, int> get decoder => new StringIntConverter2(); |
+} |
+ |
+class IntStringConverter2 extends Converter<int, String> { |
+ String convert(int i) => (i + 99).toString(); |
+} |
+ |
+class StringIntConverter2 extends Converter<String, int> { |
+ int convert(String str) => int.parse(str) + 400; |
+} |
+ |
+const TEST_CODEC = const MyCodec(); |
+const TEST_CODEC2 = const MyCodec2(); |
+ |
+main() { |
+ Expect.equals("0", TEST_CODEC.encode(0)); |
+ Expect.equals(5, TEST_CODEC.decode("5")); |
+ Expect.equals(3, TEST_CODEC.decode(TEST_CODEC.encode(3))); |
+ |
+ Expect.equals("99", TEST_CODEC2.encode(0)); |
+ Expect.equals(405, TEST_CODEC2.decode("5")); |
+ Expect.equals(499, TEST_CODEC2.decode(TEST_CODEC2.encode(0))); |
+ |
+ var inverted, fused; |
+ inverted = TEST_CODEC.inverted; |
+ fused = TEST_CODEC.fuse(inverted); |
+ Expect.equals(499, fused.encode(499)); |
+ Expect.equals(499, fused.decode(499)); |
+ |
+ fused = inverted.fuse(TEST_CODEC); |
+ Expect.equals("499", fused.encode("499")); |
+ Expect.equals("499", fused.decode("499")); |
+ |
+ inverted = TEST_CODEC2.inverted; |
+ fused = TEST_CODEC2.fuse(inverted); |
+ Expect.equals(499, fused.encode(0)); |
+ Expect.equals(499, fused.decode(0)); |
+ |
+ fused = TEST_CODEC.fuse(inverted); |
+ Expect.equals(405, fused.encode(5)); |
+ Expect.equals(101, fused.decode(2)); |
+} |