1 | (in-package :abcl.test.lisp) |
---|
2 | |
---|
3 | ;; method with no arguments |
---|
4 | (deftest runtime-class.1 |
---|
5 | (java:jclass-name |
---|
6 | (java:jnew-runtime-class |
---|
7 | "Actor" |
---|
8 | :fields '(("name" "java.lang.String" :getter NIL)) |
---|
9 | :methods '(("getName" "java.lang.String" NIL |
---|
10 | (lambda (this) |
---|
11 | (java:jfield "name" this)))))) |
---|
12 | "Actor") |
---|
13 | |
---|
14 | ;; method with primitive type |
---|
15 | (deftest runtime-class.2 |
---|
16 | (java:jclass-name |
---|
17 | (java:jnew-runtime-class |
---|
18 | "Actor" |
---|
19 | :fields '(("name" "java.lang.String" :getter NIL)) |
---|
20 | :methods '(("getName" "java.lang.String" (:int) |
---|
21 | (lambda (this x) |
---|
22 | (declare (ignore x)) |
---|
23 | (java:jfield "name" this)))))) |
---|
24 | "Actor") |
---|
25 | |
---|
26 | ;; inheritance of type |
---|
27 | (deftest runtime-class.3 |
---|
28 | (let ((class-loader (java::make-memory-class-loader))) |
---|
29 | (java:jnew-runtime-class |
---|
30 | "foo.Actor" |
---|
31 | :fields '(("name" "java.lang.String")) |
---|
32 | :class-loader class-loader) |
---|
33 | (java:jclass-name |
---|
34 | (java:jnew-runtime-class |
---|
35 | "foo.StageActor" |
---|
36 | :superclass "foo.Actor" |
---|
37 | :fields '(("givenName" "java.lang.String")) |
---|
38 | :class-loader class-loader))) |
---|
39 | "foo.StageActor") |
---|
40 | |
---|
41 | ;; constructor |
---|
42 | (deftest runtime-class.4 |
---|
43 | (java:jcall "getName" |
---|
44 | (java:jnew |
---|
45 | (java:jnew-runtime-class |
---|
46 | "Actor" |
---|
47 | :constructors '((("java.lang.String") |
---|
48 | (lambda (this name) |
---|
49 | (setf (java:jfield "name" this) name)))) |
---|
50 | :methods '(("getName" "java.lang.String" NIL |
---|
51 | (lambda (this) |
---|
52 | (java:jfield "name" this)))) |
---|
53 | :fields '(("name" "java.lang.String" :getter NIL))) |
---|
54 | "Someone")) |
---|
55 | "Someone") |
---|
56 | |
---|
57 | ;; print-object |
---|
58 | (deftest runtime-class.print-object |
---|
59 | (subseq |
---|
60 | (with-output-to-string (stream) |
---|
61 | (print-object |
---|
62 | (java:jnew |
---|
63 | (java:jnew-runtime-class |
---|
64 | "FooList" |
---|
65 | :superclass "java.util.AbstractList" |
---|
66 | :methods '(("get" "java.lang.Object" (:int) |
---|
67 | (lambda (this index) |
---|
68 | "Foo")) |
---|
69 | ("size" :int () |
---|
70 | (lambda (this) |
---|
71 | 15))))) |
---|
72 | stream)) |
---|
73 | 0 |
---|
74 | 20) |
---|
75 | "#<FooList [Foo, Foo,") |
---|
76 | |
---|
77 | |
---|
78 | ;; class annotations |
---|
79 | (deftest runtime-class.annotations.deprecated |
---|
80 | (let* ((class (java:jnew-runtime-class |
---|
81 | "Foo" |
---|
82 | :annotations '("java.lang.Deprecated"))) |
---|
83 | (annotations (java:jcall "getAnnotations" class))) |
---|
84 | (assert (java:jinstance-of-p (aref annotations 0) "java.lang.Deprecated")) |
---|
85 | t) |
---|
86 | t) |
---|