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.
49 lines (42 loc) • 1.86 kB
JavaScript
const { describe, it } = require('node:test');
const assert = require('node:assert');
const extractMetrics = require('../../lib/table/extract-metric');
const RatioColumn = require('../../lib/ratio-column/index');
const Column = require('../../lib/column/index');
describe('extractMetrics', () => {
it('should extract a simple nested metric', () => {
const col = { a: { b: { c: 42 } } };
assert.strictEqual(extractMetrics({ col }, 'a.b.c')[0], 42);
});
it('should return undefined for a non-existent metric', () => {
const col = { a: { b: {} } };
assert.strictEqual(extractMetrics({ col }, 'a.b.c')[0], undefined);
});
it('should convert numeric arrays to RatioColumn', () => {
const col = { values: [1, 2, 3, 4] };
const result = extractMetrics({ col }, 'values')[0];
assert.ok(result instanceof RatioColumn);
assert.deepStrictEqual(result.values, [1, 2, 3, 4]);
});
it('should convert string arrays to Column', () => {
const col = { values: ['red', 'blue', 'green'] };
const result = extractMetrics({ col }, 'values')[0];
assert.ok(result instanceof Column);
assert.deepStrictEqual(result.values, ['red', 'blue', 'green']);
});
it('should handle empty array in extractMetrics', () => {
const col = { values: [] };
const result = extractMetrics({ col }, 'values')[0];
assert.deepStrictEqual(result, []);
});
it('should handle undefined metric', () => {
const col = { a: 42 };
const result = extractMetrics({ col }, 'b');
assert.deepStrictEqual(result, []);
});
it('should handle empty array with zero length', () => {
const col = { values: [] };
const result = extractMetrics({ col }, 'values')[0];
assert.deepStrictEqual(result, []);
});
});