Skip to content

Commit 08da5f9

Browse files
committed
feat: ignore empty filters
1 parent 70f4ade commit 08da5f9

File tree

2 files changed

+70
-36
lines changed

2 files changed

+70
-36
lines changed

src/__tests__/filterXY.test.ts

Lines changed: 65 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,78 @@
1-
import { describe, expect, it } from 'vitest';
1+
import { expect, test } from 'vitest';
22

33
import type { FilterXYType } from '../FilterXYType.ts';
44
import linear from '../filters/__tests__/data/linear.ts';
55
import { filterXY } from '../index.ts';
66

7-
describe('filterXY', () => {
8-
it('filters', () => {
9-
const filters: FilterXYType[] = [
10-
{ name: 'centerMedian' },
11-
{ name: 'fromTo', options: { from: 2, to: 8 } },
12-
];
7+
test('filters', () => {
8+
const filters: FilterXYType[] = [
9+
{ name: 'centerMedian' },
10+
{ name: 'fromTo', options: { from: 2, to: 8 } },
11+
];
1312

14-
const result = filterXY(linear, filters);
13+
const result = filterXY(linear, filters);
1514

16-
expect(result.data).toStrictEqual({
17-
x: Float64Array.from([2, 3, 4, 5, 6, 7, 8]),
18-
y: Float64Array.from([-1, 0, 1, 2, 1, 0, -1]),
19-
});
15+
expect(result.data).toStrictEqual({
16+
x: Float64Array.from([2, 3, 4, 5, 6, 7, 8]),
17+
y: Float64Array.from([-1, 0, 1, 2, 1, 0, -1]),
2018
});
19+
});
20+
21+
test('reverseIfNeeded, not needed', () => {
22+
const filters: FilterXYType[] = [{ name: 'reverseIfNeeded' }];
23+
const data = {
24+
x: Float64Array.from([1, 2, 3, 4, 5]),
25+
y: Float64Array.from([1, 2, 3, 4, 1]),
26+
};
27+
const result = filterXY(data, filters);
2128

22-
it('reverseIfNeeded, not needed', () => {
23-
const filters: FilterXYType[] = [{ name: 'reverseIfNeeded' }];
24-
const data = {
25-
x: Float64Array.from([1, 2, 3, 4, 5]),
26-
y: Float64Array.from([1, 2, 3, 4, 1]),
27-
};
28-
const result = filterXY(data, filters);
29-
30-
expect(result.data).toStrictEqual({
31-
x: Float64Array.from([1, 2, 3, 4, 5]),
32-
y: Float64Array.from([1, 2, 3, 4, 1]),
33-
});
29+
expect(result.data).toStrictEqual({
30+
x: Float64Array.from([1, 2, 3, 4, 5]),
31+
y: Float64Array.from([1, 2, 3, 4, 1]),
3432
});
33+
});
3534

36-
it('reverseIfNeeded, needed', () => {
37-
const filters: FilterXYType[] = [{ name: 'reverseIfNeeded' }];
38-
const data = {
39-
x: Float64Array.from([5, 4, 3, 2, 1]),
40-
y: Float64Array.from([1, 2, 3, 4, 1]),
41-
};
42-
const result = filterXY(data, filters);
43-
44-
expect(result.data).toStrictEqual({
45-
x: Float64Array.from([1, 2, 3, 4, 5]),
46-
y: Float64Array.from([1, 4, 3, 2, 1]),
47-
});
35+
test('reverseIfNeeded, needed', () => {
36+
const filters: FilterXYType[] = [{ name: 'reverseIfNeeded' }];
37+
const data = {
38+
x: Float64Array.from([5, 4, 3, 2, 1]),
39+
y: Float64Array.from([1, 2, 3, 4, 1]),
40+
};
41+
const result = filterXY(data, filters);
42+
43+
expect(result.data).toStrictEqual({
44+
x: Float64Array.from([1, 2, 3, 4, 5]),
45+
y: Float64Array.from([1, 4, 3, 2, 1]),
4846
});
4947
});
48+
49+
test('reverseIfNeeded, with empty filter', () => {
50+
const filters: FilterXYType[] = [
51+
// @ts-expect-error testing empty filter
52+
{ name: '' },
53+
// @ts-expect-error testing empty filter
54+
{},
55+
{ name: 'reverseIfNeeded' },
56+
];
57+
const data = {
58+
x: Float64Array.from([5, 4, 3, 2, 1]),
59+
y: Float64Array.from([1, 2, 3, 4, 1]),
60+
};
61+
const result = filterXY(data, filters);
62+
63+
expect(result.data).toStrictEqual({
64+
x: Float64Array.from([1, 2, 3, 4, 5]),
65+
y: Float64Array.from([1, 4, 3, 2, 1]),
66+
});
67+
});
68+
69+
test('test unknown filter', () => {
70+
// @ts-expect-error testing error
71+
const filters: FilterXYType[] = [{ name: 'abc' }];
72+
const data = {
73+
x: Float64Array.from([5, 4, 3, 2, 1]),
74+
y: Float64Array.from([1, 2, 3, 4, 1]),
75+
};
76+
77+
expect(() => filterXY(data, filters)).toThrow('Unknown filter: abc');
78+
});

src/filterXY.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ export function filterXY(data: DataXY, filters: FilterXYType[]) {
2020
for (const filter of filters) {
2121
const start = Date.now();
2222

23+
if (!filter.name) {
24+
// we ignore empty filter names
25+
continue;
26+
}
27+
2328
const filterFct = Filters[filter.name];
2429
if (!filterFct) {
2530
throw new Error(`Unknown filter: ${filter.name}`);

0 commit comments

Comments
 (0)