-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.lisp
50 lines (39 loc) · 1.63 KB
/
tests.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
(defpackage #:meta-definitions.tests
(:use #:cl #:meta-definitions #:fiveam))
(in-package :meta-definitions.tests)
(def-suite* meta-definitions.tests)
(eval-when (:compile-toplevel :load-toplevel)
(define
(class (class-a))
(slots))
;; TODO(dias): check if we force finalize a class when defining it.
(define-class class-a)
(closer-mop:ensure-finalized (find-class 'class-a)))
(def-test class-a-must-exist-after-defining-it ()
(is (not (null (find-class 'class-a)))))
(def-test define-a-class-without-slots ()
(is (= 0 (length (closer-mop:class-direct-slots (find-class 'class-a))))))
(eval-when (:compile-toplevel :load-toplevel)
(define
(class (class-b))
(slots (id :type integer)))
(define-class class-b)
(closer-mop:ensure-finalized (find-class 'class-b)))
(def-test define-a-class-with-one-slot ()
(is (= 1 (length (closer-mop:class-direct-slots (find-class 'class-b))))))
(eval-when (:compile-toplevel :load-toplevel)
(define
(class (class-c))
(slots (id :type integer :required t)))
(define-class class-c)
(closer-mop:ensure-finalized (find-class 'class-c)))
(def-test add-initform-with-error-if-slot-has-attribute-required ()
(is (not (null (closer-mop:slot-definition-initform (car (closer-mop:class-slots (find-class 'class-c))))))))
(eval-when (:compile-toplevel :load-toplevel)
(define
(class (class-d))
(slots (id :type integer)))
(define-class class-d)
(closer-mop:ensure-finalized (find-class 'class-d)))
(def-test must-not-have-initform-if-not-required-or-not-defined ()
(is (null (closer-mop:slot-definition-initform (car (closer-mop:class-slots (find-class 'class-d)))))))