diff --git a/ChangeLog b/ChangeLog index 6437a7ff9..70c4dd8a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2025-01-17 Shiro Kawai + + * lib/control/timeout.scm: Added experimentally. + 2025-01-15 Shiro Kawai * lib/math/prime.scm (grouped-factorize, reduced-totient): Added. diff --git a/lib/Makefile.in b/lib/Makefile.in index 8d9119870..1ebe74e30 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -107,7 +107,8 @@ SCMFILES = \ r7rs-setup.scm \ binary/ftype.scm binary/pack.scm \ control/cseq.scm control/future.scm control/job.scm control/plumbing.scm \ - control/pmap.scm control/scheduler.scm control/thread-pool.scm \ + control/pmap.scm control/scheduler.scm control/timeout.scm \ + control/thread-pool.scm \ dbi.scm dbd/null.scm dbm.scm dbm/fsdbm.scm dbm/dump dbm/restore \ data/cache.scm data/heap.scm \ data/ideque.scm data/imap.scm data/priority-map.scm data/random.scm \ diff --git a/test/control.scm b/test/control.scm index f9217709c..a10bbbff4 100644 --- a/test/control.scm +++ b/test/control.scm @@ -689,4 +689,25 @@ (port-closed? outlet0)) ) +;;-------------------------------------------------------------------- +;; control.timeout +;; + +(test-section "control.timeout") +(use control.timeout) +(use srfi.19) +(test-module 'control.timeout) + +(test* "timeout (not)" 'ok + (do/timeout (10 'oops) (sys-nanosleep 10) 'ok)) + +(test* "timeout (timeout)" 'oops + (do/timeout (0.1 'oops) (sys-sleep 1) 'ok)) + +(test* "timeout (already passed)" 'oops + (do/timeout ((subtract-duration (current-time) + (make-time time-duration 0 1)) + 'oops) + (sys-sleep 1) 'ok)) + (test-end)