]> gitweb.factorcode.org Git - factor.git/blob - basis/io/monitors/recursive/recursive-tests.factor
io.files: exists? -> file-exists? and rename primitive.
[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 fry ;
5 IN: io.monitors.recursive.tests
6
7 SINGLETON: mock-io-backend
8
9 TUPLE: mock-counter i ;
10
11 SYMBOL: dummy-monitor-created
12 SYMBOL: dummy-monitor-disposed
13
14 TUPLE: dummy-monitor < monitor ;
15
16 M: dummy-monitor dispose*
17     drop dummy-monitor-disposed get [ 1 + ] change-i drop ;
18
19 M: mock-io-backend (monitor)
20     nip
21     over file-exists? [
22         dummy-monitor new-monitor
23         dummy-monitor-created get [ 1 + ] change-i drop
24     ] [
25         "Does not exist" throw
26     ] if ;
27
28 M: mock-io-backend link-info
29     global [ link-info ] with-variables ;
30
31 { } [ 0 mock-counter boa dummy-monitor-created set ] unit-test
32 { } [ 0 mock-counter boa dummy-monitor-disposed set ] unit-test
33
34 { } [
35     mock-io-backend io-backend [
36         "resource:core/io" <mailbox> <recursive-monitor> dispose
37     ] with-variable
38 ] unit-test
39
40 { t } [ dummy-monitor-created get i>> 0 > ] unit-test
41
42 { t } [ dummy-monitor-created get i>> dummy-monitor-disposed get i>> = ] unit-test
43
44 [ "doesnotexist" temp-file delete-tree ] ignore-errors
45
46 [
47     0 mock-counter boa dummy-monitor-created [
48         mock-io-backend io-backend [
49             "doesnotexist" temp-file <mailbox> <recursive-monitor> dispose
50         ] with-variable
51     ] with-variable
52 ] must-fail
53
54 { } [ 0 mock-counter boa dummy-monitor-created set ] unit-test
55 { } [ 0 mock-counter boa dummy-monitor-disposed set ] unit-test
56
57 ! Test that disposing twice is allowed
58 { } [
59     "resource:core/io" <mailbox> <recursive-monitor>
60     [ dispose ] [ dispose ] bi
61 ] unit-test