2010-05-21 21:03:32 -04:00
|
|
|
USING: alarms alarms.private calendar concurrency.count-downs
|
|
|
|
|
concurrency.promises fry kernel math math.order sequences
|
|
|
|
|
threads tools.test tools.time ;
|
2009-08-13 20:21:44 -04:00
|
|
|
IN: alarms.tests
|
2008-03-03 03:22:27 -05:00
|
|
|
|
|
|
|
|
[ ] [
|
|
|
|
|
1 <count-down>
|
|
|
|
|
{ f } clone 2dup
|
2010-05-21 21:03:32 -04:00
|
|
|
[ first stop-alarm count-down ] 2curry 1 seconds later
|
2008-03-03 03:22:27 -05:00
|
|
|
swap set-first
|
|
|
|
|
await
|
|
|
|
|
] unit-test
|
|
|
|
|
|
|
|
|
|
[ ] [
|
2010-03-27 12:03:06 -04:00
|
|
|
self [ resume ] curry instant later drop
|
|
|
|
|
"test" suspend drop
|
2008-03-03 03:22:27 -05:00
|
|
|
] unit-test
|
2010-05-21 19:09:01 -04:00
|
|
|
|
|
|
|
|
[ t ] [
|
|
|
|
|
[
|
|
|
|
|
<promise>
|
2010-05-21 21:03:32 -04:00
|
|
|
[ '[ t _ fulfill ] 2 seconds later drop ]
|
|
|
|
|
[ 5 seconds ?promise-timeout drop ] bi
|
|
|
|
|
] benchmark 1,500,000,000 2,500,000,000 between?
|
2010-05-21 19:09:01 -04:00
|
|
|
] unit-test
|
|
|
|
|
|
|
|
|
|
[ { 3 } ] [
|
|
|
|
|
{ 3 } dup
|
|
|
|
|
'[ 4 _ set-first ] 2 seconds later
|
|
|
|
|
1/2 seconds sleep
|
2010-05-21 21:03:32 -04:00
|
|
|
stop-alarm
|
2010-05-21 19:09:01 -04:00
|
|
|
] unit-test
|
2010-05-23 18:38:37 -04:00
|
|
|
|
|
|
|
|
[ { 1 } ] [
|
|
|
|
|
{ 0 }
|
|
|
|
|
dup '[ 0 _ [ 1 + ] change-nth ] 3 seconds later
|
|
|
|
|
[ stop-alarm ] [ start-alarm ] bi
|
|
|
|
|
4 seconds sleep
|
|
|
|
|
] unit-test
|
2010-05-23 23:16:41 -04:00
|
|
|
|
|
|
|
|
[ { 0 } ] [
|
|
|
|
|
{ 0 }
|
|
|
|
|
dup '[ 3 seconds sleep 1 _ set-first ] 1 seconds later
|
|
|
|
|
2 seconds sleep stop-alarm
|
|
|
|
|
1/2 seconds sleep
|
|
|
|
|
] unit-test
|