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
JavaScript
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);
});
});