BooleanAccessTest.java revision 1243:df6c3e9c1a0b
133965Sjdp/* 2218822Sdim * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 389857Sobrien * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 433965Sjdp * 533965Sjdp * This code is free software; you can redistribute it and/or modify it 633965Sjdp * under the terms of the GNU General Public License version 2 only, as 733965Sjdp * published by the Free Software Foundation. Oracle designates this 833965Sjdp * particular file as subject to the "Classpath" exception as provided 933965Sjdp * by Oracle in the LICENSE file that accompanied this code. 1033965Sjdp * 1133965Sjdp * This code is distributed in the hope that it will be useful, but WITHOUT 1233965Sjdp * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1333965Sjdp * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1433965Sjdp * version 2 for more details (a copy is included in the LICENSE file that 1533965Sjdp * accompanied this code). 1633965Sjdp * 1733965Sjdp * You should have received a copy of the GNU General Public License version 1833965Sjdp * 2 along with this work; if not, write to the Free Software Foundation, 1933965Sjdp * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20218822Sdim * 2133965Sjdp * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22218822Sdim * or visit www.oracle.com if you need additional information or have any 2333965Sjdp * questions. 2433965Sjdp */ 2533965Sjdp 2633965Sjdppackage jdk.nashorn.api.javaaccess.test; 2733965Sjdp 2833965Sjdpimport static org.testng.AssertJUnit.assertEquals; 2933965Sjdpimport static org.testng.AssertJUnit.assertTrue; 3033965Sjdpimport java.util.Arrays; 3133965Sjdpimport javax.script.ScriptEngine; 3233965Sjdpimport javax.script.ScriptEngineManager; 3333965Sjdpimport javax.script.ScriptException; 3433965Sjdpimport org.testng.TestNG; 3533965Sjdpimport org.testng.annotations.AfterClass; 3633965Sjdpimport org.testng.annotations.BeforeClass; 3733965Sjdpimport org.testng.annotations.Test; 3833965Sjdp 3933965Sjdp/** 4033965Sjdp * @test 4133965Sjdp * @build jdk.nashorn.api.javaaccess.test.SharedObject jdk.nashorn.api.javaaccess.test.Person jdk.nashorn.api.javaaccess.test.BooleanAccessTest 4233965Sjdp * @run testng/othervm jdk.nashorn.api.javaaccess.test.BooleanAccessTest 4333965Sjdp */ 4433965Sjdp@SuppressWarnings("javadoc") 4533965Sjdppublic class BooleanAccessTest { 4633965Sjdp 4733965Sjdp private static ScriptEngine e = null; 4833965Sjdp private static SharedObject o = null; 4933965Sjdp 5033965Sjdp public static void main(final String[] args) { 5133965Sjdp TestNG.main(args); 5233965Sjdp } 5333965Sjdp 5433965Sjdp @BeforeClass 5533965Sjdp public static void setUpClass() throws ScriptException { 5633965Sjdp final ScriptEngineManager m = new ScriptEngineManager(); 5733965Sjdp e = m.getEngineByName("nashorn"); 5833965Sjdp o = new SharedObject(); 5933965Sjdp e.put("o", o); 6033965Sjdp e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.test.SharedObject;"); 6133965Sjdp } 6233965Sjdp 6333965Sjdp @AfterClass 6433965Sjdp public static void tearDownClass() { 6533965Sjdp e = null; 6633965Sjdp o = null; 6733965Sjdp } 6833965Sjdp 6933965Sjdp @Test 7033965Sjdp public void accessFieldBoolean() throws ScriptException { 7133965Sjdp e.eval("var p_boolean = o.publicBoolean;"); 7233965Sjdp assertEquals(o.publicBoolean, e.get("p_boolean")); 7333965Sjdp assertEquals("boolean", e.eval("typeof p_boolean;")); 7433965Sjdp e.eval("o.publicBoolean = false;"); 7533965Sjdp assertEquals(false, o.publicBoolean); 7633965Sjdp } 7733965Sjdp 7833965Sjdp @Test 7933965Sjdp public void accessFieldBooleanArray() throws ScriptException { 8033965Sjdp e.eval("var p_boolean_array = o.publicBooleanArray;"); 8189857Sobrien assertEquals(o.publicBooleanArray[0], e.eval("o.publicBooleanArray[0]")); 8289857Sobrien assertTrue(Arrays.equals(o.publicBooleanArray, (boolean[])e.get("p_boolean_array"))); 8389857Sobrien e.eval("var t_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 8489857Sobrien "t_boolean_arr[0] = true;" + 8533965Sjdp "t_boolean_arr[1] = false;" + 8633965Sjdp "t_boolean_arr[2] = false;" + 8733965Sjdp "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} 220