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.

78 lines (70 loc) 3.04 kB
const { describe, it } = require('node:test'); const assert = require('node:assert'); const ColumnFilter = require('../../lib/table/filter'); describe('ColumnFilter', () => { it('should correctly apply filters', () => { const filter = new ColumnFilter(); filter.filterRows([2, 3, 4]); assert.deepStrictEqual(filter.filtered, { 2: true, 3: true, 4: true }); assert.strictEqual(filter.count, 3); assert.strictEqual(filter.maxFilter, 4); assert.strictEqual(filter.filterState, 1); }); it('should correctly clear filters', () => { const filter = new ColumnFilter(); filter.filterRows([1, 2, 3, 4, 5]); filter.clearRowsFilters([2, 3, 4]); assert.deepStrictEqual(filter.filtered, { 1: true, 5: true }); assert.strictEqual(filter.count, 2); assert.strictEqual(filter.maxFilter, 5); assert.strictEqual(filter.filterState, 2); }); it('should reset maxFilter when clearing last filter', () => { const filter = new ColumnFilter(); filter.filterRows([1, 2, 3]); filter.clearRowsFilters([1, 2, 3]); assert.deepStrictEqual(filter.filtered, {}); assert.strictEqual(filter.count, 0); assert.strictEqual(filter.maxFilter, 0); }); it('should not increment filterState if no new filters are added', () => { const filter = new ColumnFilter(); filter.filterRows([2, 3, 4]); const prevState = filter.filterState; filter.filterRows([2, 3, 4]); assert.strictEqual(filter.filterState, prevState); }); it('should not change filterState if clearing non-existing filters', () => { const filter = new ColumnFilter(); filter.filterRows([2, 3, 4]); const prevState = filter.filterState; filter.clearRowsFilters([6, 7, 8]); assert.strictEqual(filter.filterState, prevState); }); it('should clear all filters completely', () => { const filter = new ColumnFilter(); filter.filterRows([1, 2, 3, 4]); filter.clearAllRowsFilters(); assert.deepStrictEqual(filter.filtered, {}); assert.strictEqual(filter.count, 0); assert.strictEqual(filter.maxFilter, 0); assert.strictEqual(filter.filterState, 2); }); it('should initialize filter state with init', () => { const filter = new ColumnFilter(); filter.filterRows([1, 2, 3]); filter.init(); assert.deepStrictEqual(filter.filtered, {}); assert.strictEqual(filter.count, 0); assert.strictEqual(filter.maxFilter, 0); assert.strictEqual(filter.filterState, 1); // filterState не сбрасывается в init }); it('should reset state with init', () => { const filter = new ColumnFilter(); filter.filterRows([1, 2]); filter.init(); assert.strictEqual(filter.count, 0); assert.strictEqual(filter.maxFilter, 0); assert.strictEqual(filter.filterState, 1); // Не увеличивается в init }); });