// Copyright (c) 2014, 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.7 import 'package:expect/expect.dart'; import 'package:compiler/src/helpers/helpers.dart'; class CollectingOutput implements StatsOutput { final StringBuffer sb = new StringBuffer(); @override void println(String text) { sb.write('$text\n'); } @override String toString() => sb.toString(); } void main() { testRecordElement(); testRecordFrequency(); testRecordCounter(); } void testRecordElement() { test((Stats stats) { stats.recordElement('foo', 'a', data: 'first-a-data'); stats.recordElement('foo', 'a', data: 'second-a-data'); stats.recordElement('foo', 'b'); stats.recordElement('bar', 'a', data: 'third-a-data'); stats.recordElement('bar', 'c'); }, r''' foo: 2 value=a data=second-a-data b bar: 2 value=a data=third-a-data c '''); } void testRecordFrequency() { test((Stats stats) { stats.recordFrequency('foo', 'a', 'first-a-data'); stats.recordFrequency('foo', 'a', 'second-a-data'); stats.recordFrequency('bar', 'b', 'first-b-data'); stats.recordFrequency('foo', 'c'); stats.recordFrequency('bar', 'b'); }, r''' foo: a: 2 first-a-data second-a-data c: 1 bar: b: 2 first-b-data '''); } void testRecordCounter() { test((Stats stats) { stats.recordCounter('foo', 'a'); stats.recordCounter('foo', 'a'); stats.recordCounter('foo', 'b'); stats.recordCounter('bar', 'c', 'first-c-data'); stats.recordCounter('bar', 'c', 'second-c-data'); stats.recordCounter('bar', 'd'); stats.recordCounter('bar', 'd'); stats.recordCounter('baz'); stats.recordCounter('baz'); }, r''' foo: 3 count=2 example=a count=1 example=b bar: 4 count=2 examples=2 c: first-c-data second-c-data d baz: 2 '''); } void test(f(Stats stats), expectedDump) { CollectingOutput output = new CollectingOutput(); Stats stats = new ActiveStats(new ConsolePrinter(output: output)); f(stats); stats.dumpStats(); print(output.toString()); Expect.equals(expectedDump, output.toString()); }