]> gitweb.factorcode.org Git - factor.git/blob - basis/concurrency/mailboxes/mailboxes-tests.factor
Create basis vocab root
[factor.git] / basis / concurrency / mailboxes / mailboxes-tests.factor
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 [ V{ 1 2 3 } ] [\r
7     0 <vector>\r
8     <mailbox>\r
9     [ mailbox-get swap push ] in-thread\r
10     [ mailbox-get swap push ] in-thread\r
11     [ mailbox-get swap push ] in-thread\r
12     1 over mailbox-put\r
13     2 over mailbox-put\r
14     3 swap mailbox-put\r
15 ] unit-test\r
16 \r
17 [ V{ 1 2 3 } ] [\r
18     0 <vector>\r
19     <mailbox>\r
20     [ [ integer? ] mailbox-get? swap push ] in-thread\r
21     [ [ integer? ] mailbox-get? swap push ] in-thread\r
22     [ [ integer? ] mailbox-get? swap push ] in-thread\r
23     1 over mailbox-put\r
24     2 over mailbox-put\r
25     3 swap mailbox-put\r
26 ] unit-test\r
27 \r
28 [ V{ 1 "junk" 3 "junk2" } [ 456 ] ] [\r
29     0 <vector>\r
30     <mailbox>\r
31     [ [ integer? ] mailbox-get? swap push ] in-thread\r
32     [ [ integer? ] mailbox-get? swap push ] in-thread\r
33     [ [ string? ] mailbox-get? swap push ] in-thread\r
34     [ [ string? ] mailbox-get? swap push ] in-thread\r
35     1 over mailbox-put\r
36     "junk" over mailbox-put\r
37     [ 456 ] over mailbox-put\r
38     3 over mailbox-put\r
39     "junk2" over mailbox-put\r
40     mailbox-get\r
41 ] unit-test\r
42 \r
43 <mailbox> "m" set\r
44 \r
45 1 <count-down> "c" set\r
46 1 <count-down> "d" set\r
47 \r
48 [\r
49     "c" get await\r
50     [ "m" get mailbox-get drop ]\r
51     [ drop "d" get count-down ] recover\r
52 ] "Mailbox close test" spawn drop\r
53 \r
54 [ ] [ "c" get count-down ] unit-test\r
55 [ ] [ "m" get dispose ] unit-test\r
56 [ ] [ "d" get 5 seconds await-timeout ] unit-test\r
57 \r
58 [ ] [ "m" get dispose ] unit-test\r
59 \r
60 <mailbox> "m" set\r
61 \r
62 1 <count-down> "c" set\r
63 1 <count-down> "d" set\r
64 \r
65 [\r
66     "c" get await\r
67     "m" get wait-for-close\r
68     "d" get count-down\r
69 ] "Mailbox close test" spawn drop\r
70 \r
71 [ ] [ "c" get count-down ] unit-test\r
72 [ ] [ "m" get dispose ] unit-test\r
73 [ ] [ "d" get 5 seconds await-timeout ] unit-test\r
74 \r
75 [ ] [ "m" get dispose ] unit-test\r