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

67 lines (59 loc) 2.85 kB
import { it, describe } from 'node:test'; import assert from 'node:assert/strict'; import SimpleTable from '../../lib/table/simple-table/index.js'; describe('SimpleTable tests', () => { it('SimpleTable.clone: выбор колонок, независимость копии', () => { const t = new SimpleTable({ A: [1, 2, 3], B: [10, 20, 30], C: [100, 200, 300], }); const clone = t.clone('cloned', ['A', 'C']); assert.deepEqual(clone.colNames.sort(), ['A', 'C'].sort()); // независимость: t.columns.A[0] = 999; assert.equal(clone.columns.A.values[0], 1); }); it('SimpleTable.split: разрез по меткам (если поддерживается)', () => { const t = new SimpleTable({ V: [1, 2, 3, 4, 5] }, { labels: ['odd', 'even', 'odd', 'even', 'odd'] }); const parts = t.split?.({ by: 'labels' }); if (parts) { assert.ok(parts['odd'].columns.V.length > 0); assert.ok(parts['even'].columns.V.length > 0); } }); it('htmlTable: filter-keys + transposeValues', () => { const t = new SimpleTable({ alpha: [1, 2], beta: [3, 4], gamma: [5, 6], }); const colFilter = [/^a/i, 'beta', '-alpha'] // ожидаем только beta const html = t.htmlTable(colFilter, { transposeValues: true, }); if (html) { assert.ok(typeof html === 'string'); assert.ok(html.includes('<table')); assert.ok(html.toLowerCase().includes('beta')); assert.ok(!html.toLowerCase().includes('alpha')); } }); it('subset по именам колонок и независимость', () => { const t = new SimpleTable({ gender: [1, 2], age: [10, 20], income: [100, 200] }); const t2 = t.clone('new', ['gender', 'age']); t.deleteColumn('income'); t.addRow([3, 30]); assert.deepStrictEqual(t.colNames, ['gender', 'age']); assert.deepStrictEqual(t2.colNames, ['gender', 'age']); // состав одинаковый assert.strictEqual(t.n, 3); assert.strictEqual(t2.n, 2); // но данные независимы }); }); describe('transpose/rows/htmlTable', () => { it('rows(true) возвращает объект с ключами имён колонок', () => { const t = new SimpleTable({ A:[1,2], B:[10,20] }); const rows = t.rows(true); // должно отдать строки, где ключи — индексы 0..n-1? или имена колонок как поля // Мы проверим совместимость с htmlTable: оно не должно падать и должно содержать 2 строки. const html = t.htmlTable([], { header: 'demo' }); assert.ok(html.includes('demo')); }); });