/
flatten.jl
50 lines (37 loc) · 899 Bytes
/
flatten.jl
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
using Base.Test
using Reactive
facts("Flatten") do
a = Signal(0)
b = Signal(1)
c = Signal(a)
d = flatten(c)
cnt = foldp((x, y) -> x+1, 0, d)
context("Signal{Signal} -> flat Signal") do
# Flatten implies:
@fact value(c) --> a
@fact value(d) --> value(a)
end
context("Initial update count") do
@fact value(cnt) --> 0
end
context("Current signal updates") do
push!(a, 2)
step()
@fact value(cnt) --> 1
@fact value(d) --> value(a)
end
context("Signal swap") do
push!(c, b)
step()
@fact value(cnt) --> 2
@fact value(d) --> value(b)
push!(a, 3)
step()
@fact value(cnt) --> 2
@fact value(d) --> value(b)
push!(b, 3)
step()
@fact value(cnt) --> 3
@fact value(d) --> value(b)
end
end