// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
base.require('tracing.test_utils');
base.require('tracing.trace_model.counter');
base.require('tracing.trace_model.counter_series');
base.unittest.testSuite('tracing.trace_model.counter', function() {
var createCounterWithTwoSeries = function() {
var ctr = new tracing.trace_model.Counter(null, 0, '', 'myCounter');
var aSeries = new tracing.trace_model.CounterSeries('a', 0);
var bSeries = new tracing.trace_model.CounterSeries('b', 0);
ctr.addSeries(aSeries);
ctr.addSeries(bSeries);
aSeries.addSample(0, 5);
aSeries.addSample(1, 6);
aSeries.addSample(2, 5);
aSeries.addSample(3, 7);
bSeries.addSample(0, 10);
bSeries.addSample(1, 15);
bSeries.addSample(2, 12);
bSeries.addSample(3, 16);
return ctr;
};
test('getSampleStatisticsWithSingleSelection', function() {
var ctr = createCounterWithTwoSeries();
var ret = ctr.getSampleStatistics([0]);
assertEquals(5, ret[0].min);
assertEquals(5, ret[0].max);
assertEquals(5, ret[0].avg);
assertEquals(5, ret[0].start);
assertEquals(5, ret[0].end);
assertEquals(10, ret[1].min);
assertEquals(10, ret[1].max);
assertEquals(10, ret[1].avg);
assertEquals(10, ret[1].start);
assertEquals(10, ret[1].end);
});
test('getSampleStatisticsWithMultipleSelections', function() {
var ctr = createCounterWithTwoSeries();
var ret = ctr.getSampleStatistics([0, 1]);
assertEquals(5, ret[0].min);
assertEquals(6, ret[0].max);
assertEquals((5 + 6) / 2, ret[0].avg);
assertEquals(5, ret[0].start);
assertEquals(6, ret[0].end);
assertEquals(10, ret[1].min);
assertEquals(15, ret[1].max);
assertEquals((10 + 15) / 2, ret[1].avg);
assertEquals(10, ret[1].start);
assertEquals(15, ret[1].end);
});
test('getSampleStatisticsWithOutofOrderIndices', function() {
var ctr = createCounterWithTwoSeries();
var ret = ctr.getSampleStatistics([1, 0]);
assertEquals(5, ret[0].min);
assertEquals(6, ret[0].max);
assertEquals((5 + 6) / 2, ret[0].avg);
assertEquals(5, ret[0].start);
assertEquals(6, ret[0].end);
assertEquals(10, ret[1].min);
assertEquals(15, ret[1].max);
assertEquals((10 + 15) / 2, ret[1].avg);
assertEquals(10, ret[1].start);
assertEquals(15, ret[1].end);
});
test('getSampleStatisticsWithAllSelections', function() {
var ctr = createCounterWithTwoSeries();
var ret = ctr.getSampleStatistics([1, 0, 2, 3]);
assertEquals(5, ret[0].min);
assertEquals(7, ret[0].max);
assertEquals((5 + 6 + 5 + 7) / 4, ret[0].avg);
assertEquals(5, ret[0].start);
assertEquals(7, ret[0].end);
assertEquals(10, ret[1].min);
assertEquals(16, ret[1].max);
assertEquals((10 + 15 + 12 + 16) / 4, ret[1].avg);
assertEquals(10, ret[1].start);
assertEquals(16, ret[1].end);
});
});