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.
38 lines (32 loc) • 1.48 kB
JavaScript
const { describe, it } = require('node:test');
const assert = require('node:assert');
const Column = require('../../lib/column/index');
describe('Column class (ordinal-like)', () => {
it('should create a column with valid values', () => {
const column = new Column([3, 1, 4, 2]);
assert.deepStrictEqual(column.values, [3, 1, 4, 2]);
});
it('should sort numeric values correctly', () => {
const column = new Column([3, 1, 4, 2]);
assert.deepStrictEqual(column.sorted, [1, 2, 3, 4]);
});
it('should sort string values correctly', () => {
const column = new Column(['Bronze', 'Gold', 'Silver', 'Platinum']);
assert.deepStrictEqual(column.sorted, ['Bronze', 'Gold', 'Platinum', 'Silver']);
});
it('should calculate percentile correctly', () => {
const column = new Column([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]);
assert.strictEqual(column.percentile(50), 50);
assert.strictEqual(column.percentile(25), 30);
assert.strictEqual(column.percentile(75), 70);
});
it('should return correct median', () => {
const column = new Column([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]);
assert.strictEqual(column.median, 50);
});
it('should return correct quartiles', () => {
const column = new Column([10, 20, 30, 40, 50, 60, 70, 80, 90, 100]);
assert.strictEqual(column.q1, 30);
assert.strictEqual(column.q3, 70);
});
});