source: trunk/abcl/contrib/jss/t/jss-tests.lisp

Last change on this file was 15106, checked in by Mark Evenson, 6 years ago

Fix missing package prefix
(Olof-Joachim Frahm)

Merges <<https://github.com/armedbear/abcl/pull/68>.

From <https://github.com/armedbear/abcl/pull/68/commits/c5f001e5f737e4843045cab8a4fe8683c2a78e87>.

File size: 2.5 KB
Line 
1(in-package :cl-user)
2
3(prove:plan 8)
4
5(prove:is
6 (read-from-string "#\"{bar}.{foo}\"")
7 '(jss:get-java-field bar foo t))
8(prove:is
9 (read-from-string "#\"q.bar.{foo}\"")
10 '(jss:get-java-field (load-time-value (jss:find-java-class "q.bar")) foo t))
11(prove:is
12 (read-from-string "#\"{bar}.foo\"")
13 '(jss:get-java-field bar "foo" t))
14(prove:is-error
15 (read-from-string "#\".bar.foo\"")
16 'simple-error)
17;;; http://abcl.org/trac/ticket/205
18(prove:is
19 (jss:with-constant-signature ((substring "substring"))
20   (substring "01234" 2)) "234")
21;;; http://abcl.org/trac/ticket/229 - note: version of test for this ticket was broken in tests.lisp
22(prove:is (#"toString"
23           (find "size" (#"getMethods" (jss:find-java-class "java.util.Collections$UnmodifiableMap"))
24                 :test 'string-equal :key #"getName"))
25    (#"toString" (java::jmethod "java.util.Collections$UnmodifiableMap" "size" )))
26
27(prove:is 
28 (jss::with-class-lookup-disambiguated (lang.object) (jss:find-java-class 'object))
29 (jss:find-java-class 'java.lang.object))
30
31;; Object is ambiguous in default java
32(prove:is-error
33 (jss:find-java-class 'object)
34 'simple-error)
35
36;; test that optimized jss is much faster than unoptimized
37(let ()
38  (defun optimized-jss (count)
39    (loop repeat count do (#"compile" 'regex.Pattern ".*")))
40  (let ((jss::*inhibit-jss-optimization* t))
41    (defun unoptimized-jss (count)
42      (loop repeat count do (#"compile" 'regex.Pattern ".*"))))
43  (defun just-loop (count)
44    (loop repeat count))
45  (let ((jss::*inhibit-jss-optimization* nil))
46    (compile 'just-loop)
47    (compile 'optimized-jss))
48  (let ((jss::*inhibit-jss-optimization* t))
49    (compile 'unoptimized-jss))
50
51  (defmacro timeit (&body body)
52    `(let ((start (#"currentTimeMillis" 'system)))
53       ,@body
54       (- (#"currentTimeMillis" 'system) start)))
55
56  (prove:plan 1)
57  (prove:is-type (let ((just-loop (timeit (just-loop 10000))))
58     (+ 0.0 
59        (/ (-  (timeit (optimized-jss 10000)) just-loop)
60      (-  (timeit (unoptimized-jss 10000)) just-loop))))
61                 '(float 0 0.1)
62                 "Testing JSS compiler optimization
"))
63
64(prove:plan 2)
65(let* ((jss::*inhibit-jss-optimization* nil)
66       (optimized-jss
67        (macroexpand (precompiler::precompile-form
68                                    '(#"compile" 'regex.Pattern ".*") t))))
69  (let* ((jss::*inhibit-jss-optimization* t)
70         (unoptimized-jss
71          (macroexpand (precompiler::precompile-form '(#"compile" 'regex.Pattern ".*") t))))
72    (prove:is (car optimized-jss) 'java:jstatic)
73    (prove:is (caar unoptimized-jss) 'lambda)))
74
75(prove:finalize)
76
Note: See TracBrowser for help on using the repository browser.