StringAccessTest.java revision 1243:df6c3e9c1a0b
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 26package jdk.nashorn.api.javaaccess.test; 27 28import static org.testng.AssertJUnit.assertEquals; 29import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; 30import javax.script.ScriptEngine; 31import javax.script.ScriptEngineManager; 32import javax.script.ScriptException; 33import org.testng.TestNG; 34import org.testng.annotations.AfterClass; 35import org.testng.annotations.BeforeClass; 36import org.testng.annotations.Test; 37 38/** 39 * @test 40 * @build jdk.nashorn.api.javaaccess.test.SharedObject jdk.nashorn.api.javaaccess.test.Person jdk.nashorn.api.javaaccess.test.StringAccessTest 41 * @run testng/othervm jdk.nashorn.api.javaaccess.test.StringAccessTest 42 */ 43@SuppressWarnings("javadoc") 44public class StringAccessTest { 45 46 private static ScriptEngine e = null; 47 private static SharedObject o = null; 48 49 public static void main(final String[] args) { 50 TestNG.main(args); 51 } 52 53 @BeforeClass 54 public static void setUpClass() throws ScriptException { 55 final ScriptEngineManager m = new ScriptEngineManager(); 56 e = m.getEngineByName("nashorn"); 57 o = new SharedObject(); 58 e.put("o", o); 59 e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.test.SharedObject;"); 60 } 61 62 @AfterClass 63 public static void tearDownClass() { 64 e = null; 65 o = null; 66 } 67 68 @Test 69 public void accessFieldString() throws ScriptException { 70 e.eval("var p_string = o.publicString;"); 71 assertEquals(o.publicString, e.get("p_string")); 72 assertEquals("string", e.eval("typeof p_string;")); 73 e.eval("o.publicString = 'changedString';"); 74 assertEquals("changedString", o.publicString); 75 } 76 77 @Test 78 public void accessFieldStringArray() throws ScriptException { 79 e.eval("var p_string_array = o.publicStringArray;"); 80 assertEquals(o.publicStringArray[0], e.eval("o.publicStringArray[0]")); 81 assertArrayEquals(o.publicStringArray, (String[])e.get("p_string_array")); 82 e.eval("var t_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 83 "t_string_arr[0] = 'abc';" + 84 "t_string_arr[1] = '123';" + 85 "t_string_arr[2] = 'xyzzzz';" + 86 "o.publicStringArray = t_string_arr;"); 87 assertArrayEquals(new String[] { "abc", "123", "xyzzzz" }, o.publicStringArray); 88 e.eval("o.publicStringArray[0] = 'nashorn';"); 89 assertEquals("nashorn", o.publicStringArray[0]); 90 } 91 92 @Test 93 public void accessStaticFieldString() throws ScriptException { 94 e.eval("var ps_string = SharedObject.publicStaticString;"); 95 assertEquals(SharedObject.publicStaticString, e.get("ps_string")); 96 assertEquals("string", e.eval("typeof ps_string;")); 97 e.eval("SharedObject.publicStaticString = 'changedString';"); 98 assertEquals("changedString", SharedObject.publicStaticString); 99 } 100 101 @Test 102 public void accessStaticFieldStringArray() throws ScriptException { 103 e.eval("var ps_string_array = SharedObject.publicStaticStringArray;"); 104 assertEquals(SharedObject.publicStaticStringArray[0], e.eval("SharedObject.publicStaticStringArray[0]")); 105 assertArrayEquals(SharedObject.publicStaticStringArray, (String[])e.get("ps_string_array")); 106 e.eval("var ts_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 107 "ts_string_arr[0] = 'abc';" + 108 "ts_string_arr[1] = '123';" + 109 "ts_string_arr[2] = 'xyzzzz';" + 110 "SharedObject.publicStaticStringArray = ts_string_arr;"); 111 assertArrayEquals(new String[] { "abc", "123", "xyzzzz" }, SharedObject.publicStaticStringArray); 112 e.eval("SharedObject.publicStaticStringArray[0] = 'nashorn';"); 113 assertEquals("nashorn", SharedObject.publicStaticStringArray[0]); 114 } 115 116 @Test 117 public void accessFinalFieldString() throws ScriptException { 118 e.eval("var pf_string = o.publicFinalString;"); 119 assertEquals(o.publicFinalString, e.get("pf_string")); 120 assertEquals("string", e.eval("typeof pf_string;")); 121 e.eval("o.publicFinalString = 'changedString';"); 122 assertEquals("PublicFinalString", o.publicFinalString); 123 } 124 125 @Test 126 public void accessFinalFieldStringArray() throws ScriptException { 127 e.eval("var pf_string_array = o.publicFinalStringArray;"); 128 assertEquals(o.publicFinalStringArray[0], e.eval("o.publicFinalStringArray[0]")); 129 assertArrayEquals(o.publicFinalStringArray, (String[])e.get("pf_string_array")); 130 e.eval("var tf_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 131 "tf_string_arr[0] = 'abc';" + 132 "tf_string_arr[1] = '123';" + 133 "tf_string_arr[2] = 'xyzzzz';" + 134 "o.publicFinalStringArray = tf_string_arr;"); 135 assertArrayEquals(new String[] { "FinalArrayString[0]", "FinalArrayString[1]", "FinalArrayString[2]", "FinalArrayString[3]" }, o.publicFinalStringArray); 136 e.eval("o.publicFinalStringArray[0] = 'nashorn';"); 137 assertEquals("nashorn", o.publicFinalStringArray[0]); 138 } 139 140 @Test 141 public void accessStaticFinalFieldString() throws ScriptException { 142 e.eval("var psf_string = SharedObject.publicStaticFinalString;"); 143 assertEquals(SharedObject.publicStaticFinalString, e.get("psf_string")); 144 assertEquals("string", e.eval("typeof psf_string;")); 145 e.eval("SharedObject.publicStaticFinalString = 'changedString';"); 146 assertEquals("PublicStaticFinalString", SharedObject.publicStaticFinalString); 147 } 148 149 @Test 150 public void accessStaticFinalFieldStringArray() throws ScriptException { 151 e.eval("var psf_string_array = SharedObject.publicStaticFinalStringArray;"); 152 assertEquals(SharedObject.publicStaticFinalStringArray[0], e.eval("SharedObject.publicStaticFinalStringArray[0]")); 153 assertArrayEquals(SharedObject.publicStaticFinalStringArray, (String[])e.get("psf_string_array")); 154 e.eval("var tsf_string_arr = new (Java.type(\"java.lang.String[]\"))(3);" + 155 "tsf_string_arr[0] = 'abc';" + 156 "tsf_string_arr[1] = '123';" + 157 "tsf_string_arr[2] = 'xyzzzz';" + 158 "SharedObject.publicStaticFinalStringArray = tsf_string_arr;"); 159 assertArrayEquals(new String[] { "StaticFinalArrayString[0]", 160 "StaticFinalArrayString[1]", 161 "StaticFinalArrayString[2]", 162 "StaticFinalArrayString[3]" }, 163 SharedObject.publicStaticFinalStringArray); 164 e.eval("SharedObject.publicStaticFinalStringArray[0] = 'nashorn';"); 165 assertEquals("nashorn", SharedObject.publicStaticFinalStringArray[0]); 166 } 167 168} 169