]> gitweb.factorcode.org Git - factor.git/blob - basis/timers/timers-tests.factor
The use of factor.com does not fix the issue with missing stdout on Github
[factor.git] / basis / timers / timers-tests.factor
1 USING: accessors calendar combinators concurrency.count-downs
2 concurrency.promises fry kernel math math.order sequences
3 threads timers tools.test tools.time ;
4
5 { } [
6     1 <count-down>
7     { f } clone 2dup
8     [ first stop-timer count-down ] 2curry 1 seconds later
9     swap set-first
10     await
11 ] unit-test
12
13 { } [
14     self [ resume ] curry instant later drop
15     "test" suspend drop
16 ] unit-test
17
18 { t } [
19     [
20         <promise>
21         [ '[ t _ fulfill ] 2 seconds later drop ]
22         [ 5 seconds ?promise-timeout drop ] bi
23     ] benchmark 1,500,000,000 2,500,000,000 between?
24 ] unit-test
25
26 { { 3 } } [
27     { 3 } dup
28     '[ 4 _ set-first ] 2 seconds later
29     1/2 seconds sleep
30     stop-timer
31 ] unit-test
32
33 { { 1 } } [
34     { 0 }
35     dup '[ 0 _ [ 1 + ] change-nth ] 3 seconds later
36     [ stop-timer ] [ start-timer ] bi
37     4 seconds sleep
38 ] unit-test
39
40 { { 0 } { 1 } } [
41     { 0 }
42     dup '[ 3 seconds sleep 1 _ set-first ] 1 seconds later
43     2 seconds sleep stop-timer
44     1/2 seconds sleep [ clone ] keep
45     2 seconds sleep clone
46 ] unit-test
47
48 { { 0 } } [
49     { 0 }
50     dup '[ 1 _ set-first ] 300 milliseconds later
51     150 milliseconds sleep
52     [ restart-timer ] [ 200 milliseconds sleep stop-timer ] bi
53 ] unit-test
54
55 { { 1 } } [
56     { 0 }
57     dup '[ 0 _ [ 1 + ] change-nth ] 200 milliseconds later
58     100 milliseconds sleep restart-timer 300 milliseconds sleep
59 ] unit-test
60
61 { { 4 } } [
62     { 0 }
63     dup '[ 0 _ [ 1 + ] change-nth ] 300 milliseconds 300 milliseconds
64     <timer> dup start-timer
65     700 milliseconds sleep dup restart-timer
66     700 milliseconds sleep stop-timer 500 milliseconds sleep
67 ] unit-test
68
69 { { 2 } } [
70     { 0 }
71     dup '[ 0 _ [ 1 + ] change-nth ] 300 milliseconds f <timer>
72     dup restart-timer
73     700 milliseconds sleep
74     dup restart-timer drop
75     700 milliseconds sleep
76 ] unit-test
77
78
79 { { 1 } t t t t } [
80     { 0 }
81     dup '[ 0 _ [ 1 + ] change-nth ] 300 milliseconds f <timer>
82     dup start-timer [ thread>> ] keep {
83         [ dup restart-timer thread>> eq? ]
84         [ dup restart-timer thread>> eq? ]
85         [ dup restart-timer thread>> eq? ]
86         [ dup restart-timer thread>> eq? ]
87     } 2cleave
88     700 milliseconds sleep
89 ] unit-test
90
91 [
92     [ ] 1 seconds later start-timer
93 ] [ timer-already-started? ] must-fail-with