X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Finterface.pure.lisp;h=90d58f96e6ad0ceadd6979aa9b630af165661dd2;hb=0d51ca7e5e624dc3bad5c87e14211e8e6f7b3a45;hp=5957ce000a0869ebe9c64d793d4b895d9109cf14;hpb=f9663e4a4c35614fcba5812882f9ed812cbcf62d;p=sbcl.git diff --git a/tests/interface.pure.lisp b/tests/interface.pure.lisp index 5957ce0..90d58f9 100644 --- a/tests/interface.pure.lisp +++ b/tests/interface.pure.lisp @@ -61,19 +61,22 @@ (assert (not (special-operator-p 'declare))) ;;; WITH-TIMEOUT should accept more than one form in its body. -(with-test (:name :with-timeout-forms :fails-on :win32) +(with-test (:name :with-timeout-forms) (handler-bind ((sb-ext:timeout #'continue)) (sb-ext:with-timeout 3 (sleep 2) (sleep 2)))) ;;; SLEEP should not cons -(with-test (:name (sleep :non-consing) :fails-on '(not :x86-64)) - (ctu:assert-no-consing (sleep 0.00001))) - -;;; SLEEP should work with large integers as well -- no timers -;;; on win32, so don't test there. -(with-test (:name (sleep pretty-much-forever) :skipped-on :win32) +(with-test (:name (sleep :non-consing) :fails-on :win32) + (ctu:assert-no-consing (sleep 0.00001s0)) + (locally (declare (notinline sleep)) + (ctu:assert-no-consing (sleep 0.00001s0)) + (ctu:assert-no-consing (sleep 0.00001d0)) + (ctu:assert-no-consing (sleep 1/100000003)))) + +;;; SLEEP should work with large integers as well +(with-test (:name (sleep pretty-much-forever)) (assert (eq :timeout (handler-case (sb-ext:with-timeout 1 @@ -135,3 +138,19 @@ (disassemble (lambda (x y) (= (the (complex single-float) x) (the (complex single-float) y))))) + +;;; Check that SLEEP called with ratios (with no common factors with +;;; 1000000000, and smaller than 1/1000000000) works more or less as +;;; expected. +(with-test (:name :sleep-ratios) + (let ((fun0a (compile nil '(lambda () (sleep 1/7)))) + (fun0b (compile nil '(lambda () (sleep 1/100000000000000000000000000)))) + (fun1 (compile nil '(lambda (x) (sleep x)))) + (start-time (get-universal-time))) + (sleep 1/7) + (sleep 1/100000000000000000000000000) + (funcall fun0a) + (funcall fun0b) + (funcall fun1 1/7) + (funcall fun1 1/100000000000000000000000000) + (assert (< (- (get-universal-time) start-time) 2))))