@@ -33,6 +33,8 @@ System = @jimport java.lang.System
33
33
System_out = jfield (System, " out" , @jimport java. io. PrintStream )
34
34
@info " Java Version: " , jcall (System, " getProperty" , JString, (JString,), " java.version" )
35
35
36
+ @testset " JavaCall" begin
37
+
36
38
@testset " unsafe_strings_1" begin
37
39
a= JString (" how are you" )
38
40
@test Ptr (a) != C_NULL
92
94
@test typeof (h)== jint
93
95
end
94
96
97
+ @testset " exceptions_1" begin
98
+ j_u_arrays = @jimport java. util. Arrays
99
+ j_math = @jimport java. lang. Math
100
+ j_is = @jimport java. io. InputStream
101
+
102
+ # JavaCall.JavaCallError("Error calling Java: java.lang.ArithmeticException: / by zero")
103
+ @test_throws JavaCall. JavaCallError jcall (j_math, " floorDiv" , jint, (jint, jint), 1 , 0 )
104
+ @test isnothing (JavaCall. geterror ())
105
+
106
+ # JavaCall.JavaCallError("Error calling Java: java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1")
107
+ @test_throws JavaCall. JavaCallError jcall (j_u_arrays, " sort" , Nothing, (Array{jint,1 }, jint, jint), [10 ,20 ], - 1 , - 1 )
108
+ @test isnothing (JavaCall. geterror ())
109
+
110
+ # JavaCall.JavaCallError("Error calling Java: java.lang.IllegalArgumentException: fromIndex(1) > toIndex(0)")
111
+ @test_throws JavaCall. JavaCallError jcall (j_u_arrays, " sort" , Nothing, (Array{jint,1 }, jint, jint), [10 ,20 ], 1 , 0 )
112
+ @test isnothing (JavaCall. geterror ())
113
+ end
114
+
115
+ @testset " fields_1" begin
116
+ JTest = @jimport (Test)
117
+ t= JTest (())
118
+ t_fields = Dict (getname (f) => f for f in listfields (t))
119
+
120
+ @testset " $ftype " for (name, ftype, valtest) in [ (" booleanField" , jboolean, == (true )) ,
121
+ (" integerField" , jint, == (100 )) ,
122
+ (" stringField" , JString, == (" A STRING" )) ,
123
+ (" objectField" , JObject, x -> Ptr (x) == C_NULL ) ]
124
+ @test valtest (jfield (t, name, ftype))
125
+ @test valtest (t_fields[name](t))
126
+ @test valtest (jfield (t, t_fields[name]))
127
+ end
128
+
129
+ @test jfield (@jimport (java. lang. Math), " E" , jdouble) == 2.718281828459045
130
+ @test jfield (@jimport (java. lang. Math), " PI" , jdouble) == 3.141592653589793
131
+ @test jfield (@jimport (java. lang. Byte), " MAX_VALUE" , jbyte) == 1 << 7 - 1
132
+ @test jfield (@jimport (java. lang. Integer), " MAX_VALUE" , jint) == 1 << 31 - 1
133
+ @test jfield (@jimport (java. lang. Long), " MAX_VALUE" , jlong) == 1 << 63 - 1
134
+
135
+ j_l_bool = @jimport (java. lang. Boolean)
136
+ @test jcall (jfield (j_l_bool, " TRUE" , j_l_bool), " booleanValue" , jboolean, ()) == true
137
+ @test jcall (jfield (j_l_bool, " FALSE" , j_l_bool), " booleanValue" , jboolean, ()) == false
138
+
139
+ @test jfield (@jimport (java. text. NumberFormat), " INTEGER_FIELD" , jint) == 0
140
+ locale = @jimport java. util. Locale
141
+ lc = jfield (locale, " CANADA" , locale)
142
+ @test jcall (lc, " getCountry" , JString, ()) == " CA" # TODO : remove?
143
+ # Instance field access
144
+ end
145
+
95
146
# Test NULL
96
147
@testset " null_1" begin
97
148
H= @jimport java. util. HashMap
98
149
a= jcall (T, " testNull" , H, ())
99
- @test_throws ErrorException jcall (a, " toString" , JString, ())
150
+ @test_throws JavaCall . JavaCallError jcall (a, " toString" , JString, ())
100
151
101
152
jlist = @jimport java. util. ArrayList
102
153
@test jcall ( jlist (), " add" , jboolean, (JObject,), JObject (C_NULL )) === 0x01
171
222
t= JTest (())
172
223
inner = TestInner ((JTest,), t)
173
224
@test jcall (inner, " innerString" , JString, ()) == " from inner"
174
- @test jfield (@jimport (java. lang. Math), " E" , jdouble) == 2.718281828459045
175
- @test jfield (@jimport (java. lang. Math), " PI" , jdouble) == 3.141592653589793
176
- @test jfield (@jimport (java. text. NumberFormat), " INTEGER_FIELD" , jint) == 0
177
- Locale = @jimport java. util. Locale
178
- lc = jfield (@jimport (java. util. Locale), " CANADA" , @jimport (java. util. Locale))
179
- # Instance field access
180
225
# Disabled for now. Need to verify stability
181
226
@test jfield (@jimport (java. util. logging. Logger), " GLOBAL_LOGGER_NAME" , JString ) == " global"
182
- @test jcall (lc, " getCountry" , JString, ()) == " CA"
183
227
@test jfield (t, " integerField" , jint) == 100
184
228
@test jfield (t, " stringField" , JString) == " A STRING"
185
229
end
319
363
end
320
364
end
321
365
366
+ end
367
+
322
368
# Test downstream dependencies
323
369
try
324
370
using Pkg
0 commit comments