]> gitweb.factorcode.org Git - factor.git/blob - basis/io/monitors/recursive/recursive-tests.factor
ace93ace4434615e08e73ef569baa642a1793354
[factor.git] / basis / io / monitors / recursive / recursive-tests.factor
1 USING: accessors math kernel namespaces continuations
2 io.files io.monitors io.monitors.recursive io.backend
3 concurrency.mailboxes tools.test destructors io.files.info
4 io.pathnames io.files.temp io.directories.hierarchy ;
5 IN: io.monitors.recursive.tests
6
7 \ pump-thread must-infer
8
9 SINGLETON: mock-io-backend
10
11 TUPLE: counter i ;
12
13 SYMBOL: dummy-monitor-created
14 SYMBOL: dummy-monitor-disposed
15
16 TUPLE: dummy-monitor < monitor ;
17
18 M: dummy-monitor dispose
19     drop dummy-monitor-disposed get [ 1+ ] change-i drop ;
20
21 M: mock-io-backend (monitor)
22     nip
23     over exists? [
24         dummy-monitor new-monitor
25         dummy-monitor-created get [ 1+ ] change-i drop
26     ] [
27         "Does not exist" throw
28     ] if ;
29
30 M: mock-io-backend link-info
31     global [ link-info ] bind ;
32
33 [ ] [ 0 counter boa dummy-monitor-created set ] unit-test
34 [ ] [ 0 counter boa dummy-monitor-disposed set ] unit-test
35
36 [ ] [
37     mock-io-backend io-backend [
38         "" resource-path <mailbox> <recursive-monitor> dispose
39     ] with-variable
40 ] unit-test
41
42 [ t ] [ dummy-monitor-created get i>> 0 > ] unit-test
43
44 [ t ] [ dummy-monitor-created get i>> dummy-monitor-disposed get i>> = ] unit-test
45
46 [ "doesnotexist" temp-file delete-tree ] ignore-errors
47
48 [
49     mock-io-backend io-backend [
50         "doesnotexist" temp-file <mailbox> <recursive-monitor> dispose
51     ] with-variable
52 ] must-fail
53
54 [ ] [
55     mock-io-backend io-backend [
56         "" resource-path <mailbox> <recursive-monitor>
57         [ dispose ] [ dispose ] bi
58     ] with-variable
59 ] unit-test