]> gitweb.factorcode.org Git - factor.git/blob - basis/concurrency/flags/flags-tests.factor
8402a5663164a5215f39deb5117b5b2b36962517
[factor.git] / basis / concurrency / flags / flags-tests.factor
1 USING: tools.test concurrency.flags concurrency.combinators\r
2 kernel threads locals accessors calendar ;\r
3 IN: concurrency.flags.tests\r
4 \r
5 :: flag-test-1 ( -- val )\r
6     <flag> :> f\r
7     [ f raise-flag ] "Flag test" spawn drop\r
8     f lower-flag\r
9     f value>> ;\r
10 \r
11 [ f ] [ flag-test-1 ] unit-test\r
12 \r
13 :: flag-test-2 ( -- ? )\r
14     <flag> :> f\r
15     [ 1 seconds sleep f raise-flag ] "Flag test" spawn drop\r
16     f lower-flag\r
17     f value>> ;\r
18 \r
19 [ f ] [ flag-test-2 ] unit-test\r
20 \r
21 :: flag-test-3 ( -- val )\r
22     <flag> :> f\r
23     f raise-flag\r
24     f value>> ;\r
25 \r
26 [ t ] [ flag-test-3 ] unit-test\r
27 \r
28 :: flag-test-4 ( -- val )\r
29     <flag> :> f\r
30     [ f raise-flag ] "Flag test" spawn drop\r
31     f wait-for-flag\r
32     f value>> ;\r
33 \r
34 [ t ] [ flag-test-4 ] unit-test\r
35 \r
36 :: flag-test-5 ( -- val )\r
37     <flag> :> f\r
38     [ 1 seconds sleep f raise-flag ] "Flag test" spawn drop\r
39     f wait-for-flag\r
40     f value>> ;\r
41 \r
42 [ t ] [ flag-test-5 ] unit-test\r
43 \r
44 [ ] [\r
45     { 1 2 } <flag>\r
46     [ [ 1 seconds sleep raise-flag ] curry "Flag test" spawn drop ]\r
47     [ [ wait-for-flag drop ] curry parallel-each ] bi\r
48 ] unit-test\r