1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java Mon Feb 11 21:26:06 2013 +0530 1.3 @@ -0,0 +1,152 @@ 1.4 +/* 1.5 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 1.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.7 + * 1.8 + * This code is free software; you can redistribute it and/or modify it 1.9 + * under the terms of the GNU General Public License version 2 only, as 1.10 + * published by the Free Software Foundation. Oracle designates this 1.11 + * particular file as subject to the "Classpath" exception as provided 1.12 + * by Oracle in the LICENSE file that accompanied this code. 1.13 + * 1.14 + * This code is distributed in the hope that it will be useful, but WITHOUT 1.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1.17 + * version 2 for more details (a copy is included in the LICENSE file that 1.18 + * accompanied this code). 1.19 + * 1.20 + * You should have received a copy of the GNU General Public License version 1.21 + * 2 along with this work; if not, write to the Free Software Foundation, 1.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1.23 + * 1.24 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 1.25 + * or visit www.oracle.com if you need additional information or have any 1.26 + * questions. 1.27 + */ 1.28 + 1.29 +package jdk.nashorn.api.javaaccess; 1.30 + 1.31 +import static org.testng.AssertJUnit.assertEquals; 1.32 +import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; 1.33 + 1.34 +import javax.script.ScriptEngine; 1.35 +import javax.script.ScriptEngineManager; 1.36 +import javax.script.ScriptException; 1.37 +import org.testng.TestNG; 1.38 +import org.testng.annotations.BeforeClass; 1.39 +import org.testng.annotations.Test; 1.40 + 1.41 +public class ObjectAccessTest { 1.42 + 1.43 + private static ScriptEngine e = null; 1.44 + private static SharedObject o = new SharedObject(); 1.45 + 1.46 + public static void main(final String[] args) { 1.47 + TestNG.main(args); 1.48 + } 1.49 + 1.50 + @BeforeClass 1.51 + public static void setUpClass() throws ScriptException { 1.52 + final ScriptEngineManager m = new ScriptEngineManager(); 1.53 + e = m.getEngineByName("nashorn"); 1.54 + e.put("o", o); 1.55 + e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;"); 1.56 + e.eval("var Person = Packages.jdk.nashorn.internal.access.Person;"); 1.57 + } 1.58 + 1.59 + @Test 1.60 + public void accessFieldObject() throws ScriptException { 1.61 + e.eval("var p_object = o.publicObject;"); 1.62 + assertEquals(o.publicObject, e.get("p_object")); 1.63 + assertEquals("object", e.eval("typeof p_object;")); 1.64 + e.eval("o.publicObject = new Person(14);"); 1.65 + assertEquals(new Person(14), o.publicObject); 1.66 + } 1.67 + 1.68 + @Test 1.69 + public void accessFieldObjectArray() throws ScriptException { 1.70 + e.eval("var p_object_array = o.publicObjectArray;"); 1.71 + assertEquals(o.publicObjectArray[0], e.eval("o.publicObjectArray[0]")); 1.72 + assertArrayEquals(o.publicObjectArray, (Object[])e.get("p_object_array")); 1.73 + e.eval("var t_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 1.74 + "t_object_arr[0] = new Person(100);" + 1.75 + "t_object_arr[1] = new Person(120);" + 1.76 + "t_object_arr[2] = new Person(140);" + 1.77 + "o.publicObjectArray = t_object_arr;"); 1.78 + assertArrayEquals(new Person[] { new Person(100), new Person(120), new Person(140) }, o.publicObjectArray); 1.79 + e.eval("o.publicObjectArray[0] = new Person(10);"); 1.80 + assertEquals(new Person(10), o.publicObjectArray[0]); 1.81 + } 1.82 + 1.83 + @Test 1.84 + public void accessStaticFieldObject() throws ScriptException { 1.85 + e.eval("var ps_object = SharedObject.publicStaticObject;"); 1.86 + assertEquals(SharedObject.publicStaticObject, e.get("ps_object")); 1.87 + assertEquals("object", e.eval("typeof ps_object;")); 1.88 + e.eval("SharedObject.publicStaticObject = new Person(16);"); 1.89 + assertEquals(new Person(16), SharedObject.publicStaticObject); 1.90 + } 1.91 + 1.92 + @Test 1.93 + public void accessStaticFieldObjectArray() throws ScriptException { 1.94 + e.eval("var ps_object_array = SharedObject.publicStaticObjectArray;"); 1.95 + assertEquals(SharedObject.publicStaticObjectArray[0], e.eval("SharedObject.publicStaticObjectArray[0]")); 1.96 + assertArrayEquals(SharedObject.publicStaticObjectArray, (Object[])e.get("ps_object_array")); 1.97 + e.eval("var ts_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 1.98 + "ts_object_arr[0] = new Person(100);" + 1.99 + "ts_object_arr[1] = new Person(120);" + 1.100 + "ts_object_arr[2] = new Person(140);" + 1.101 + "SharedObject.publicStaticObjectArray = ts_object_arr;"); 1.102 + assertArrayEquals(new Person[] { new Person(100), new Person(120), new Person(140) }, SharedObject.publicStaticObjectArray); 1.103 + e.eval("SharedObject.publicStaticObjectArray[0] = new Person(10);"); 1.104 + assertEquals(new Person(10), SharedObject.publicStaticObjectArray[0]); 1.105 + } 1.106 + 1.107 + @Test 1.108 + public void accessFinalFieldObject() throws ScriptException { 1.109 + e.eval("var pf_object = o.publicFinalObject;"); 1.110 + assertEquals(o.publicFinalObject, e.get("pf_object")); 1.111 + assertEquals("object", e.eval("typeof pf_object;")); 1.112 + e.eval("o.publicFinalObject = new Person(-999);"); 1.113 + assertEquals(new Person(1024), o.publicFinalObject); 1.114 + } 1.115 + 1.116 + @Test 1.117 + public void accessFinalFieldObjectArray() throws ScriptException { 1.118 + e.eval("var pf_object_array = o.publicFinalObjectArray;"); 1.119 + assertEquals(o.publicFinalObjectArray[0], e.eval("o.publicFinalObjectArray[0]")); 1.120 + assertArrayEquals(o.publicFinalObjectArray, (Object[])e.get("pf_object_array")); 1.121 + e.eval("var tf_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 1.122 + "tf_object_arr[0] = new Person(100);" + 1.123 + "tf_object_arr[1] = new Person(120);" + 1.124 + "tf_object_arr[2] = new Person(140);" + 1.125 + "o.publicOFinalbjectArray = tf_object_arr;"); 1.126 + assertArrayEquals(new Person[] { new Person(-900), new Person(1000), new Person(180) }, o.publicFinalObjectArray); 1.127 + e.eval("o.publicFinalObjectArray[0] = new Person(10);"); 1.128 + assertEquals(new Person(10), o.publicFinalObjectArray[0]); 1.129 + } 1.130 + 1.131 + @Test 1.132 + public void accessStaticFinalFieldObject() throws ScriptException { 1.133 + e.eval("var psf_object = SharedObject.publicStaticFinalObject;"); 1.134 + assertEquals(SharedObject.publicStaticFinalObject, e.get("psf_object")); 1.135 + assertEquals("object", e.eval("typeof psf_object;")); 1.136 + e.eval("SharedObject.publicStaticFinalObject = new Person(6);"); 1.137 + assertEquals(new Person(2048), SharedObject.publicStaticFinalObject); 1.138 + } 1.139 + 1.140 + @Test 1.141 + public void accessStaticFinalFieldObjectArray() throws ScriptException { 1.142 + e.eval("var psf_object_array = SharedObject.publicStaticFinalObjectArray;"); 1.143 + assertEquals(SharedObject.publicStaticFinalObjectArray[0], e.eval("SharedObject.publicStaticFinalObjectArray[0]")); 1.144 + assertArrayEquals(SharedObject.publicStaticFinalObjectArray, (Object[])e.get("psf_object_array")); 1.145 + e.eval("var tsf_object_arr = java.lang.reflect.Array.newInstance(Person.class, 3);" + 1.146 + "tsf_object_arr[0] = new Person(100);" + 1.147 + "tsf_object_arr[1] = new Person(120);" + 1.148 + "tsf_object_arr[2] = new Person(140);" + 1.149 + "SharedObject.publicStaticFinalObjectArray = tsf_object_arr;"); 1.150 + assertArrayEquals(new Person[] { new Person(-9), new Person(110), new Person(Integer.MAX_VALUE) }, SharedObject.publicStaticFinalObjectArray); 1.151 + e.eval("SharedObject.publicStaticFinalObjectArray[0] = new Person(90);"); 1.152 + assertEquals(new Person(90), SharedObject.publicStaticFinalObjectArray[0]); 1.153 + } 1.154 + 1.155 +}