Index: tests/compiler/dart2js/output_collector.dart |
diff --git a/tests/compiler/dart2js/output_collector.dart b/tests/compiler/dart2js/output_collector.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c6bc101a7f8b22f99ba065704aec89a46b69ff7a |
--- /dev/null |
+++ b/tests/compiler/dart2js/output_collector.dart |
@@ -0,0 +1,44 @@ |
+// Copyright (c) 2015, 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. |
+ |
+// Output provider that collects the output in string buffers. |
+ |
+library output_collector; |
+ |
+import 'dart:async'; |
+ |
+class BufferedEventSink implements EventSink<String> { |
+ StringBuffer sb = new StringBuffer(); |
+ String text; |
+ |
+ void add(String event) { |
+ sb.write(event); |
+ } |
+ |
+ void addError(errorEvent, [StackTrace stackTrace]) { |
+ // Do not support this. |
+ } |
+ |
+ void close() { |
+ text = sb.toString(); |
+ sb = null; |
+ } |
+} |
+ |
+class OutputCollector { |
+ Map<String, Map<String, BufferedEventSink>> outputMap = {}; |
+ |
+ EventSink<String> call(String name, String extension) { |
+ Map<String, BufferedEventSink> sinkMap = |
+ outputMap.putIfAbsent(extension, () => {}); |
+ return sinkMap.putIfAbsent(name, () => new BufferedEventSink()); |
+ } |
+ |
+ String getOutput(String name, String extension) { |
+ Map<String, BufferedEventSink> sinkMap = outputMap[extension]; |
+ if (sinkMap == null) return null; |
+ BufferedEventSink sink = sinkMap[name]; |
+ return sink != null ? sink.text : null; |
+ } |
+} |