@@ -61,78 +61,78 @@ test_put_take ∷ TestEff Unit
61
61
test_put_take = test " put/take" do
62
62
ref ← newRef " "
63
63
var ← makeEmptyVar
64
- putVar var " foo" $ traverse_ \_ →
64
+ _ ← putVar var " foo" $ traverse_ \_ →
65
65
modifyRef ref (_ <> " bar" )
66
- takeVar var $ traverse_ \val →
66
+ _ ← takeVar var $ traverse_ \val →
67
67
modifyRef ref (_ <> val)
68
68
eq " barfoo" <$> readRef ref
69
69
70
70
test_put_read_take ∷ TestEff Unit
71
71
test_put_read_take = test " put/read/take" do
72
72
ref ← newRef " "
73
73
var ← makeEmptyVar
74
- putVar var " foo" $ traverse_ \_ →
74
+ _ ← putVar var " foo" $ traverse_ \_ →
75
75
modifyRef ref (_ <> " bar" )
76
- readVar var $ traverse_ \val →
76
+ _ ← readVar var $ traverse_ \val →
77
77
modifyRef ref (_ <> val <> " baz" )
78
- takeVar var $ traverse_ \val →
78
+ _ ← takeVar var $ traverse_ \val →
79
79
modifyRef ref (_ <> val)
80
80
eq " foobazfoobar" <$> readRef ref
81
81
82
82
test_take_put ∷ TestEff Unit
83
83
test_take_put = test " take/put" do
84
84
ref ← newRef " "
85
85
var ← makeEmptyVar
86
- takeVar var $ traverse_ \val →
86
+ _ ← takeVar var $ traverse_ \val →
87
87
modifyRef ref (_ <> val)
88
- putVar var " foo" $ traverse_ \_ →
88
+ _ ← putVar var " foo" $ traverse_ \_ →
89
89
modifyRef ref (_ <> " bar" )
90
90
eq " foobar" <$> readRef ref
91
91
92
92
test_take_read_put ∷ TestEff Unit
93
93
test_take_read_put = test " take/read/put" do
94
94
ref ← newRef " "
95
95
var ← makeEmptyVar
96
- takeVar var $ traverse_ \val →
96
+ _ ← takeVar var $ traverse_ \val →
97
97
modifyRef ref (_ <> val)
98
- readVar var $ traverse_ \val →
98
+ _ ← readVar var $ traverse_ \val →
99
99
modifyRef ref (_ <> val <> " baz" )
100
- putVar var " foo" $ traverse_ \_ →
100
+ _ ← putVar var " foo" $ traverse_ \_ →
101
101
modifyRef ref (_ <> " bar" )
102
102
eq " foobazfoobar" <$> readRef ref
103
103
104
104
test_read_put_take ∷ TestEff Unit
105
105
test_read_put_take = test " read/put/take" do
106
106
ref ← newRef " "
107
107
var ← makeEmptyVar
108
- readVar var $ traverse_ \val →
108
+ _ ← readVar var $ traverse_ \val →
109
109
modifyRef ref (_ <> val <> " baz" )
110
- putVar var " foo" $ traverse_ \_ →
110
+ _ ← putVar var " foo" $ traverse_ \_ →
111
111
modifyRef ref (_ <> " bar" )
112
- takeVar var $ traverse_ \val → do
112
+ _ ← takeVar var $ traverse_ \val → do
113
113
modifyRef ref (_ <> val)
114
114
eq " foobazbarfoo" <$> readRef ref
115
115
116
116
test_read_take_put ∷ TestEff Unit
117
117
test_read_take_put = test " read/take/put" do
118
118
ref ← newRef " "
119
119
var ← makeEmptyVar
120
- readVar var $ traverse_ \val → do
120
+ _ ← readVar var $ traverse_ \val → do
121
121
modifyRef ref (_ <> val <> " baz" )
122
- takeVar var $ traverse_ \val' →
122
+ void $ takeVar var $ traverse_ \val' →
123
123
modifyRef ref (_ <> val')
124
- putVar var " foo" $ traverse_ \_ →
124
+ _ ← putVar var " foo" $ traverse_ \_ →
125
125
modifyRef ref (_ <> " bar" )
126
126
eq " foobazbarfoo" <$> readRef ref
127
127
128
128
test_kill_full ∷ TestEff Unit
129
129
test_kill_full = test " kill/full" do
130
130
ref ← newRef " "
131
131
var ← makeEmptyVar
132
- putVar var " foo" $ traverse_ \_ →
132
+ _ ← putVar var " foo" $ traverse_ \_ →
133
133
modifyRef ref (_ <> " bar" )
134
134
killVar var (error " Die." )
135
- readVar var case _ of
135
+ _ ← readVar var case _ of
136
136
Left err → modifyRef ref (_ <> message err)
137
137
Right _ → modifyRef ref (_ <> " BAD" )
138
138
eq " barDie." <$> readRef ref
@@ -142,7 +142,7 @@ test_kill_empty = test "kill/empty" do
142
142
ref ← newRef " "
143
143
var ← makeEmptyVar
144
144
killVar var (error " Die." )
145
- readVar var case _ of
145
+ _ ← readVar var case _ of
146
146
Left err → modifyRef ref (_ <> message err)
147
147
Right _ → modifyRef ref (_ <> " BAD" )
148
148
eq " Die." <$> readRef ref
@@ -155,13 +155,40 @@ test_kill_pending = test "kill/pending" do
155
155
cb s = case _ of
156
156
Left err → modifyRef ref (_ <> s <> message err)
157
157
Right _ → modifyRef ref (_ <> " BAD" )
158
- takeVar var (cb " a" )
159
- takeVar var (cb " b" )
160
- readVar var (cb " c" )
161
- readVar var (cb " d" )
158
+ _ ← takeVar var (cb " a" )
159
+ _ ← takeVar var (cb " b" )
160
+ _ ← readVar var (cb " c" )
161
+ _ ← readVar var (cb " d" )
162
162
killVar var (error " -die." )
163
163
eq " c-die.d-die.a-die.b-die." <$> readRef ref
164
164
165
+ test_cancel ∷ TestEff Unit
166
+ test_cancel = test " cancel" do
167
+ ref ← newRef " "
168
+ v1 ← makeVar " "
169
+ c1 ← putVar v1 " a" $ traverse_ \_ → modifyRef ref (_ <> " a" )
170
+ c2 ← putVar v1 " b" $ traverse_ \_ → modifyRef ref (_ <> " b" )
171
+ c3 ← putVar v1 " c" $ traverse_ \_ → modifyRef ref (_ <> " c" )
172
+ c2
173
+ _ ← tryTakeVar v1
174
+ _ ← tryTakeVar v1
175
+ _ ← tryTakeVar v1
176
+ v2 ← makeEmptyVar
177
+ c4 ← takeVar v2 $ traverse_ \_ → modifyRef ref (_ <> " d" )
178
+ c5 ← takeVar v2 $ traverse_ \_ → modifyRef ref (_ <> " e" )
179
+ c6 ← takeVar v2 $ traverse_ \_ → modifyRef ref (_ <> " f" )
180
+ c5
181
+ _ ← tryPutVar v2 " a"
182
+ _ ← tryPutVar v2 " b"
183
+ _ ← tryPutVar v2 " c"
184
+ v3 ← makeEmptyVar
185
+ c7 ← readVar v3 $ traverse_ \_ → modifyRef ref (_ <> " g" )
186
+ c8 ← readVar v3 $ traverse_ \_ → modifyRef ref (_ <> " h" )
187
+ c9 ← readVar v3 $ traverse_ \_ → modifyRef ref (_ <> " i" )
188
+ c8
189
+ _ ← tryPutVar v3 " a"
190
+ eq " acdfgi" <$> readRef ref
191
+
165
192
main ∷ TestEff Unit
166
193
main = do
167
194
test_tryRead_full
@@ -178,3 +205,4 @@ main = do
178
205
test_kill_full
179
206
test_kill_empty
180
207
test_kill_pending
208
+ test_cancel
0 commit comments