aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAndrea Corallo2020-11-25 22:41:39 +0100
committerAndrea Corallo2020-11-26 22:03:22 +0100
commit949b49cf771e8f38b23adb3fa4f9d7a9a5e290da (patch)
tree37f2f19ba25e9b89f2b2c5d8b55e749e4fccef3c /test
parent23c082638e77219b51e14797a0edae27ae59a9d6 (diff)
downloademacs-949b49cf771e8f38b23adb3fa4f9d7a9a5e290da.tar.gz
emacs-949b49cf771e8f38b23adb3fa4f9d7a9a5e290da.zip
Move some tests from comp-tests.el to comp-cstr-tests.el
* test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist): Add tests covering what was in: `range-simple-union', `union-types', `destructure-type-spec'. * test/src/comp-tests.el (range-simple-intersection, union-types) (destructure-type-spec): Remove tests.
Diffstat (limited to 'test')
-rw-r--r--test/lisp/emacs-lisp/comp-cstr-tests.el20
-rw-r--r--test/src/comp-tests.el61
2 files changed, 17 insertions, 64 deletions
diff --git a/test/lisp/emacs-lisp/comp-cstr-tests.el b/test/lisp/emacs-lisp/comp-cstr-tests.el
index 74419ff01e4..38a5e291311 100644
--- a/test/lisp/emacs-lisp/comp-cstr-tests.el
+++ b/test/lisp/emacs-lisp/comp-cstr-tests.el
@@ -42,17 +42,29 @@
42(defconst comp-cstr-typespec-tests-alist 42(defconst comp-cstr-typespec-tests-alist
43 `((symbol . symbol) 43 `((symbol . symbol)
44 ((or string array) . array) 44 ((or string array) . array)
45 ;; ((and string array) . string)
46 ((or symbol number) . (or symbol number)) 45 ((or symbol number) . (or symbol number))
47 ((or cons atom) . (or cons atom)) ;; SBCL return T 46 ((or cons atom) . (or cons atom)) ;; SBCL return T
47 ((or integer number) . number)
48 ((or (or integer symbol) number) . (or symbol number))
49 ((or (or integer symbol) (or number list)) . (or list symbol number))
50 ((or (or integer number) nil) . number)
51 ;; ((and string array) . string)
48 ;; ((and cons atom) . (or cons atom)) 52 ;; ((and cons atom) . (or cons atom))
53 ;; ((and (member foo) (member bar)) . symbol)
54 ;; ((and (member foo) symbol) . (member foo))
49 ((member foo) . (member foo)) 55 ((member foo) . (member foo))
50 ((member foo bar) . (member foo bar)) 56 ((member foo bar) . (member foo bar))
51 ((or (member foo) (member bar)) . (member foo bar)) 57 ((or (member foo) (member bar)) . (member foo bar))
52 ;; ((and (member foo) (member bar)) . symbol)
53 ((or (member foo) symbol) . symbol) ;; SBCL return (OR SYMBOL (MEMBER FOO)) 58 ((or (member foo) symbol) . symbol) ;; SBCL return (OR SYMBOL (MEMBER FOO))
54 ;; ((and (member foo) symbol) . (member foo)) 59 ((or (member foo) number) . (or (member foo) number))
55 ((or (member foo) number) . (or (member foo) number))) 60 ((integer 1 2) . (integer 1 2))
61 ((or (integer -1 0) (integer 3 4)) . (or (integer -1 0) (integer 3 4)))
62 ((or (integer -1 2) (integer 3 4)) . (integer -1 4))
63 ((or (integer -1 3) (integer 3 4)) . (integer -1 4))
64 ((or (integer -1 4) (integer 3 4)) . (integer -1 4))
65 ((or (integer -1 5) (integer 3 4)) . (integer -1 5))
66 ((or (integer -1 *) (integer 3 4)) . (integer -1 *))
67 ((or (integer -1 2) (integer * 4)) . (integer * 4)))
56 "Alist type specifier -> expected type specifier.") 68 "Alist type specifier -> expected type specifier.")
57 69
58(defmacro comp-cstr-synthesize-tests () 70(defmacro comp-cstr-synthesize-tests ()
diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el
index dd642b6a66e..88c7b8c0d81 100644
--- a/test/src/comp-tests.el
+++ b/test/src/comp-tests.el
@@ -970,20 +970,7 @@ Return a list of results."
970;; Range propagation tests. ;; 970;; Range propagation tests. ;;
971;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 971;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
972 972
973(comp-deftest range-simple-union () 973;; FIXME to be removed when movable into comp-cstr-tests.el
974 (should (equal (comp-range-union '((-1 . 0)) '((3 . 4)))
975 '((-1 . 0) (3 . 4))))
976 (should (equal (comp-range-union '((-1 . 2)) '((3 . 4)))
977 '((-1 . 4))))
978 (should (equal (comp-range-union '((-1 . 3)) '((3 . 4)))
979 '((-1 . 4))))
980 (should (equal (comp-range-union '((-1 . 4)) '((3 . 4)))
981 '((-1 . 4))))
982 (should (equal (comp-range-union '((-1 . 5)) '((3 . 4)))
983 '((-1 . 5))))
984 (should (equal (comp-range-union '((-1 . 0)) '())
985 '((-1 . 0)))))
986
987(comp-deftest range-simple-intersection () 974(comp-deftest range-simple-intersection ()
988 (should (equal (comp-range-intersection '((-1 . 0)) '((3 . 4))) 975 (should (equal (comp-range-intersection '((-1 . 0)) '((3 . 4)))
989 '())) 976 '()))
@@ -998,50 +985,4 @@ Return a list of results."
998 (should (equal (comp-range-intersection '((-1 . 0)) '()) 985 (should (equal (comp-range-intersection '((-1 . 0)) '())
999 '()))) 986 '())))
1000 987
1001(comp-deftest union-types ()
1002 (let ((comp-ctxt (make-comp-ctxt)))
1003 (should (equal (comp-union-typesets '(integer) '(number))
1004 '(number)))
1005 (should (equal (comp-union-typesets '(integer symbol) '(number))
1006 '(symbol number)))
1007 (should (equal (comp-union-typesets '(integer symbol) '(number list))
1008 '(list symbol number)))
1009 (should (equal (comp-union-typesets '(integer symbol) '())
1010 '(symbol integer)))))
1011
1012(comp-deftest destructure-type-spec ()
1013 (should (equal (comp-type-spec-to-constraint 'symbol)
1014 (make-comp-constraint :typeset '(symbol))))
1015 (should (equal (comp-type-spec-to-constraint '(or symbol number))
1016 (make-comp-constraint :typeset '(number symbol))))
1017 (should-error (comp-type-spec-to-constraint '(symbol number)))
1018 (should (equal (comp-type-spec-to-constraint '(member foo bar))
1019 (make-comp-constraint :typeset nil :valset '(foo bar))))
1020 (should (equal (comp-type-spec-to-constraint '(integer 1 2))
1021 (make-comp-constraint :typeset nil :range '((1 . 2)))))
1022 (should (equal (comp-type-spec-to-constraint '(or (integer 1 2) (integer 4 5)))
1023 (make-comp-constraint :typeset nil :range '((4 . 5) (1 . 2)))))
1024 (should (equal (comp-type-spec-to-constraint '(integer * 2))
1025 (make-comp-constraint :typeset nil :range '((- . 2)))))
1026 (should (equal (comp-type-spec-to-constraint '(integer 1 *))
1027 (make-comp-constraint :typeset nil :range '((1 . +)))))
1028 (should (equal (comp-type-spec-to-constraint '(integer * *))
1029 (make-comp-constraint :typeset nil :range '((- . +)))))
1030 (should (equal (comp-type-spec-to-constraint '(or (integer 1 2)
1031 (member foo bar)))
1032 (make-comp-constraint :typeset nil
1033 :valset '(foo bar)
1034 :range '((1 . 2)))))
1035 (should (equal (comp-type-spec-to-constraint
1036 '(function (t t) cons))
1037 (make-comp-constraint-f
1038 :args `(,(make-comp-constraint :typeset '(t))
1039 ,(make-comp-constraint :typeset '(t)))
1040 :ret (make-comp-constraint :typeset '(cons)))))
1041 (should (equal (comp-type-spec-to-constraint
1042 '(function ((or integer symbol)) float))
1043 (make-comp-constraint-f
1044 :args `(,(make-comp-constraint :typeset '(symbol integer)))
1045 :ret (make-comp-constraint :typeset '(float))))))
1046
1047;;; comp-tests.el ends here 988;;; comp-tests.el ends here