Complete cut-to-width
[sbcl.git] / tests / interface.pure.lisp
index 2a27b35..74ce1e0 100644 (file)
 ;;;; more information.
 
 (in-package :cl-user)
+
+(load "test-util.lisp")
+(load "compiler-test-util.lisp")
+(use-package :test-util)
 \f
 ;;;; properties of symbols, e.g. presence of doc strings for public symbols
 
 (assert (not (special-operator-p 'declare)))
 
 ;;; WITH-TIMEOUT should accept more than one form in its body.
-(handler-bind ((sb-ext:timeout #'continue))
-  (sb-ext:with-timeout 3
-    (sleep 2)
-    (sleep 2)))
+(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 '(or (not :x86-64) :win32))
+  (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)
+  (assert (eq :timeout
+              (handler-case
+                  (sb-ext:with-timeout 1
+                    (sleep (ash 1 (* 2 sb-vm:n-word-bits))))
+                (sb-ext:timeout ()
+                  :timeout)))))
 
 ;;; DOCUMENTATION should return nil, not signal slot-unbound
 (documentation 'fixnum 'type)
 (documentation 'class 'type)
 (documentation (find-class 'class) 'type)
+(documentation 'foo 'structure)
 
 ;;; DECODE-UNIVERSAL-TIME should accept second-resolution time-zones.
 (macrolet ((test (ut time-zone list)
 ;;; comprehensive test.
 (loop repeat 2
       do (compile nil '(lambda (x) x))
-      do (sb-ext:gc :full t))
\ No newline at end of file
+      do (sb-ext:gc :full t))
+
+;;; On x86-64, the instruction definitions for CMP*[PS][SD] were broken
+;;; so that the disassembler threw an error when they were used with
+;;; one operand in memory.
+(with-test (:name :bug-814702)
+  (disassemble (lambda (x)
+                 (= #C(2.0f0 3.0f0)
+                    (the (complex single-float) x))))
+  (disassemble (lambda (x y)
+                 (= (the (complex single-float) x)
+                    (the (complex single-float) y)))))