blob: 55f5358169c52e59ba335cf541895ef6e3604081 [file] [log] [blame]
/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {PivotTableTreeBuilder} from './pivot_table_controller';
describe('Pivot Table tree builder', () => {
test('aggregates averages correctly', () => {
const builder = new PivotTableTreeBuilder(
{
pivotColumns: [
{kind: 'regular', table: 'slice', column: 'category'},
{kind: 'regular', table: 'slice', column: 'name'},
],
aggregationColumns: [
{
aggregationFunction: 'AVG',
column: {kind: 'regular', table: 'slice', column: 'dur'},
},
],
countIndex: 1,
},
['cat1', 'name1', 80.0, 2],
);
builder.ingestRow(['cat1', 'name2', 20.0, 1]);
builder.ingestRow(['cat2', 'name3', 20.0, 1]);
// With two rows of average value 80.0, and two of average value 20.0;
// the total sum is 80.0 * 2 + 20.0 + 20.0 = 200.0 over four slices. The
// average value should be 200.0 / 4 = 50.0
expect(builder.build().aggregates[0]).toBeCloseTo(50.0);
});
});