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 java.util.Arrays; 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.BooleanAccessTest 42 * @run testng/othervm jdk.nashorn.api.javaaccess.test.BooleanAccessTest 43 */ 44 @SuppressWarnings("javadoc") 45 public class BooleanAccessTest { 46 47 private static ScriptEngine e = null; 48 private static SharedObject o = null; 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 @Test 70 public void accessFieldBoolean() throws ScriptException { 71 e.eval("var p_boolean = o.publicBoolean;"); 72 assertEquals(o.publicBoolean, e.get("p_boolean")); 73 assertEquals("boolean", e.eval("typeof p_boolean;")); 74 e.eval("o.publicBoolean = false;"); 75 assertEquals(false, o.publicBoolean); 76 } 77 78 @Test 79 public void accessFieldBooleanArray() throws ScriptException { 80 e.eval("var p_boolean_array = o.publicBooleanArray;"); 81 assertEquals(o.publicBooleanArray[0], e.eval("o.publicBooleanArray[0]")); 82 assertTrue(Arrays.equals(o.publicBooleanArray, (boolean[])e.get("p_boolean_array"))); 83 e.eval("var t_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 84 "t_boolean_arr[0] = true;" + 85 "t_boolean_arr[1] = false;" + 86 "t_boolean_arr[2] = false;" + 87 "o.publicBooleanArray = t_boolean_arr;"); 88 assertTrue(Arrays.equals(new boolean[] { true, false, false }, o.publicBooleanArray)); 89 e.eval("o.publicBooleanArray[0] = false;"); 90 assertEquals(false, o.publicBooleanArray[0]); 91 } 92 93 @Test 94 public void accessStaticFieldBoolean() throws ScriptException { 95 e.eval("var ps_boolean = SharedObject.publicStaticBoolean;"); 96 assertEquals(SharedObject.publicStaticBoolean, e.get("ps_boolean")); 97 assertEquals("boolean", e.eval("typeof ps_boolean;")); 98 e.eval("SharedObject.publicStaticBoolean = false;"); 99 assertEquals(false, SharedObject.publicStaticBoolean); 100 } 101 102 @Test 103 public void accessStaticFieldBooleanArray() throws ScriptException { 104 e.eval("var ps_boolean_array = SharedObject.publicStaticBooleanArray;"); 105 assertEquals(SharedObject.publicStaticBooleanArray[0], e.eval("SharedObject.publicStaticBooleanArray[0]")); 106 assertTrue(Arrays.equals(SharedObject.publicStaticBooleanArray, (boolean[])e.get("ps_boolean_array"))); 107 e.eval("var ts_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 108 "ts_boolean_arr[0] = true;" + 109 "ts_boolean_arr[1] = false;" + 110 "ts_boolean_arr[2] = true;" + 111 "SharedObject.publicStaticBooleanArray = ts_boolean_arr;"); 112 assertTrue(Arrays.equals(new boolean[] { true, false, true }, SharedObject.publicStaticBooleanArray)); 113 e.eval("SharedObject.publicStaticBooleanArray[0] = false;"); 114 assertEquals(false, SharedObject.publicStaticBooleanArray[0]); 115 } 116 117 @Test 118 public void accessFinalFieldBoolean() throws ScriptException { 119 e.eval("var pf_boolean = o.publicFinalBoolean;"); 120 assertEquals(o.publicFinalBoolean, e.get("pf_boolean")); 121 assertEquals("boolean", e.eval("typeof pf_boolean;")); 122 e.eval("o.publicFinalBoolean = false;"); 123 assertEquals(true, o.publicFinalBoolean); 124 } 125 126 @Test 127 public void accessFinalFieldBooleanArray() throws ScriptException { 128 e.eval("var pf_boolean_array = o.publicFinalBooleanArray;"); 129 assertEquals(o.publicFinalBooleanArray[0], e.eval("o.publicFinalBooleanArray[0]")); 130 assertTrue(Arrays.equals(o.publicFinalBooleanArray, (boolean[])e.get("pf_boolean_array"))); 131 e.eval("var tf_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 132 "tf_boolean_arr[0] = false;" + 133 "tf_boolean_arr[1] = false;" + 134 "tf_boolean_arr[2] = true;" + 135 "o.publicOFinalbjectArray = tf_boolean_arr;"); 136 assertTrue(Arrays.equals(new boolean[] { false, false, true, false }, o.publicFinalBooleanArray)); 137 e.eval("o.publicFinalBooleanArray[0] = true;"); 138 assertEquals(true, o.publicFinalBooleanArray[0]); 139 } 140 141 @Test 142 public void accessStaticFinalFieldBoolean() throws ScriptException { 143 e.eval("var psf_boolean = SharedObject.publicStaticFinalBoolean;"); 144 assertEquals(SharedObject.publicStaticFinalBoolean, e.get("psf_boolean")); 145 assertEquals("boolean", e.eval("typeof psf_boolean;")); 146 e.eval("SharedObject.publicStaticFinalBoolean = false;"); 147 assertEquals(true, SharedObject.publicStaticFinalBoolean); 148 } 149 150 @Test 151 public void accessStaticFinalFieldBooleanArray() throws ScriptException { 152 e.eval("var psf_boolean_array = SharedObject.publicStaticFinalBooleanArray;"); 153 assertEquals(SharedObject.publicStaticFinalBooleanArray[0], e.eval("SharedObject.publicStaticFinalBooleanArray[0]")); 154 assertTrue(Arrays.equals(SharedObject.publicStaticFinalBooleanArray, (boolean[])e.get("psf_boolean_array"))); 155 e.eval("var tsf_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 156 "tsf_boolean_arr[0] = false;" + 157 "tsf_boolean_arr[1] = true;" + 158 "tsf_boolean_arr[2] = false;" + 159 "SharedObject.publicStaticFinalBooleanArray = tsf_boolean_arr;"); 160 assertTrue(Arrays.equals(new boolean[] { false, true, false, false }, SharedObject.publicStaticFinalBooleanArray)); 161 e.eval("SharedObject.publicStaticFinalBooleanArray[0] = true;"); 162 assertEquals(true, SharedObject.publicStaticFinalBooleanArray[0]); 163 } 164 165 @Test 166 public void accessFieldBooleanBoxing() throws ScriptException { 167 e.eval("var p_boolean_box = o.publicBooleanBox;"); 168 assertEquals(o.publicBooleanBox, e.get("p_boolean_box")); 169 assertEquals("boolean", e.eval("typeof p_boolean_box;")); 170 e.eval("o.publicBooleanBox = false;"); 171 assertEquals(false, (boolean)o.publicBooleanBox); 172 } 173 174 @Test 175 public void accessStaticFieldBooleanBoxing() throws ScriptException { 176 e.eval("var ps_boolean_box = SharedObject.publicStaticBooleanBox;"); 177 assertEquals(SharedObject.publicStaticBooleanBox, e.get("ps_boolean_box")); 178 assertEquals("boolean", e.eval("typeof ps_boolean_box;")); 179 e.eval("SharedObject.publicStaticBooleanBox = false;"); 180 assertEquals(false, (boolean)SharedObject.publicStaticBooleanBox); 181 } 182 183 @Test 184 public void accessFinalFieldBooleanBoxing() throws ScriptException { 185 e.eval("var pf_boolean_box = o.publicFinalBooleanBox;"); 186 assertEquals(o.publicFinalBooleanBox, e.get("pf_boolean_box")); 187 assertEquals("boolean", e.eval("typeof pf_boolean_box;")); 188 e.eval("o.publicFinalBooleanBox = false;"); 189 assertEquals(true, (boolean)o.publicFinalBooleanBox); 190 } 191 192 @Test 193 public void accessStaticFinalFieldBooleanBoxing() throws ScriptException { 194 e.eval("var psf_boolean_box = SharedObject.publicStaticFinalBooleanBox;"); 195 assertEquals(SharedObject.publicStaticFinalBooleanBox, e.get("psf_boolean_box")); 196 assertEquals("boolean", e.eval("typeof psf_boolean_box;")); 197 e.eval("SharedObject.publicStaticFinalBooleanBox = false;"); 198 assertEquals(true, (boolean)SharedObject.publicStaticFinalBooleanBox); 199 } 200 201 @Test 202 public void accessVolatileField() throws ScriptException { 203 e.eval("var pv_boolean = o.volatileBoolean;"); 204 assertEquals(o.volatileBoolean, e.get("pv_boolean")); 205 assertEquals("boolean", e.eval("typeof pv_boolean;")); 206 e.eval("o.volatileBoolean = false;"); 207 assertEquals(false, o.volatileBoolean); 208 } 209 210 @Test 211 public void accessTransientField() throws ScriptException { 212 e.eval("var pt_boolean = o.transientBoolean;"); 213 assertEquals(o.transientBoolean, e.get("pt_boolean")); 214 assertEquals("boolean", e.eval("typeof pt_boolean;")); 215 e.eval("o.transientBoolean = false;"); 216 assertEquals(false, o.transientBoolean); 217 } 218 219 }