-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathinterpolatorSplineMonotone.test.js
59 lines (53 loc) · 1.88 KB
/
interpolatorSplineMonotone.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import test from 'node:test';
import assert from 'node:assert';
import {
samples,
interpolatorSplineMonotone,
interpolatorSplineMonotone2,
interpolatorSplineMonotoneClosed
} from '../src/index.js';
test('interpolatorSplineMonotone', t => {
let data = [3, 2.8, 2.5, 1, 0.95, 0.8, 0.5, 0.1, 0.05];
assert.deepEqual(
samples(10).map(interpolatorSplineMonotone(data)),
[
3, 2.826611796982167, 2.6089163237311386, 1.3592592592592596,
0.973593964334705, 0.8984224965706447, 0.7148148148148149,
0.40631001371742104, 0.09005486968449936, 0.049999999999999975
]
);
});
test('interpolatorSplineMonotone2', t => {
let data = [3, 2.8, 2.5, 1, 0.95, 0.8, 0.5, 0.1, 0.05];
assert.deepEqual(
samples(10).map(interpolatorSplineMonotone2(data)),
[
3, 2.82716049382716, 2.6089163237311386, 1.3592592592592596,
0.973593964334705, 0.8984224965706447, 0.7148148148148149,
0.40631001371742104, 0.08950617283950621, 0.04999999999999999
]
);
});
test('interpolatorSplineMonotoneClosed', t => {
let data = [3, 2.8, 2.5, 1, 0.95, 0.8, 0.5, 0.1, 0.05];
assert.deepEqual(
samples(10).map(interpolatorSplineMonotoneClosed(data)),
[
3, 2.8288065843621397, 2.6089163237311386, 1.3592592592592596,
0.973593964334705, 0.8984224965706447, 0.7148148148148149,
0.40631001371742104, 0.08950617283950621, 0.04999999999999999
]
);
});
test('interpolatorSplineMonotone: outside [0, 1] range', t => {
let it = interpolatorSplineMonotone([3, 10, 1]);
assert.deepEqual([-0.5, 1, 1.5, 2].map(it), [10, 1, 10, 91]);
});
test('interpolatorSplineMonotone2: outside [0, 1] range', t => {
let it = interpolatorSplineMonotone2([3, 10, 1]);
assert.deepEqual([-0.5, 1, 1.5, 2].map(it), [-18, 1, -22, -53]);
});
test('interpolatorSplineMonotoneClosed: outside [0, 1] range', t => {
let it = interpolatorSplineMonotoneClosed([3, 10, 1]);
assert.deepEqual([-0.5, 1, 1.5, 2].map(it), [22, 1, 46, 253]);
});