forked from marick/fp-oo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
t_superclass.clj
37 lines (25 loc) · 1.02 KB
/
t_superclass.clj
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
(ns sources.t-superclass
(:use midje.sweet))
(load-file "sources/superclass.clj")
(fact
(class-symbol-above 'Point) => 'Anything)
(fact
(keys (class-instance-methods 'Point)) => (contains :shift)
(keys (class-instance-methods 'Point)) =not=> (contains :class))
(fact
(class-from-instance (make Point 1 2)) => Point)
(fact
(lineage 'Anything) => ['Anything]
(lineage 'Point) => ['Anything 'Point])
(fact
(:class (method-cache Point)) => (exactly (:class (class-instance-methods 'Anything)))
(:add (method-cache Point)) => (exactly (:add (class-instance-methods 'Point)))
(:add-instance-values (method-cache Point))
=> (exactly (:add-instance-values (class-instance-methods 'Point))))
(fact
(apply-message-to Point (make Point 1 2) :class-name '()) => 'Point
(apply-message-to Point (make Point 1 2) :shift '(1 2)) => (make Point 2 4))
(fact
(send-to (make Point 1 2) :add (make Point 2 1)) => (make Point 3 3)
(send-to (make Point 1 2) :class) => Point
(send-to (make Anything) :class) => Anything)