1 /*
2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package jdk.nashorn.api.javaaccess.test;
27
28 import static org.testng.AssertJUnit.assertEquals;
29 import static org.testng.AssertJUnit.assertTrue;
30 import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
31 import javax.script.ScriptEngine;
32 import javax.script.ScriptEngineManager;
33 import javax.script.ScriptException;
34 import org.testng.TestNG;
35 import org.testng.annotations.AfterClass;
36 import org.testng.annotations.BeforeClass;
37 import org.testng.annotations.Test;
38
39 /**
40 * @test
41 * @build jdk.nashorn.api.javaaccess.test.SharedObject jdk.nashorn.api.javaaccess.test.Person jdk.nashorn.api.javaaccess.test.NumberAccessTest
42 * @run testng/othervm jdk.nashorn.api.javaaccess.test.NumberAccessTest
43 */
44 @SuppressWarnings("javadoc")
45 public class NumberAccessTest {
46
47 private static ScriptEngine e;
48 private static SharedObject o;
49
50 public static void main(final String[] args) {
51 TestNG.main(args);
52 }
53
54 @BeforeClass
55 public static void setUpClass() throws ScriptException {
56 final ScriptEngineManager m = new ScriptEngineManager();
57 e = m.getEngineByName("nashorn");
58 o = new SharedObject();
59 e.put("o", o);
60 e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.test.SharedObject;");
61 }
62
63 @AfterClass
64 public static void tearDownClass() {
65 e = null;
66 o = null;
67 }
68
69 // --------------------------------long
70 // tests------------------------------------
71 @Test
72 public void accessFieldLong() throws ScriptException {
73 e.eval("var p_long = o.publicLong;");
74 assertEquals(o.publicLong, e.get("p_long"));
75 e.eval("o.publicLong = 12;");
76 assertEquals(12, o.publicLong);
77 }
78
79 @Test
80 public void accessFieldLongArray() throws ScriptException {
81 e.eval("var p_long_array = o.publicLongArray;");
82 assertEquals(o.publicLongArray[0], e.eval("o.publicLongArray[0];"));
83 assertArrayEquals(o.publicLongArray, (long[])e.get("p_long_array"));
84 e.eval("var t_long_arr = new (Java.type(\"long[]\"))(3);" +
85 "t_long_arr[0] = -189009;" +
86 "t_long_arr[1] = 456;" +
87 "t_long_arr[2] = 600000001;" +
88 "o.publicLongArray = t_long_arr;");
89 // e.eval("o.publicIntArray = [-189009,456,600000001];");
90 assertArrayEquals(new long[] { -189009, 456, 600000001 }, o.publicLongArray);
91 e.eval("o.publicLongArray[0] = 10;");
92 assertEquals(10, o.publicLongArray[0]);
93 }
94
95 @Test
96 public void accessStaticFieldLong() throws ScriptException {
97 e.eval("var ps_long = SharedObject.publicStaticLong;");
98 assertEquals(SharedObject.publicStaticLong, e.get("ps_long"));
99 e.eval("SharedObject.publicStaticLong = 120;");
100 assertEquals(120, SharedObject.publicStaticLong);
101 }
102
103 @Test
104 public void accessStaticFieldLongArray() throws ScriptException {
105 e.eval("var ps_long_array = SharedObject.publicStaticLongArray;");
106 assertEquals(SharedObject.publicStaticLongArray[0], e.eval("SharedObject.publicStaticLongArray[0];"));
107 assertArrayEquals(SharedObject.publicStaticLongArray, (long[])e.get("ps_long_array"));
108 e.eval("var ts_long_arr = new (Java.type(\"long[]\"))(3);" +
109 "ts_long_arr[0] = -189009;" +
110 "ts_long_arr[1] = 456;" +
111 "ts_long_arr[2] = 600000001;" +
112 "SharedObject.publicStaticLongArray = ts_long_arr;");
113 // e.eval("o.publicIntArray = [-189009,456,600000001];");
114 assertArrayEquals(new long[] { -189009, 456, 600000001 }, SharedObject.publicStaticLongArray);
115 e.eval("SharedObject.publicStaticLongArray[0] = 10;");
116 assertEquals(10, SharedObject.publicStaticLongArray[0]);
117 }
118
119 @Test
120 public void accessFinalFieldLong() throws ScriptException {
121 e.eval("var pf_long = o.publicFinalLong;");
122 assertEquals(o.publicFinalLong, e.get("pf_long"));
123 e.eval("o.publicFinalLong = 120;");
124 assertEquals(13353333333333333L, o.publicFinalLong);
125 }
126
127 @Test
128 public void accessFinalFieldLongArray() throws ScriptException {
129 e.eval("var pf_long_array = o.publicFinalLongArray;");
130 assertEquals(o.publicFinalLongArray[0], e.eval("o.publicFinalLongArray[0];"));
131 assertArrayEquals(o.publicFinalLongArray, (long[])e.get("pf_long_array"));
132 e.eval("var tf_long_arr = new (Java.type(\"long[]\"))(3);" +
133 "tf_long_arr[0] = -189009;" +
134 "tf_long_arr[1] = 456;" +
135 "tf_long_arr[2] = 600000001;" +
136 "o.publicFinalLongArray = tf_long_arr;");
137 // e.eval("o.publicIntArray = [-189009,456,600000001];");
138 assertArrayEquals(new long[] { 1901733333333L, -2247355555L, 3977377777L }, o.publicFinalLongArray);
139 e.eval("o.publicFinalLongArray[0] = 10;");
140 assertEquals(10, o.publicFinalLongArray[0]);
141 }
142
143 @Test
144 public void accessStaticFinalFieldLong() throws ScriptException {
145 e.eval("var psf_long = SharedObject.publicStaticFinalLong;");
146 assertEquals(SharedObject.publicStaticFinalLong, e.get("psf_long"));
147 e.eval("SharedObject.publicStaticFinalLong = 120;");
148 assertEquals(8333333333333L, SharedObject.publicStaticFinalLong);
149 }
150
151 @Test
152 public void accessStaticFinalFieldLongArray() throws ScriptException {
153 e.eval("var psf_long_array = SharedObject.publicStaticFinalLongArray;");
154 assertEquals(SharedObject.publicStaticFinalLongArray[0], e.eval("SharedObject.publicStaticFinalLongArray[0];"));
155 assertArrayEquals(SharedObject.publicStaticFinalLongArray, (long[])e.get("psf_long_array"));
156 e.eval("var tsf_long_arr = new (Java.type(\"long[]\"))(3);" +
157 "tsf_long_arr[0] = -189009;" +
158 "tsf_long_arr[1] = 456;" +
159 "tsf_long_arr[2] = 600000001;" +
160 "SharedObject.publicStaticFinalLongArray = tsf_long_arr;");
161 // e.eval("o.publicIntArray = [-189009,456,600000001];");
162 assertArrayEquals(new long[] { 19017383333L, -2247358L, 39773787L }, SharedObject.publicStaticFinalLongArray);
163 e.eval("SharedObject.publicStaticFinalLongArray[0] = 10;");
164 assertEquals(10, SharedObject.publicStaticFinalLongArray[0]);
165 }
166
167 // --------------------------------int
168 // tests------------------------------------
169 @Test
170 public void accessFieldInt() throws ScriptException {
171 e.eval("var p_int = o.publicInt;");
172 assertEquals(o.publicInt, e.get("p_int"));
173 e.eval("o.publicInt = 14;");
174 assertEquals(14, o.publicInt);
175 }
176
177 @Test
178 public void accessFieldIntArray() throws ScriptException {
179 e.eval("var p_int_array = o.publicIntArray;");
180 assertEquals(o.publicIntArray[0], e.eval("o.publicIntArray[0];"));
181 assertArrayEquals(o.publicIntArray, (int[])e.get("p_int_array"));
182 e.eval("var t_int_arr = new (Java.type(\"int[]\"))(3);" +
183 "t_int_arr[0] = 4;" +
184 "t_int_arr[1] = 5;" +
185 "t_int_arr[2] = 6;" +
186 "o.publicIntArray = t_int_arr;");
187 assertArrayEquals(new int[] { 4, 5, 6 }, o.publicIntArray);
188 e.eval("o.publicIntArray[0] = 100;");
189 assertEquals(100, o.publicIntArray[0]);
190 }
191
192 @Test
193 public void accessStaticFieldInt() throws ScriptException {
194 e.eval("var ps_int = SharedObject.publicStaticInt;");
195 assertEquals(SharedObject.publicStaticInt, e.get("ps_int"));
196 e.eval("SharedObject.publicStaticInt = 140;");
197 assertEquals(140, SharedObject.publicStaticInt);
198 }
199
200 @Test
201 public void accessStaticFieldIntArray() throws ScriptException {
202 e.eval("var ps_int_array = SharedObject.publicStaticIntArray;");
203 assertEquals(SharedObject.publicStaticIntArray[0], e.eval("SharedObject.publicStaticIntArray[0];"));
204 assertArrayEquals(SharedObject.publicStaticIntArray, (int[])e.get("ps_int_array"));
205 e.eval("var ts_int_arr = new (Java.type(\"int[]\"))(3);" +
206 "ts_int_arr[0] = 4;" +
207 "ts_int_arr[1] = 5;" +
208 "ts_int_arr[2] = 6;" +
209 "SharedObject.publicStaticIntArray = ts_int_arr;");
210 assertArrayEquals(new int[] { 4, 5, 6 }, SharedObject.publicStaticIntArray);
211 e.eval("SharedObject.publicStaticIntArray[0] = 100;");
212 assertEquals(100, SharedObject.publicStaticIntArray[0]);
213 }
214
215 @Test
216 public void accessFinalFieldInt() throws ScriptException {
217 e.eval("var pf_int = o.publicFinalInt;");
218 assertEquals(o.publicFinalInt, e.get("pf_int"));
219
220 e.eval("o.publicFinalInt = 10;");
221 assertEquals(20712023, o.publicFinalInt);
222 }
223
224 @Test
225 public void accessFinalFieldIntArray() throws ScriptException {
226 e.eval("var pf_int_array = o.publicFinalIntArray;");
227 assertEquals(o.publicFinalIntArray[0], e.eval("o.publicFinalIntArray[0];"));
228 assertArrayEquals(o.publicFinalIntArray, (int[])e.get("pf_int_array"));
229 e.eval("var tf_int_arr = new (Java.type(\"int[]\"))(3);" +
230 "tf_int_arr[0] = 4;" +
231 "tf_int_arr[1] = 5;" +
232 "tf_int_arr[2] = 6;" +
233 "o.publicFinalIntArray = tf_int_arr;");
234 assertArrayEquals(new int[] { 50, 80, 130, 210, 340 }, o.publicFinalIntArray);
235 e.eval("o.publicFinalIntArray[0] = 100;");
236 assertEquals(100, o.publicFinalIntArray[0]);
237 }
238
239 @Test
240 public void accessStaticFinalFieldInt() throws ScriptException {
241 e.eval("var psf_int = SharedObject.publicStaticFinalInt;");
242 assertEquals(SharedObject.publicStaticFinalInt, e.get("psf_int"));
243 e.eval("SharedObject.publicStaticFinalInt = 140;");
244 assertEquals(207182023, SharedObject.publicStaticFinalInt);
245 }
246
247 @Test
248 public void accessStaticFinalFieldIntArray() throws ScriptException {
249 e.eval("var psf_int_array = SharedObject.publicStaticFinalIntArray;");
250 assertEquals(SharedObject.publicStaticFinalIntArray[0], e.eval("SharedObject.publicStaticFinalIntArray[0];"));
251 assertArrayEquals(SharedObject.publicStaticFinalIntArray, (int[])e.get("psf_int_array"));
252 e.eval("var tsf_int_arr = new (Java.type(\"int[]\"))(3);" +
253 "tsf_int_arr[0] = 4;" +
254 "tsf_int_arr[1] = 5;" +
255 "tsf_int_arr[2] = 6;" +
256 "SharedObject.publicStaticFinalIntArray = tsf_int_arr;");
257 assertArrayEquals(new int[] { 1308, 210, 340 }, SharedObject.publicStaticFinalIntArray);
258 e.eval("SharedObject.publicStaticFinalIntArray[0] = 100;");
259 assertEquals(100, SharedObject.publicStaticFinalIntArray[0]);
260 }
261
262 // --------------------------------byte
263 // tests------------------------------------
264 @Test
265 public void accessFieldByte() throws ScriptException {
266 e.eval("var p_byte = o.publicByte;");
267 assertEquals((double)o.publicByte, ((Number)e.get("p_byte")).doubleValue());
268 e.eval("o.publicByte = 16;");
269 assertEquals(16, o.publicByte);
270 }
271
272 @Test
273 public void accessFieldByteArray() throws ScriptException {
274 e.eval("var p_byte_array = o.publicByteArray;");
275 assertEquals(o.publicByteArray[0], e.eval("o.publicByteArray[0];"));
276 assertArrayEquals(o.publicByteArray, (byte[])e.get("p_byte_array"));
277 e.eval("var t_byte_arr = new (Java.type(\"byte[]\"))(3);" +
278 "t_byte_arr[0] = -18;" +
279 "t_byte_arr[1] = 56;" +
280 "t_byte_arr[2] = 60;" +
281 "o.publicByteArray = t_byte_arr;");
282 assertArrayEquals(new byte[] { -18, 56, 60 }, o.publicByteArray);
283 e.eval("o.publicByteArray[0] = 100;");
284 assertEquals(100, o.publicByteArray[0]);
285 }
286
287 @Test
288 public void accessStaticFieldByte() throws ScriptException {
289 e.eval("var ps_byte = SharedObject.publicStaticByte;");
290 assertEquals((double)SharedObject.publicStaticByte, ((Number)e.get("ps_byte")).doubleValue());
291 e.eval("SharedObject.publicStaticByte = 16;");
292 assertEquals(16, SharedObject.publicStaticByte);
293 }
294
295 @Test
296 public void accessStaticFieldByteArray() throws ScriptException {
297 e.eval("var ps_byte_array = SharedObject.publicStaticByteArray;");
298 assertEquals(SharedObject.publicStaticByteArray[0], e.eval("SharedObject.publicStaticByteArray[0];"));
299 assertArrayEquals(SharedObject.publicStaticByteArray, (byte[])e.get("ps_byte_array"));
300 e.eval("var ts_byte_arr = new (Java.type(\"byte[]\"))(3);" +
301 "ts_byte_arr[0] = -18;" +
302 "ts_byte_arr[1] = 56;" +
303 "ts_byte_arr[2] = 60;" +
304 "SharedObject.publicStaticByteArray = ts_byte_arr;");
305 assertArrayEquals(new byte[] { -18, 56, 60 }, SharedObject.publicStaticByteArray);
306 e.eval("SharedObject.publicStaticByteArray[0] = -90;");
307 assertEquals(-90, SharedObject.publicStaticByteArray[0]);
308 }
309
310 @Test
311 public void accessFinalFieldByte() throws ScriptException {
312 e.eval("var pf_byte = o.publicFinalByte;");
313 assertEquals((double)o.publicFinalByte, ((Number)e.get("pf_byte")).doubleValue());
314 e.eval("o.publicFinalByte = 16;");
315 assertEquals(-7, o.publicFinalByte);
316 }
317
318 @Test
319 public void accessFinalFieldByteArray() throws ScriptException {
320 e.eval("var pf_byte_array = o.publicFinalByteArray;");
321 assertEquals(o.publicFinalByteArray[0], e.eval("o.publicFinalByteArray[0];"));
322 assertArrayEquals(o.publicFinalByteArray, (byte[])e.get("pf_byte_array"));
323 e.eval("var tf_byte_arr = new (Java.type(\"byte[]\"))(3);" +
324 "tf_byte_arr[0] = -18;" +
325 "tf_byte_arr[1] = 56;" +
326 "tf_byte_arr[2] = 60;" +
327 "o.publicFinalByteArray = tf_byte_arr;");
328 assertArrayEquals(new byte[] { 1, 3, 6, 17, -128 }, o.publicFinalByteArray);
329 e.eval("o.publicFinalByteArray[0] = -90;");
330 assertEquals(-90, o.publicFinalByteArray[0]);
331 }
332
333 @Test
334 public void accessStaticFinalFieldByte() throws ScriptException {
335 e.eval("var psf_byte = SharedObject.publicStaticFinalByte;");
336 assertEquals((double)SharedObject.publicStaticFinalByte, ((Number)e.get("psf_byte")).doubleValue());
337 e.eval("SharedObject.publicStaticFinalByte = 16;");
338 assertEquals(-70, SharedObject.publicStaticFinalByte);
339 }
340
341 @Test
342 public void accessStaticFinalFieldByteArray() throws ScriptException {
343 e.eval("var psf_byte_array = SharedObject.publicStaticFinalByteArray;");
344 assertEquals(SharedObject.publicStaticFinalByteArray[0], e.eval("SharedObject.publicStaticFinalByteArray[0];"));
345 assertArrayEquals(SharedObject.publicStaticFinalByteArray, (byte[])e.get("psf_byte_array"));
346 e.eval("var tsf_byte_arr = new (Java.type(\"byte[]\"))(3);" +
347 "tsf_byte_arr[0] = -18;" +
348 "tsf_byte_arr[1] = 56;" +
349 "tsf_byte_arr[2] = 60;" +
350 "SharedObject.publicStaticFinalByteArray = tsf_byte_arr;");
351 assertArrayEquals(new byte[] { 17, -128, 81 }, SharedObject.publicStaticFinalByteArray);
352 e.eval("SharedObject.publicStaticFinalByteArray[0] = -90;");
353 assertEquals(-90, SharedObject.publicStaticFinalByteArray[0]);
354 }
355
356 // --------------------------------short
357 // tests------------------------------------
358 @Test
359 public void accessFieldShort() throws ScriptException {
360 e.eval("var p_short = o.publicShort;");
361 assertEquals((double)o.publicShort, ((Number)e.get("p_short")).doubleValue());
362 e.eval("o.publicShort = 18;");
363 assertEquals(18, o.publicShort);
364 }
365
366 @Test
367 public void accessFieldShortArray() throws ScriptException {
368 e.eval("var p_short_array = o.publicShortArray;");
369 assertEquals(o.publicShortArray[0], e.eval("o.publicShortArray[0];"));
370 assertArrayEquals(o.publicShortArray, (short[])e.get("p_short_array"));
371 e.eval("var t_short_arr = new (Java.type(\"short[]\"))(3);" +
372 "t_short_arr[0] = 90;" +
373 "t_short_arr[1] = 5;" +
374 "t_short_arr[2] = -6000;" +
375 "o.publicShortArray = t_short_arr;");
376 assertArrayEquals(new short[] { 90, 5, -6000 }, o.publicShortArray);
377 e.eval("o.publicShortArray[0] = -1000;");
378 assertEquals(-1000, o.publicShortArray[0]);
379 }
380
381 @Test
382 public void accessStaticFieldShort() throws ScriptException {
383 e.eval("var ps_short = SharedObject.publicStaticShort;");
384 assertEquals((double)SharedObject.publicStaticShort, ((Number)e.get("ps_short")).doubleValue());
385 e.eval("SharedObject.publicStaticShort = 180;");
386 assertEquals(180, SharedObject.publicStaticShort);
387 }
388
389 @Test
390 public void accessStaticFieldShortArray() throws ScriptException {
391 e.eval("var ps_short_array = SharedObject.publicStaticShortArray;");
392 assertEquals(SharedObject.publicStaticShortArray[0], e.eval("SharedObject.publicStaticShortArray[0];"));
393 assertArrayEquals(SharedObject.publicStaticShortArray, (short[])e.get("ps_short_array"));
394 e.eval("var ts_short_arr = new (Java.type(\"short[]\"))(3);" +
395 "ts_short_arr[0] = 90;" +
396 "ts_short_arr[1] = 5;" +
397 "ts_short_arr[2] = -6000;" +
398 "SharedObject.publicStaticShortArray = ts_short_arr;");
399 assertArrayEquals(new short[] { 90, 5, -6000 }, SharedObject.publicStaticShortArray);
400 e.eval("SharedObject.publicStaticShortArray[0] = -1000;");
401 assertEquals(-1000, SharedObject.publicStaticShortArray[0]);
402 }
403
404 @Test
405 public void accessFinalFieldShort() throws ScriptException {
406 e.eval("var pf_short = o.publicFinalShort;");
407 assertEquals((double)o.publicFinalShort, ((Number)e.get("pf_short")).doubleValue());
408 e.eval("o.publicFinalShort = 180;");
409 assertEquals(31220, o.publicFinalShort);
410 }
411
412 @Test
413 public void accessFinalFieldShortArray() throws ScriptException {
414 e.eval("var pf_short_array = o.publicFinalShortArray;");
415 assertEquals(o.publicFinalShortArray[0], e.eval("o.publicFinalShortArray[0];"));
416 assertArrayEquals(o.publicFinalShortArray, (short[])e.get("pf_short_array"));
417 e.eval("var tf_short_arr = new (Java.type(\"short[]\"))(3);" +
418 "tf_short_arr[0] = 90;" +
419 "tf_short_arr[1] = 5;" +
420 "tf_short_arr[2] = -6000;" +
421 "o.publicFinalShortArray = tf_short_arr;");
422 assertArrayEquals(new short[] { 12240, 9200, -17289, 1200, 12 }, o.publicFinalShortArray);
423 e.eval("o.publicFinalShortArray[0] = -1000;");
424 assertEquals(-1000, o.publicFinalShortArray[0]);
425 }
426
427 @Test
428 public void accessStaticFinalFieldShort() throws ScriptException {
429 e.eval("var psf_short = SharedObject.publicStaticFinalShort;");
430 assertEquals((double)SharedObject.publicStaticFinalShort, ((Number)e.get("psf_short")).doubleValue());
431 e.eval("SharedObject.publicStaticFinalShort = 180;");
432 assertEquals(8888, SharedObject.publicStaticFinalShort);
433 }
434
435 @Test
436 public void accessStaticFinalFieldShortArray() throws ScriptException {
437 e.eval("var psf_short_array = SharedObject.publicStaticFinalShortArray;");
438 assertEquals(SharedObject.publicStaticFinalShortArray[0], e.eval("SharedObject.publicStaticFinalShortArray[0];"));
439 assertArrayEquals(SharedObject.publicStaticFinalShortArray, (short[])e.get("psf_short_array"));
440 e.eval("var tsf_short_arr = new (Java.type(\"short[]\"))(3);" +
441 "tsf_short_arr[0] = 90;" +
442 "tsf_short_arr[1] = 5;" +
443 "tsf_short_arr[2] = -6000;" +
444 "SharedObject.publicStaticFinalShortArray = tsf_short_arr;");
445 assertArrayEquals(new short[] { 8240, 9280, -1289, 120, 812 }, SharedObject.publicStaticFinalShortArray);
446 e.eval("SharedObject.publicStaticFinalShortArray[0] = -1000;");
447 assertEquals(-1000, SharedObject.publicStaticFinalShortArray[0]);
448 }
449
450 // --------------------------------char
451 // tests------------------------------------
452 @Test
453 public void accessFieldChar() throws ScriptException {
454 e.eval("var p_char = o.publicChar;");
455 assertEquals(o.publicChar, e.get("p_char"));
456 e.eval("o.publicChar = 'S';");
457 assertEquals('S', o.publicChar);
458 e.eval("o.publicChar = 10;");
459 assertEquals(10, o.publicChar);
460 e.eval("try {"
461 + " o.publicChar = 'Big string';" +
462 "} catch(e) {" +
463 " var isThrown = true;" +
464 "}");
465 assertEquals("Exception thrown", true, e.get("isThrown"));
466 assertEquals(10, o.publicChar);
467 }
468
469 @Test
470 public void accessFieldCharArray() throws ScriptException {
471 e.eval("var p_char_array = o.publicCharArray;");
472 assertEquals(o.publicCharArray[0], e.eval("o.publicCharArray[0];"));
473 assertArrayEquals(o.publicCharArray, (char[])e.get("p_char_array"));
474 e.eval("var t_char_arr = new (Java.type(\"char[]\"))(3);" +
475 "t_char_arr[0] = 'F';" +
476 "t_char_arr[1] = 'o';" +
477 "t_char_arr[2] = 'o';" +
478 "o.publicCharArray = t_char_arr;");
479 assertArrayEquals("Foo".toCharArray(), o.publicCharArray);
480 e.eval("o.publicCharArray[0] = 'Z';");
481 assertEquals('Z', o.publicCharArray[0]);
482 }
483
484 @Test
485 public void accessStaticFieldChar() throws ScriptException {
486 e.eval("var ps_char = SharedObject.publicStaticChar;");
487 assertEquals(SharedObject.publicStaticChar, e.get("ps_char"));
488 e.eval("SharedObject.publicStaticChar = 'Z';");
489 assertEquals('Z', SharedObject.publicStaticChar);
490 }
491
492 @Test
493 public void accessStaticFieldCharArray() throws ScriptException {
494 e.eval("var ps_char_array = SharedObject.publicStaticCharArray;");
495 assertEquals(SharedObject.publicStaticCharArray[0], e.eval("SharedObject.publicStaticCharArray[0];"));
496 assertArrayEquals(SharedObject.publicStaticCharArray, (char[])e.get("ps_char_array"));
497 e.eval("var ts_char_arr = new (Java.type(\"char[]\"))(3);" +
498 "ts_char_arr[0] = 'G';" +
499 "ts_char_arr[1] = 'o';" +
500 "ts_char_arr[2] = 'o';" +
501 "SharedObject.publicStaticCharArray = ts_char_arr;");
502 assertArrayEquals("Goo".toCharArray(), SharedObject.publicStaticCharArray);
503 e.eval("SharedObject.publicStaticCharArray[0] = 'Z';");
504 assertEquals('Z', SharedObject.publicStaticCharArray[0]);
505 }
506
507 @Test
508 public void accessFinalFieldChar() throws ScriptException {
509 e.eval("var pf_char = o.publicFinalChar;");
510 assertEquals(o.publicFinalChar, e.get("pf_char"));
511 e.eval("o.publicFinalChar = 'S';");
512 assertEquals('E', o.publicFinalChar);
513 }
514
515 @Test
516 public void accessFinalCharArray() throws ScriptException {
517 e.eval("var pf_char_array = o.publicFinalCharArray;");
518 assertEquals(o.publicFinalCharArray[0], e.eval("o.publicFinalCharArray[0];"));
519 assertArrayEquals(o.publicFinalCharArray, (char[])e.get("pf_char_array"));
520 e.eval("var tf_char_arr = new (Java.type(\"char[]\"))(3);" +
521 "tf_char_arr[0] = 'F';" +
522 "tf_char_arr[1] = 'o';" +
523 "tf_char_arr[2] = 'o';" +
524 "o.publicFinalCharArray = tf_char_arr;");
525 assertArrayEquals("Nashorn hello".toCharArray(), o.publicFinalCharArray);
526 e.eval("o.publicFinalCharArray[0] = 'Z';");
527 assertEquals('Z', o.publicFinalCharArray[0]);
528 }
529
530 @Test
531 public void accessStaticFinalFieldChar() throws ScriptException {
532 e.eval("var psf_char = SharedObject.publicStaticFinalChar;");
533 assertEquals(SharedObject.publicStaticFinalChar, e.get("psf_char"));
534 e.eval("SharedObject.publicStaticFinalChar = 'Z';");
535 assertEquals('K', SharedObject.publicStaticFinalChar);
536 }
537
538 @Test
539 public void accessStaticFinalFieldCharArray() throws ScriptException {
540 e.eval("var psf_char_array = SharedObject.publicStaticFinalCharArray;");
541 assertEquals(SharedObject.publicStaticFinalCharArray[0], e.eval("SharedObject.publicStaticFinalCharArray[0];"));
542 assertArrayEquals(SharedObject.publicStaticFinalCharArray, (char[])e.get("psf_char_array"));
543 e.eval("var tsf_char_arr = new (Java.type(\"char[]\"))(3);" +
544 "tsf_char_arr[0] = 'Z';" +
545 "tsf_char_arr[1] = 'o';" +
546 "tsf_char_arr[2] = 'o';" +
547 "SharedObject.publicStaticFinalCharArray = tsf_char_arr;");
548 assertArrayEquals("StaticString".toCharArray(), SharedObject.publicStaticFinalCharArray);
549 e.eval("SharedObject.publicStaticFinalCharArray[0] = 'Z';");
550 assertEquals('Z', SharedObject.publicStaticFinalCharArray[0]);
551 }
552
553 // --------------------------------float
554 // tests------------------------------------
555 @Test
556 public void accessFieldFloat() throws ScriptException {
557 e.eval("var p_float = o.publicFloat;");
558 assertEquals((double)o.publicFloat, ((Number)e.get("p_float")).doubleValue());
559 o.publicFloat = 0.0f / 0.0f;
560 assertEquals(true, e.eval("isNaN(o.publicFloat)"));
561 o.publicFloat = 1.0f / 0.0f;
562 assertEquals(true, e.eval("Number.POSITIVE_INFINITY === o.publicFloat"));
563 o.publicFloat = -1.0f / 0.0f;
564 assertEquals(true, e.eval("Number.NEGATIVE_INFINITY === o.publicFloat"));
565 e.eval("o.publicFloat = 20;");
566 assertEquals(20, o.publicFloat, 1e-10);
567 e.eval("o.publicFloat = 0.0/0.0;");
568 assertTrue(Float.isNaN(o.publicFloat));
569 e.eval("o.publicFloat = 1.0/0.0;");
570 assertEquals(Float.floatToIntBits(Float.POSITIVE_INFINITY), Float.floatToIntBits(o.publicFloat));
571 e.eval("o.publicFloat = -1.0/0.0;");
572 assertEquals(Float.NEGATIVE_INFINITY, o.publicFloat, 1e-10);
573 }
574
575 @Test
576 public void accessFieldFloatArray() throws ScriptException {
577 e.eval("var p_float_array = o.publicFloatArray;");
578 assertEquals(o.publicFloatArray[0], e.eval("o.publicFloatArray[0];"));
579 assertArrayEquals(o.publicFloatArray, (float[])e.get("p_float_array"), 1e-10f);
580 e.eval("var t_float_arr = new (Java.type(\"float[]\"))(3);" +
581 "t_float_arr[0] = 9.0;" +
582 "t_float_arr[1] = 5.12345;" +
583 "t_float_arr[2] = -60.03;" +
584 "o.publicFloatArray = t_float_arr;");
585 assertArrayEquals(new float[] { 9.0f, 5.12345f, -60.03f }, o.publicFloatArray, 1e-10f);
586 e.eval("o.publicFloatArray[0] = -513.2;");
587 assertArrayEquals(new float[] { -513.2f, 5.12345f, -60.03f }, o.publicFloatArray, 1e-10f);
588 }
589
590 @Test
591 public void accessStaticFieldFloat() throws ScriptException {
592 e.eval("var ps_float = SharedObject.publicStaticFloat;");
593 assertEquals((double)SharedObject.publicStaticFloat, ((Number)e.get("ps_float")).doubleValue());
594 SharedObject.publicStaticFloat = 0.0f / 0.0f;
595 assertEquals(true, e.eval("isNaN(SharedObject.publicStaticFloat)"));
596 SharedObject.publicStaticFloat = 1.0f / 0.0f;
597 assertEquals(true, e.eval("Number.POSITIVE_INFINITY === SharedObject.publicStaticFloat"));
598 SharedObject.publicStaticFloat = -1.0f / 0.0f;
599 assertEquals(true, e.eval("Number.NEGATIVE_INFINITY === SharedObject.publicStaticFloat"));
600 e.eval("SharedObject.publicStaticFloat = 20.0;");
601 assertEquals(20.0f, SharedObject.publicStaticFloat, 1e-10);
602 e.eval("SharedObject.publicStaticFloat = 0.0/0.0;");
603 assertTrue(Float.isNaN(SharedObject.publicStaticFloat));
604 e.eval("SharedObject.publicStaticFloat = 1.0/0.0;");
605 assertEquals(Float.floatToIntBits(Float.POSITIVE_INFINITY), Float.floatToIntBits(SharedObject.publicStaticFloat));
606 e.eval("SharedObject.publicStaticFloat = -1.0/0.0;");
607 assertEquals(Float.floatToIntBits(Float.NEGATIVE_INFINITY), Float.floatToIntBits(SharedObject.publicStaticFloat));
608 }
609
610 @Test
611 public void accessStaticFieldFloatArray() throws ScriptException {
612 e.eval("var ps_float_array = SharedObject.publicStaticFloatArray;");
613 assertEquals(SharedObject.publicStaticFloatArray[0], e.eval("SharedObject.publicStaticFloatArray[0];"));
614 assertArrayEquals(SharedObject.publicStaticFloatArray, (float[])e.get("ps_float_array"), 1e-10f);
615 e.eval("var ts_float_arr = new (Java.type(\"float[]\"))(3);" +
616 "ts_float_arr[0] = 9.0;" +
617 "ts_float_arr[1] = 5.12345;" +
618 "ts_float_arr[2] = -60.03;" +
619 "SharedObject.publicStaticFloatArray = ts_float_arr;");
620 assertArrayEquals(new float[] { 9.0f, 5.12345f, -60.03f }, SharedObject.publicStaticFloatArray, 1e-10f);
621 e.eval("SharedObject.publicStaticFloatArray[0] = -513.2;");
622 assertArrayEquals(new float[] { -513.2f, 5.12345f, -60.03f }, SharedObject.publicStaticFloatArray, 1e-10f);
623 }
624
625 @Test
626 public void accessFinalFloat() throws ScriptException {
627 e.eval("var pf_float = o.publicFinalFloat;");
628 assertEquals((double)o.publicFinalFloat, ((Number)e.get("pf_float")).doubleValue());
629 e.eval("o.publicFinalFloat = 20.0;");
630 assertEquals(7.72e8f, o.publicFinalFloat, 1e-10);
631 }
632
633 @Test
634 public void accessFinalFloatArray() throws ScriptException {
635 e.eval("var pf_float_array = o.publicFinalFloatArray;");
636 assertEquals(o.publicFinalFloatArray[0], e.eval("o.publicFinalFloatArray[0];"));
637 assertArrayEquals(o.publicFinalFloatArray, (float[])e.get("pf_float_array"), 1e-10f);
638 e.eval("var tf_float_arr = new (Java.type(\"float[]\"))(3);" +
639 "tf_float_arr[0] = 9.0;" +
640 "tf_float_arr[1] = 5.12345;" +
641 "tf_float_arr[2] = -60.03;" +
642 "o.publicFinalFloatArray = tf_float_arr;");
643 assertArrayEquals(new float[] { -131.012f, 189.32f, -31.32e8f, 3.72f }, o.publicFinalFloatArray, 1e-10f);
644 e.eval("o.publicFinalFloatArray[0] = -513.2;");
645 assertEquals(-513.2f, o.publicFinalFloatArray[0], 1e-10f);
646 }
647
648 @Test
649 public void accessStaticFinalFieldFloat() throws ScriptException {
650 e.eval("var psf_float = SharedObject.publicStaticFinalFloat;");
651 assertEquals((double)SharedObject.publicStaticFinalFloat, ((Number)e.get("psf_float")).doubleValue());
652 e.eval("SharedObject.publicStaticFinalFloat = 20.0;");
653 assertEquals(0.72e8f, SharedObject.publicStaticFinalFloat, 1e-10);
654 }
655
656 @Test
657 public void accessStaticFinalFieldFloatArray() throws ScriptException {
658 e.eval("var psf_float_array = SharedObject.publicStaticFinalFloatArray;");
659 assertEquals(SharedObject.publicStaticFinalFloatArray[0], e.eval("SharedObject.publicStaticFinalFloatArray[0];"));
660 assertArrayEquals(SharedObject.publicStaticFinalFloatArray, (float[])e.get("psf_float_array"), 1e-10f);
661 e.eval("var tsf_float_arr = new (Java.type(\"float[]\"))(3);" +
662 "tsf_float_arr[0] = 9.0;" +
663 "tsf_float_arr[1] = 5.12345;" +
664 "tsf_float_arr[2] = -60.03;" +
665 "SharedObject.publicStaticFinalFloatArray = tsf_float_arr;");
666 assertArrayEquals(new float[] { -8131.012f, 9.32f, -138.32e8f, 0.72f }, SharedObject.publicStaticFinalFloatArray, 1e-10f);
667 e.eval("SharedObject.publicStaticFinalFloatArray[0] = -513.2;");
668 assertEquals(-513.2f, SharedObject.publicStaticFinalFloatArray[0], 1e-10f);
669 }
670
671 // --------------------------------double
672 // tests------------------------------------
673 @Test
674 public void accessFieldDouble() throws ScriptException {
675 e.eval("var p_double = o.publicDouble;");
676 assertEquals(o.publicDouble, e.get("p_double"));
677 o.publicDouble = 0.0 / 0.0;
678 assertEquals(true, e.eval("isNaN(o.publicDouble)"));
679 o.publicDouble = 1.0 / 0.0;
680 assertEquals(true, e.eval("Number.POSITIVE_INFINITY === o.publicDouble"));
681 o.publicDouble = -1.0 / 0.0;
682 assertEquals(true, e.eval("Number.NEGATIVE_INFINITY === o.publicDouble"));
683 e.eval("o.publicDouble = 30;");
684 assertEquals(Double.doubleToLongBits(30.0), Double.doubleToLongBits(o.publicDouble));
685 e.eval("o.publicDouble = 0.0/0.0;");
686 assertTrue(Double.isNaN(o.publicDouble));
687 e.eval("o.publicDouble = 1.0/0.0;");
688 assertEquals(Double.doubleToLongBits(Double.POSITIVE_INFINITY), Double.doubleToLongBits(o.publicDouble));
689 e.eval("o.publicDouble = -1.0/0.0;");
690 assertEquals(Double.doubleToLongBits(Double.NEGATIVE_INFINITY), Double.doubleToLongBits(o.publicDouble));
691 }
692
693 @Test
694 public void accessFieldDoubleArrayRead() throws ScriptException {
695 e.eval("var p_double_array = o.publicDoubleArray;");
696 assertEquals(o.publicDoubleArray[0], e.eval("o.publicDoubleArray[0];"));
697 assertArrayEquals(o.publicDoubleArray, (double[])e.get("p_double_array"), 1e-10);
698 e.eval("var t_double_arr = new (Java.type(\"double[]\"))(3);" +
699 "t_double_arr[0] = 9e10;" +
700 "t_double_arr[1] = 0.677777;" +
701 "t_double_arr[2] = -0.0000001;" +
702 "o.publicDoubleArray = t_double_arr;");
703 assertArrayEquals(new double[] { 9e10, 0.677777, -0.0000001 }, o.publicDoubleArray, 1e-10f);
704 e.eval("o.publicDoubleArray[0] = -5.2e10;");
705 assertEquals(-5.2e10, o.publicDoubleArray[0], 1e-10f);
706 }
707
708 @Test
709 public void accessStaticFieldDouble() throws ScriptException {
710 e.eval("var ps_double = SharedObject.publicStaticDouble;");
711 assertEquals(SharedObject.publicStaticDouble, e.get("ps_double"));
712 SharedObject.publicStaticDouble = 0.0 / 0.0;
713 assertEquals(true, e.eval("isNaN(SharedObject.publicStaticDouble)"));
714 SharedObject.publicStaticDouble = 1.0 / 0.0;
715 assertEquals(true, e.eval("Number.POSITIVE_INFINITY === SharedObject.publicStaticDouble"));
716 SharedObject.publicStaticDouble = -1.0 / 0.0;
717 assertEquals(true, e.eval("Number.NEGATIVE_INFINITY === SharedObject.publicStaticDouble"));
718 e.eval("SharedObject.publicStaticDouble = 40.0;");
719 assertEquals(Double.doubleToLongBits(40.0), Double.doubleToLongBits(SharedObject.publicStaticDouble));
720 e.eval("SharedObject.publicStaticDouble = 0.0/0.0;");
721 assertTrue(Double.isNaN(SharedObject.publicStaticDouble));
722 e.eval("SharedObject.publicStaticDouble = 1.0/0.0;");
723 assertEquals(Double.doubleToLongBits(Double.POSITIVE_INFINITY), Double.doubleToLongBits(SharedObject.publicStaticDouble));
724 e.eval("SharedObject.publicStaticDouble = -1.0/0.0;");
725 assertEquals(Double.doubleToLongBits(Double.NEGATIVE_INFINITY), Double.doubleToLongBits(SharedObject.publicStaticDouble));
726 }
727
728 @Test
729 public void accessStaticFieldDoubleArrayRead() throws ScriptException {
730 e.eval("var ps_double_array = SharedObject.publicStaticDoubleArray;");
731 assertEquals(SharedObject.publicStaticDoubleArray[0], e.eval("SharedObject.publicStaticDoubleArray[0];"));
732 assertArrayEquals(SharedObject.publicStaticDoubleArray, (double[])e.get("ps_double_array"), 1e-10);
733 e.eval("var ts_double_arr = new (Java.type(\"double[]\"))(3);" +
734 "ts_double_arr[0] = 9e10;" +
735 "ts_double_arr[1] = 0.677777;" +
736 "ts_double_arr[2] = -0.0000001;" +
737 "SharedObject.publicStaticDoubleArray = ts_double_arr;");
738 assertArrayEquals(new double[] { 9e10, 0.677777, -0.0000001 }, SharedObject.publicStaticDoubleArray, 1e-10f);
739 e.eval("SharedObject.publicStaticDoubleArray[0] = -5.2e10;");
740 assertEquals(-5.2e10, SharedObject.publicStaticDoubleArray[0], 1e-10f);
741 }
742
743 @Test
744 public void accessFinalFieldDouble() throws ScriptException {
745 e.eval("var pf_double = o.publicFinalDouble;");
746 assertEquals(o.publicFinalDouble, e.get("pf_double"));
747 e.eval("o.publicFinalDouble = 30.0;");
748 assertEquals(Double.doubleToLongBits(1.3412e20), Double.doubleToLongBits(o.publicFinalDouble));
749 }
750
751 @Test
752 public void accessFinalFieldDoubleArrayRead() throws ScriptException {
753 e.eval("var pf_double_array = o.publicFinalDoubleArray;");
754 assertEquals(o.publicFinalDoubleArray[0], e.eval("o.publicFinalDoubleArray[0];"));
755 assertArrayEquals(o.publicFinalDoubleArray, (double[])e.get("pf_double_array"), 1e-10);
756 e.eval("var tf_double_arr = new (Java.type(\"double[]\"))(3);" +
757 "tf_double_arr[0] = 9e10;" +
758 "tf_double_arr[1] = 0.677777;" +
759 "tf_double_arr[2] = -0.0000001;" +
760 "o.publicFinalDoubleArray = tf_double_arr;");
761 assertArrayEquals(new double[] { 0.725e80, 0.12e10, 8e-3, 1.00077 }, o.publicFinalDoubleArray, 1e-10f);
762 e.eval("o.publicFinalDoubleArray[0] = -5.2e10;");
763 assertEquals(-5.2e10, o.publicFinalDoubleArray[0], 1e-10f);
764 }
765
766 @Test
767 public void accessStaticFinalFieldDouble() throws ScriptException {
768 e.eval("var psf_double = SharedObject.publicStaticFinalDouble;");
769 assertEquals(SharedObject.publicStaticFinalDouble, e.get("psf_double"));
770 e.eval("SharedObject.publicStaticFinalDouble = 40.0;");
771 assertEquals(Double.doubleToLongBits(1.8e12), Double.doubleToLongBits(SharedObject.publicStaticFinalDouble));
772 }
773
774 @Test
775 public void accessStaticFinalFieldDoubleArrayRead() throws ScriptException {
776 e.eval("var psf_double_array = SharedObject.publicStaticFinalDoubleArray;");
777 assertEquals(SharedObject.publicStaticFinalDoubleArray[0], e.eval("SharedObject.publicStaticFinalDoubleArray[0];"));
778 assertArrayEquals(SharedObject.publicStaticFinalDoubleArray, (double[])e.get("psf_double_array"), 1e-10);
779 e.eval("var tsf_double_arr = new (Java.type(\"double[]\"))(3);" +
780 "tsf_double_arr[0] = 9e10;" +
781 "tsf_double_arr[1] = 0.677777;" +
782 "tsf_double_arr[2] = -0.0000001;" +
783 "SharedObject.publicStaticFinalDoubleArray = tsf_double_arr;");
784 assertArrayEquals(new double[] { 8.725e80, 0.82e10, 18e-3, 1.08077 }, SharedObject.publicStaticFinalDoubleArray, 1e-10f);
785 e.eval("SharedObject.publicStaticFinalDoubleArray[0] = -5.2e10;");
786 assertEquals(-5.2e10, SharedObject.publicStaticFinalDoubleArray[0], 1e-10f);
787 }
788
789 }
--- EOF ---