-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbasic.test.ts
65 lines (58 loc) · 1.5 KB
/
basic.test.ts
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
60
61
62
63
64
65
import {input, read} from '.';
test('basic signal', () => {
const a = input(1);
const double = a.read(a => a * 2);
expect(double.value).toBe(2);
a.value = 4;
expect(double.value).toBe(8);
a.value = 6;
expect(double.value).toBe(12);
});
test('basic pass-through', () => {
const a = input(1);
const b = a.read(x => x);
expect(b.value).toBe(1);
});
test('basic return signal', () => {
const a = input(1);
const b = a.read(_ => a);
expect(b.value).toBe(1);
});
test('nested readers', () => {
const a = input(1);
const b = input(2);
const sum = a.read(a => b.read(b => a + b));
expect(sum.value).toBe(3);
a.value = 5;
expect(sum.value).toBe(7);
b.value = 10;
expect(sum.value).toBe(15);
});
test('read returning signal', () => {
const a = input(1);
const b = input(2);
const c = input(false);
const res = c.read(c => c ? a : b);
expect(res.value).toBe(2);
c.value = true;
expect(res.value).toBe(1);
});
test('multi read returning value', () => {
const a = input(1);
const b = input(2);
const c = read(a, b, (a, b) => a + b);
expect(c.value).toBe(3);
a.value = 5;
expect(c.value).toBe(7);
b.value = 10;
expect(c.value).toBe(15);
});
test('multi read returning signal', () => {
const a = input(1);
const b = input(2);
const c = input(false);
const res = read(a, b, c, (a, b, c) => c ? a : b);
expect(res.value).toBe(2);
c.value = true;
expect(res.value).toBe(1);
});