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 | |