source: trunk/abcl/t/java-call-sites.lisp

Last change on this file was 15510, checked in by Mark Evenson, 3 years ago

Test for variadic arguments with more required parameters

File size: 2.6 KB
Line 
1(in-package :cl-user)
2
3(prove:plan 1)
4(prove:isnt
5 (handler-case 
6     (java:jstatic-raw "reverseBytes" "java.lang.Short" #x7f)
7   (error (e) (format *standard-output* "error: ~a~%" e)))
8 nil
9 "Calling java.lang.Short.reverseBytes(short)")
10
11(prove:plan 1)
12(prove:isnt
13 (handler-case 
14     (java:jstatic-raw "valueOf" "java.lang.Byte" #x7f)
15   (error (e) (format *standard-output* "error: ~a~%" e)))
16 nil
17 "Calling java.lang.Byte.valueOf(byte)")
18
19;; <http://trac.common-lisp.net/armedbear/ticket/259>
20(prove:plan 1)
21(prove:isnt
22 (handler-case 
23     (java:jstatic-raw "asList" "java.util.Arrays" 
24                       (java:jnew-array (java:jclass "int") 1))
25   (error (e) (format *standard-output* "error: ~a~%" e)))
26 nil
27 "Calling java.util.Arrays.asList(int[1])")
28
29;;; Begin <https://mailman.common-lisp.net/pipermail/armedbear-devel/2020-February/004037.html>
30;; the following signals the "no such method" error,
31;; consistent with my understanding of the intent of the new patch
32(prove:plan 1)
33(prove:is
34 (handler-case
35     (jstatic "reverseBytes" "java.lang.Short" 6300000)
36   (error (e)
37     t))
38   t
39   "Dynamic static method invocation with large argument signals error")
40
41;; however, this version does not throw [an] error, and silently narrows
42;; 63000[0] the value to a short
43(prove:plan 1)
44(prove:is
45 (handler-case 
46     (let ((method
47            (jmethod "java.lang.Short" "reverseBytes" "short")))
48       (jstatic method nil 6300000))
49   (error (e)
50     t))
51   t
52   "Explicit static method invocation with large argument signals error")
53
54(prove:plan 1)
55(prove:is
56 (handler-case
57     (let ((buffer (jstatic-raw "allocate" "java.nio.ByteBuffer" 1))
58           (value #xf0)) ;; a "byte" between 127 and 255
59       (jcall "put" buffer value)
60       (= value
61          (+ 256 (jcall "get" buffer 0))))
62   (error (e)
63     nil))
64 t
65 "Invoking method with a byte value between 127 and 255")
66
67;;; end <https://mailman.common-lisp.net/pipermail/armedbear-devel/2020-February/004037.html>
68
69
70;;; <https://github.com/armedbear/abcl/pull/379>
71(prove:plan 1)
72(prove:isnt
73 (handler-case 
74     (let* ((parameter
75              (jnew-array-from-list "java.lang.String" '("tmp" "passwd")))
76            (class
77              (jclass "java.nio.file.Path"))
78            ;;; N.b. Path.of() only exists starting from openjdk11.  How to test earlier?
79            (method
80              (jmethod "java.nio.file.Path" "of" "java.lang.String" (jclass-of parameter)))
81            (result
82              (jstatic method class "/chroot/" parameter)))
83       result)
84   (error (e)
85     (values :error)))
86 :error
87 "Invoking a method parameterized on String String[].")
88
89(prove:finalize)
90
91 
Note: See TracBrowser for help on using the repository browser.