UNPKG

moving-averages-js

Version:

The FinTech utility collections of simple, cumulative, and exponential moving averages.

123 lines (112 loc) 2.07 kB
import { runner, type } from "../testHelper/runner"; const a = [1, 2, 3, 4, 5]; const dmaa50 = [0, 1.5, 2.25, 3.125, 4.0625]; const dmaa51 = [1, 1.5, 2.25, 3.125, 4.0625]; const CASES = {}; CASES.dma = [ [[a, 1, 1], a], [[a, 2, 1], Array(5)], [[a, 0.5, 1], dmaa50], [[a, 0.5], dmaa51], [ [ [1, 2, 3, 4, 5], [0.1, 0.2, 0.1, 0.1, 0.05], ], [1, 1.2, 1.38, 1.642, 1.8099], ], [ [ [, 2, 3, 4, 5], [0.1, 0.2, 0.1, 0.1, 0.05], ], [, 2, 2.1, 2.29, 2.4255], ], [ [ [, 2, 3, 4, , 5], [0.1, 0.2, 0.1, 0.1, 0.1, 0.05], ], [, 2, 2.1, 2.29, 2.29, 2.4255], ], [ [[1, 2, , 3, 4, 5], 0.1, 1], [0, 1.1, 1.1, 1.29, 1.561, 1.9049], ], ]; CASES.ma = [ [[a, 1], a], [[a, 0.5], a], [[a], 3], [[a, 6], Array(5)], [ [a, 2], [, 1.5, 2.5, 3.5, 4.5], ], [ [[1, , 2, , 3, 4, 5], 2], [, 0.5, 1, 1, 1.5, 3.5, 4.5], ], [ [[, 1, , 2, , 3, 4, 5], 2], [, , 0.5, 1, 1, 1.5, 3.5, 4.5], ], ]; CASES.wma = [ [ [[, 1, , 2, , 3, 4, 5], 2], [ , 0.6666666666666666, 0.3333333333333333, 1.3333333333333333, 0.6666666666666666, 2, 3.6666666666666665, 4.666666666666667, ], ], [ [[1, , 2, , 3, 4, 5], 2], [ , 0.3333333333333333, 1.3333333333333333, 0.6666666666666666, 2, 3.6666666666666665, 4.666666666666667, ], ], [ [a, 2], [ , 1.6666666666666667, 2.6666666666666665, 3.6666666666666665, 4.666666666666667, ], ], [[a, 0], a], [[a, 6], Array(5)], ]; CASES.sma = [[[a, 2], dmaa50]]; CASES.ema = [[[a, 3], dmaa51]]; function setNaN(a) { let i = 0; const length = a.length; for (; i < length; i++) { if (a[i] === undefined) { a[i] = NaN; } } return a; } Object.keys(CASES).forEach((t) => { CASES[t].map(type(t)).forEach(runner()); // Test about const C = CASES[t].slice(); C[0] = setNaN(C[0].slice()); C.map(type(t)).forEach(runner("test NaN: ")); });