UNPKG

als-statistics

Version:

A powerful and lightweight JavaScript library for descriptive statistics, regression, clustering, outlier detection, and noise analysis using a flexible table/column architecture.

29 lines (25 loc) 1.3 kB
const { describe, it } = require('node:test'); const assert = require('node:assert'); const MovingAverage = require('../../../lib/ratio-column/instruments/ma'); 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); }); });