| // 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. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| import "dart:convert"; |
| |
| class MySink implements Sink<List<int>> { |
| List<int> accumulated = <int>[]; |
| bool isClosed = false; |
| |
| int add(List<int> list) { |
| accumulated.addAll(list); |
| return list.length; |
| } |
| |
| String close() { |
| isClosed = true; |
| // Returning a value here triggered a bug, where the caller was trying to |
| // pass the value through its 'void' return type. |
| // Example: void close() => _sink.close(); |
| return "done"; |
| } |
| } |
| |
| main() { |
| var mySink = new MySink(); |
| var byteSink = new ByteConversionSink.from(mySink); |
| byteSink.add([1, 2, 3]); |
| byteSink.close(); |
| Expect.listEquals([1, 2, 3], mySink.accumulated); |
| Expect.isTrue(mySink.isClosed); |
| } |