0.pre7.94:
[sbcl.git] / tests / type.before-xc.lisp
index e123ae1..7bc61c5 100644 (file)
 (assert (null (type-intersection2 (specifier-type 'symbol)
                                  (specifier-type '(satisfies foo)))))
 (assert (intersection-type-p (specifier-type '(and symbol (satisfies foo)))))
-;; FIXME: As of sbcl-0.6.11.17, the system doesn't know how to do the
-;; type simplifications which would let these tests work. (bug 88)
-#|
+(assert (ctypep :x86 (specifier-type '(satisfies keywordp))))
+(assert (type= (specifier-type '(member :x86))
+              (specifier-type '(and (member :x86) (satisfies keywordp)))))
 (let* ((type1 (specifier-type '(member :x86)))
        (type2 (specifier-type '(or keyword null)))
        (isect (type-intersection type1 type2)))
+  (assert (type= isect type1))
   (assert (type= isect (type-intersection type2 type1)))
+  (assert (type= isect (type-intersection type2 type1 type2)))
+  (assert (type= isect (type-intersection type1 type1 type2 type1)))
+  (assert (type= isect (type-intersection type1 type2 type1 type2))))
+(let* ((type1 (specifier-type 'keyword))
+       (type2 (specifier-type '(or keyword null)))
+       (isect (type-intersection type1 type2)))
   (assert (type= isect type1))
+  (assert (type= isect (type-intersection type2 type1)))
   (assert (type= isect (type-intersection type2 type1 type2)))
   (assert (type= isect (type-intersection type1 type1 type2 type1)))
   (assert (type= isect (type-intersection type1 type2 type1 type2))))
-|#
+(assert (csubtypep (specifier-type '(or (single-float -1.0 1.0)
+                                       (single-float 0.1)))
+                  (specifier-type '(or (real -1 7)
+                                       (single-float 0.1)
+                                       (single-float -1.0 1.0)))))
+(assert (not (csubtypep (specifier-type '(or (real -1 7)
+                                            (single-float 0.1)
+                                            (single-float -1.0 1.0)))
+                       (specifier-type '(or (single-float -1.0 1.0)
+                                            (single-float 0.1))))))
 
 (/show "done with tests/type.before-xc.lisp")