-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtests.coffee
147 lines (88 loc) · 2.21 KB
/
tests.coffee
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
class BasicTestCase extends ClassyTestCase
@testName: 'computed-field - basic'
testBasic: ->
foo = new ComputedField ->
42
@assertEqual foo(), 42
@assertInstanceOf foo, ComputedField
@assertEqual foo.constructor, ComputedField
@assertTrue _.isFunction foo
@assertEqual foo.apply(), 42
@assertEqual foo.call(), 42
@assertEqual "#{foo}", 'ComputedField{42}'
testReactive: ->
internal = new ReactiveVar 42
foo = new ComputedField ->
internal.get()
changes = []
handle = Tracker.autorun (computation) =>
changes.push foo()
internal.set 43
Tracker.flush()
internal.set 44
Tracker.flush()
internal.set 44
Tracker.flush()
internal.set 43
Tracker.flush()
@assertEqual changes, [42, 43, 44, 43]
handle.stop()
testNested: ->
internal = new ReactiveVar 42
outside = null
changes = []
handle = Tracker.autorun (computation) =>
outside = new ComputedField ->
internal.get()
changes.push outside()
internal.set 43
Tracker.flush()
handle.stop()
Tracker.flush()
internal.set 44
Tracker.flush()
internal.set 45
# Force reading of the value.
@assertEqual outside(), 45
Tracker.flush()
@assertEqual changes, [42, 43]
outside.stop()
testDontStop: ->
internal = new ReactiveVar 42
run = []
foo = new ComputedField ->
value = internal.get()
run.push value
value
foo()
@assertTrue foo._isRunning()
Tracker.flush()
@assertFalse foo._isRunning()
foo()
@assertTrue foo._isRunning()
Tracker.flush()
@assertFalse foo._isRunning()
foo()
@assertTrue foo._isRunning()
@assertEqual run, [42, 42, 42]
foo.stop()
run = []
foo = new ComputedField ->
value = internal.get()
run.push value
value
,
true
foo()
@assertTrue foo._isRunning()
Tracker.flush()
@assertTrue foo._isRunning()
foo()
@assertTrue foo._isRunning()
Tracker.flush()
@assertTrue foo._isRunning()
foo()
@assertTrue foo._isRunning()
@assertEqual run, [42]
foo.stop()
ClassyTestCase.addTest new BasicTestCase()