Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / concurrency / mailboxes / mailboxes-tests.factor
blob64971eeb77c95f7b45322d4987efd1bd4038a9d2
1 IN: concurrency.mailboxes.tests\r
2 USING: concurrency.mailboxes concurrency.count-downs vectors\r
3 sequences threads tools.test math kernel strings namespaces\r
4 continuations calendar destructors ;\r
5 \r
6 { 1 1 } [ [ integer? ] mailbox-get? ] must-infer-as\r
7 \r
8 [ V{ 1 2 3 } ] [\r
9     0 <vector>\r
10     <mailbox>\r
11     [ mailbox-get swap push ] in-thread\r
12     [ mailbox-get swap push ] in-thread\r
13     [ mailbox-get swap push ] in-thread\r
14     1 over mailbox-put\r
15     2 over mailbox-put\r
16     3 swap mailbox-put\r
17 ] unit-test\r
19 [ V{ 1 2 3 } ] [\r
20     0 <vector>\r
21     <mailbox>\r
22     [ [ integer? ] mailbox-get? swap push ] in-thread\r
23     [ [ integer? ] mailbox-get? swap push ] in-thread\r
24     [ [ integer? ] mailbox-get? swap push ] in-thread\r
25     1 over mailbox-put\r
26     2 over mailbox-put\r
27     3 swap mailbox-put\r
28 ] unit-test\r
30 [ V{ 1 "junk" 3 "junk2" } [ 456 ] ] [\r
31     0 <vector>\r
32     <mailbox>\r
33     [ [ integer? ] mailbox-get? swap push ] in-thread\r
34     [ [ integer? ] mailbox-get? swap push ] in-thread\r
35     [ [ string? ] mailbox-get? swap push ] in-thread\r
36     [ [ string? ] mailbox-get? swap push ] in-thread\r
37     1 over mailbox-put\r
38     "junk" over mailbox-put\r
39     [ 456 ] over mailbox-put\r
40     3 over mailbox-put\r
41     "junk2" over mailbox-put\r
42     mailbox-get\r
43 ] unit-test\r
45 <mailbox> "m" set\r
47 1 <count-down> "c" set\r
48 1 <count-down> "d" set\r
50 [\r
51     "c" get await\r
52     [ "m" get mailbox-get drop ]\r
53     [ drop "d" get count-down ] recover\r
54 ] "Mailbox close test" spawn drop\r
56 [ ] [ "c" get count-down ] unit-test\r
57 [ ] [ "m" get dispose ] unit-test\r
58 [ ] [ "d" get 5 seconds await-timeout ] unit-test\r
60 [ ] [ "m" get dispose ] unit-test\r
62 <mailbox> "m" set\r
64 1 <count-down> "c" set\r
65 1 <count-down> "d" set\r
67 [\r
68     "c" get await\r
69     "m" get wait-for-close\r
70     "d" get count-down\r
71 ] "Mailbox close test" spawn drop\r
73 [ ] [ "c" get count-down ] unit-test\r
74 [ ] [ "m" get dispose ] unit-test\r
75 [ ] [ "d" get 5 seconds await-timeout ] unit-test\r
77 [ ] [ "m" get dispose ] unit-test\r