UNPKG

als-statistics

Version:

Modular JS statistics toolkit for Node.js and the browser: descriptive stats, correlations (Pearson/Spearman/Kendall), t-tests & ANOVA (Student/Welch), reliability (Cronbach’s alpha), regression (linear/logistic), clustering (DBSCAN/HDBSCAN), and table/co

29 lines (25 loc) 1.28 kB
import { describe, it } from 'node:test'; import assert from 'node:assert'; import MovingAverage from '../../lib/descriptive/ma.js'; describe('MovingAverage class', () => { it('computes moving average correctly (naive sample)', () => { const sample = { values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], n: 10 }; const ma = new MovingAverage(sample, 3); assert.deepStrictEqual(ma.result, [2, 3, 4, 5, 6, 7, 8, 9]); }); it('throws error for invalid window size', () => { const sample = { values: [1, 2, 3, 4, 5], n: 5 }; assert.throws(() => new MovingAverage(sample, -1), /windowSize must be a positive integer/); assert.throws(() => new MovingAverage(sample, 6), /window size cant be bigger than sample size/); }); it('computes moving average correctly for bigSample', () => { const largeData = Array.from({ length: 10000 }, (_, i) => i + 1); const sample = { values: largeData, n: largeData.length }; const ma = new MovingAverage(sample, 100); assert.strictEqual(ma.result[0], 50.5); assert.strictEqual(ma.result[1], 51.5); assert.strictEqual(ma.result[2], 52.5); assert.strictEqual(ma.result[3], 53.5); assert.strictEqual(ma.result[4], 54.5); }); });