UNPKG

@uppy/utils

Version:

Shared utility functions for Uppy Core and plugins maintained by the Uppy team.

28 lines (27 loc) 1.23 kB
import { describe, expect, it } from 'vitest'; import emaFilter from './emaFilter.js'; describe('emaFilter', () => { it('should calculate the exponential average', () => { expect(emaFilter(1, 0, 0, 1)).toBe(1); expect(emaFilter(1, 0, 2, 0)).toBe(0); expect(emaFilter(1, 0, 2, 2)).toBeCloseTo(0.5); expect(emaFilter(1, 0, 2, 4)).toBeCloseTo(0.75); expect(emaFilter(1, 0, 2, 6)).toBeCloseTo(0.875); expect(emaFilter(0, 1, 2, 2)).toBeCloseTo(0.5); expect(emaFilter(0, 1, 2, 4)).toBeCloseTo(0.25); expect(emaFilter(0, 1, 2, 6)).toBeCloseTo(0.125); expect(emaFilter(0.5, 1, 2, 4)).toBeCloseTo(0.625); expect(emaFilter(1, 0.5, 2, 4)).toBeCloseTo(0.875); }); it('should behave like exponential moving average', () => { const firstValue = 1; const newValue = 10; const step = 0.618033989; const halfLife = 2; let lastFilteredValue = firstValue; for (let i = 0; i < 10; ++i) { lastFilteredValue = emaFilter(newValue, lastFilteredValue, halfLife, step); expect(lastFilteredValue).toBeCloseTo(emaFilter(newValue, firstValue, halfLife, step * (i + 1))); } }); });