source: trunk/abcl/test/lisp/abcl/runtime-class.lisp

Last change on this file was 15598, checked in by Mark Evenson, 17 months ago

abcl-test: rename to runtime-class.annotations.deprecated

File size: 2.6 KB
Line 
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)
Note: See TracBrowser for help on using the repository browser.