Move initialization of attribute object
[clinton/lisp-on-lines.git] / src / attribute-test.lisp
CommitLineData
e7c5f95a 1(in-package :lol-test)
2
3(in-suite lisp-on-lines)
4
5(deftest test-attribute-value ()
6 (eval
7 '(progn
4358148e 8 (define-description attribute-test-description ()
e7c5f95a 9 ((attribute-1 :value "VALUE")
10 (attribute-2 :function (constantly "VALUE"))))
11
12 (deflayer attribute-test)
13
4358148e 14 (define-description attribute-test-description ()
e7c5f95a 15 ((attribute-1 :value "VALUE2")
16 (attribute-2 :function (constantly "VALUE2")))
17 (:in-layer . attribute-test))))
18
4358148e 19 (let ((d (find-description 'attribute-test-description)))
e7c5f95a 20
21 (is (equalp "VALUE" (slot-value (find-attribute d 'attribute-1) 'lol::value)))
22
23
24 (with-active-layers (attribute-test)
25 (is (equalp (attribute-value nil (find-attribute d 'attribute-1))
26 (attribute-value nil (find-attribute d 'attribute-2))))
27 (is (equalp "VALUE2" (attribute-value nil (find-attribute d 'attribute-1)))))))
28
29(deftest test-attribute-property-inheriting ()
30 (test-attribute-value)
31 (eval '(progn
32 (deflayer attribute-property-test)
4358148e 33 (define-description attribute-test-description ()
e7c5f95a 34 ((attribute-1 :label "attribute1")
35 (attribute-2 :label "attribute2"))
36 (:in-layer . attribute-property-test))))
e7c5f95a 37 (with-active-layers (attribute-property-test)
4358148e 38 (let ((d (find-description 'attribute-test-description)))
e7c5f95a 39
40 (is (equalp "VALUE" (slot-value (find-attribute d 'attribute-1) 'lol::value)))
41
42 (is (equalp "attribute1" (attribute-label (find-attribute d 'attribute-1))))
43 (is (equalp "attribute2" (attribute-label (find-attribute d 'attribute-2))))
44
45
46 (with-active-layers (attribute-test)
47 (is (equalp (attribute-value nil (find-attribute d 'attribute-1))
48 (attribute-value nil (find-attribute d 'attribute-2))))
49 (is (equalp "VALUE2" (attribute-value nil (find-attribute d 'attribute-1))))))))
4358148e 50
51(deftest test-attribute-with-different-class ()
52 (eval '(progn
53;;;; We cannot ever redefine this class ic think...
54;;; as attributes are also slot meta-objects.
55 (unless (find-class 'test-attribute-class nil)
56 (define-layered-class
57 test-attribute-class (lol::standard-attribute)
58 ((some-slot :initarg :some-slot :layered-accessor some-slot))))
59
60 (define-description test-attribute-with-different-class-description ()
61 ((attribute-with-different-class :attribute-class test-attribute-class :some-slot "BRILLANT!")))))
62
63 (let* ((d (find-description 'test-attribute-with-different-class-description))
64
65 (a (find-attribute d 'attribute-with-different-class)))
66 (is (eq (class-of a)
67 (find-class 'test-attribute-class)))
68 (is (equalp "BRILLANT!" (some-slot a)))))
69
70
71
e7c5f95a 72
73
74
75