2016-08-03 18:00:07 -04:00
|
|
|
/**
|
|
|
|
* @license
|
|
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
|
|
* found in the LICENSE file at https://angular.io/license
|
|
|
|
*/
|
2015-02-11 13:13:49 -05:00
|
|
|
|
2016-08-03 18:00:07 -04:00
|
|
|
import {AsyncTestCompleter, afterEach, beforeEach, ddescribe, describe, expect, iit, inject, it, xit} from '@angular/core/testing/testing_internal';
|
|
|
|
import {Date, DateWrapper, isBlank, isPresent} from '@angular/facade/src/lang';
|
|
|
|
import {ConsoleReporter, MeasureValues, ReflectiveInjector, Reporter, SampleDescription, SampleState} from 'benchpress/common';
|
2015-02-11 13:13:49 -05:00
|
|
|
|
|
|
|
export function main() {
|
|
|
|
describe('console reporter', () => {
|
|
|
|
var reporter;
|
2015-06-17 14:17:21 -04:00
|
|
|
var log: string[];
|
2015-02-11 13:13:49 -05:00
|
|
|
|
2015-06-12 10:50:45 -04:00
|
|
|
function createReporter({columnWidth = null, sampleId = null, descriptions = null,
|
|
|
|
metrics = null}: {columnWidth?, sampleId?, descriptions?, metrics?}) {
|
2015-02-11 13:13:49 -05:00
|
|
|
log = [];
|
|
|
|
if (isBlank(descriptions)) {
|
|
|
|
descriptions = [];
|
|
|
|
}
|
|
|
|
if (isBlank(sampleId)) {
|
|
|
|
sampleId = 'null';
|
|
|
|
}
|
|
|
|
var bindings = [
|
2016-08-03 18:00:07 -04:00
|
|
|
ConsoleReporter.PROVIDERS, {
|
|
|
|
provide: SampleDescription,
|
|
|
|
useValue: new SampleDescription(sampleId, descriptions, metrics)
|
|
|
|
},
|
2016-06-02 20:30:40 -04:00
|
|
|
{provide: ConsoleReporter.PRINT, useValue: (line) => log.push(line)}
|
2015-02-11 13:13:49 -05:00
|
|
|
];
|
|
|
|
if (isPresent(columnWidth)) {
|
2016-08-03 15:32:26 -04:00
|
|
|
bindings.push({provide: ConsoleReporter.COLUMN_WIDTH, useValue: columnWidth});
|
2015-02-11 13:13:49 -05:00
|
|
|
}
|
2016-04-14 15:35:24 -04:00
|
|
|
reporter = ReflectiveInjector.resolveAndCreate(bindings).get(ConsoleReporter);
|
2015-02-11 13:13:49 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
it('should print the sample id, description and table header', () => {
|
|
|
|
createReporter({
|
|
|
|
columnWidth: 8,
|
|
|
|
sampleId: 'someSample',
|
2015-05-27 17:57:54 -04:00
|
|
|
descriptions: [{'a': 1, 'b': 2}],
|
|
|
|
metrics: {'m1': 'some desc', 'm2': 'some other desc'}
|
2015-02-11 13:13:49 -05:00
|
|
|
});
|
|
|
|
expect(log).toEqual([
|
|
|
|
'BENCHMARK someSample',
|
|
|
|
'Description:',
|
|
|
|
'- a: 1',
|
|
|
|
'- b: 2',
|
|
|
|
'Metrics:',
|
|
|
|
'- m1: some desc',
|
|
|
|
'- m2: some other desc',
|
|
|
|
'',
|
|
|
|
' m1 | m2',
|
|
|
|
'-------- | --------',
|
|
|
|
]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should print a table row', () => {
|
2015-05-27 17:57:54 -04:00
|
|
|
createReporter({columnWidth: 8, metrics: {'a': '', 'b': ''}});
|
2015-02-11 13:13:49 -05:00
|
|
|
log = [];
|
2015-05-27 17:57:54 -04:00
|
|
|
reporter.reportMeasureValues(mv(0, 0, {'a': 1.23, 'b': 2}));
|
|
|
|
expect(log).toEqual([' 1.23 | 2.00']);
|
2015-02-11 13:13:49 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
it('should print the table footer and stats when there is a valid sample', () => {
|
2015-05-27 17:57:54 -04:00
|
|
|
createReporter({columnWidth: 8, metrics: {'a': '', 'b': ''}});
|
2015-02-11 13:13:49 -05:00
|
|
|
log = [];
|
2015-05-27 17:57:54 -04:00
|
|
|
reporter.reportSample([], [mv(0, 0, {'a': 3, 'b': 6}), mv(1, 1, {'a': 5, 'b': 9})]);
|
|
|
|
expect(log).toEqual(['======== | ========', '4.00+-25% | 7.50+-20%']);
|
2015-02-11 13:13:49 -05:00
|
|
|
});
|
|
|
|
|
2015-04-17 21:15:22 -04:00
|
|
|
it('should print the coefficient of variation only when it is meaningful', () => {
|
2015-05-27 17:57:54 -04:00
|
|
|
createReporter({columnWidth: 8, metrics: {'a': '', 'b': ''}});
|
2015-04-17 21:15:22 -04:00
|
|
|
log = [];
|
2015-05-27 17:57:54 -04:00
|
|
|
reporter.reportSample([], [mv(0, 0, {'a': 3, 'b': 0}), mv(1, 1, {'a': 5, 'b': 0})]);
|
|
|
|
expect(log).toEqual(['======== | ========', '4.00+-25% | 0.00']);
|
2015-04-17 21:15:22 -04:00
|
|
|
});
|
|
|
|
|
2015-02-11 13:13:49 -05:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2015-02-17 17:30:24 -05:00
|
|
|
function mv(runIndex, time, values) {
|
|
|
|
return new MeasureValues(runIndex, DateWrapper.fromMillis(time), values);
|
|
|
|
}
|