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

43 lines (36 loc) 1.82 kB
import test from 'node:test'; import assert from 'node:assert/strict'; import Column from '../../lib/column/index.js'; // import { insertAt } from '../../lib/column/insert-at.js'; test('Column.addValue: вставка в начало/середину/конец меняет ссылку', () => { const c = new Column([1, 2, 4], 'C'); const oldRef = c.values; c.addValue(3, 2); // [1,2,3,4] c.addValue(0, 0); // [0,1,2,3,4] c.addValue(5, 5); // [0,1,2,3,4,5] — за пределами → в конец assert.notEqual(c.values, oldRef, 'values должен стать новым массивом'); assert.deepStrictEqual(c.values, [0, 1, 2, 3, 4, 5]); }); test('Column.insertAt: вставка в начало/середину/конец меняет ссылку', () => { const c = new Column([1, 2, 4], 'C'); const oldRef = c.values; c.insertAt(2, 3); // [1,2,3,4] c.insertAt(0, 0); // [0,1,2,3,4] c.insertAt(5, 5); // [0,1,2,3,4,5] — за пределами → в конец assert.notEqual(c.values, oldRef, 'values должен стать новым массивом'); assert.deepStrictEqual(c.values, [0, 1, 2, 3, 4, 5]); }); test('Column.cache: кэш инвалидация на изменениях', () => { const c = new Column([1, 2, 3, 4, 5], 'Z'); const m1 = c.mean; c.values.push(100) c.values = [...c.values]; // console.log(c.values) const m2 = c.mean; assert.notEqual(m1, m2); }); test('insertAt: fallback без toSpliced не мутирует исходный массив', () => { assert.deepEqual(new Column([1, 3]).insertAt(1,2).values, [1, 2, 3]); assert.deepEqual(new Column([10, 30]).insertAt(-1,20).values, [20, 10, 30]); assert.deepEqual(new Column([1]).insertAt(99,2).values, [1,2]); });