UNPKG

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
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, []); }); });