openrowingmonitor/app/engine/averager/WeightedAverager.test.js

46 lines
1.3 KiB
JavaScript

'use strict'
/*
Open Rowing Monitor, https://github.com/laberning/openrowingmonitor
*/
import { test } from 'uvu'
import * as assert from 'uvu/assert'
import { createWeightedAverager } from './WeightedAverager.js'
test('average should be 0 on empty dataset', () => {
const weightedAverager = createWeightedAverager(10)
assert.is(weightedAverager.getAverage(), 0)
})
test('average of one value is value', () => {
const weightedAverager = createWeightedAverager(10)
weightedAverager.pushValue(13.78)
assert.is(weightedAverager.getAverage(), 13.78)
})
test('average of a and b is (2*b + a) / 3', () => {
const weightedAverager = createWeightedAverager(10)
weightedAverager.pushValue(5) // a
weightedAverager.pushValue(2) // b
assert.is(weightedAverager.getAverage(), 3)
})
test('average should be 0 after reset', () => {
const weightedAverager = createWeightedAverager(10)
weightedAverager.pushValue(5)
weightedAverager.pushValue(2)
weightedAverager.reset()
assert.is(weightedAverager.getAverage(), 0)
})
test('average should be a after pushing a after a reset', () => {
const weightedAverager = createWeightedAverager(10)
weightedAverager.pushValue(5)
weightedAverager.pushValue(2)
weightedAverager.reset()
weightedAverager.pushValue(7)
assert.is(weightedAverager.getAverage(), 7)
})
test.run()