BooleanAccessTest.java revision 1243:df6c3e9c1a0b
1322249Sbapt/* 2241675Suqs * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3279527Sbapt * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4322249Sbapt * 5241675Suqs * This code is free software; you can redistribute it and/or modify it 6241675Suqs * under the terms of the GNU General Public License version 2 only, as 7241675Suqs * published by the Free Software Foundation. Oracle designates this 8241675Suqs * particular file as subject to the "Classpath" exception as provided 9241675Suqs * by Oracle in the LICENSE file that accompanied this code. 10241675Suqs * 11241675Suqs * This code is distributed in the hope that it will be useful, but WITHOUT 12241675Suqs * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13241675Suqs * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14241675Suqs * version 2 for more details (a copy is included in the LICENSE file that 15241675Suqs * accompanied this code). 16241675Suqs * 17241675Suqs * You should have received a copy of the GNU General Public License version 18241675Suqs * 2 along with this work; if not, write to the Free Software Foundation, 19241675Suqs * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20241675Suqs * 21241675Suqs * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22241675Suqs * or visit www.oracle.com if you need additional information or have any 23241675Suqs * questions. 24241675Suqs */ 25241675Suqs 26241675Suqspackage jdk.nashorn.api.javaaccess.test; 27241675Suqs 28241675Suqsimport static org.testng.AssertJUnit.assertEquals; 29241675Suqsimport static org.testng.AssertJUnit.assertTrue; 30241675Suqsimport java.util.Arrays; 31322249Sbaptimport javax.script.ScriptEngine; 32241675Suqsimport javax.script.ScriptEngineManager; 33322249Sbaptimport javax.script.ScriptException; 34241675Suqsimport org.testng.TestNG; 35241675Suqsimport org.testng.annotations.AfterClass; 36241675Suqsimport org.testng.annotations.BeforeClass; 37241675Suqsimport org.testng.annotations.Test; 38241675Suqs 39261344Suqs/** 40261344Suqs * @test 41261344Suqs * @build jdk.nashorn.api.javaaccess.test.SharedObject jdk.nashorn.api.javaaccess.test.Person jdk.nashorn.api.javaaccess.test.BooleanAccessTest 42241675Suqs * @run testng/othervm jdk.nashorn.api.javaaccess.test.BooleanAccessTest 43261344Suqs */ 44261344Suqs@SuppressWarnings("javadoc") 45261344Suqspublic class BooleanAccessTest { 46274880Sbapt 47241675Suqs private static ScriptEngine e = null; 48261344Suqs private static SharedObject o = null; 49261344Suqs 50261344Suqs public static void main(final String[] args) { 51261344Suqs TestNG.main(args); 52241675Suqs } 53261344Suqs 54261344Suqs @BeforeClass 55261344Suqs public static void setUpClass() throws ScriptException { 56261344Suqs final ScriptEngineManager m = new ScriptEngineManager(); 57241675Suqs e = m.getEngineByName("nashorn"); 58241675Suqs o = new SharedObject(); 59261344Suqs e.put("o", o); 60261344Suqs e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.test.SharedObject;"); 61261344Suqs } 62241675Suqs 63241675Suqs @AfterClass 64241675Suqs public static void tearDownClass() { 65261344Suqs e = null; 66261344Suqs o = null; 67261344Suqs } 68241675Suqs 69261344Suqs @Test 70241675Suqs public void accessFieldBoolean() throws ScriptException { 71241675Suqs e.eval("var p_boolean = o.publicBoolean;"); 72241675Suqs assertEquals(o.publicBoolean, e.get("p_boolean")); 73241675Suqs assertEquals("boolean", e.eval("typeof p_boolean;")); 74241675Suqs e.eval("o.publicBoolean = false;"); 75274880Sbapt assertEquals(false, o.publicBoolean); 76241675Suqs } 77261344Suqs 78241675Suqs @Test 79274880Sbapt public void accessFieldBooleanArray() throws ScriptException { 80241675Suqs e.eval("var p_boolean_array = o.publicBooleanArray;"); 81241675Suqs assertEquals(o.publicBooleanArray[0], e.eval("o.publicBooleanArray[0]")); 82241675Suqs assertTrue(Arrays.equals(o.publicBooleanArray, (boolean[])e.get("p_boolean_array"))); 83274880Sbapt e.eval("var t_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 84261344Suqs "t_boolean_arr[0] = true;" + 85294113Sbapt "t_boolean_arr[1] = false;" + 86261344Suqs "t_boolean_arr[2] = false;" + 87275432Sbapt "o.publicBooleanArray = t_boolean_arr;"); 88241675Suqs assertTrue(Arrays.equals(new boolean[] { true, false, false }, o.publicBooleanArray)); 89241675Suqs e.eval("o.publicBooleanArray[0] = false;"); 90241675Suqs assertEquals(false, o.publicBooleanArray[0]); 91241675Suqs } 92261344Suqs 93261344Suqs @Test 94274880Sbapt public void accessStaticFieldBoolean() throws ScriptException { 95274880Sbapt e.eval("var ps_boolean = SharedObject.publicStaticBoolean;"); 96294113Sbapt assertEquals(SharedObject.publicStaticBoolean, e.get("ps_boolean")); 97294113Sbapt assertEquals("boolean", e.eval("typeof ps_boolean;")); 98294113Sbapt e.eval("SharedObject.publicStaticBoolean = false;"); 99322249Sbapt assertEquals(false, SharedObject.publicStaticBoolean); 100322249Sbapt } 101261344Suqs 102261344Suqs @Test 103261344Suqs public void accessStaticFieldBooleanArray() throws ScriptException { 104274880Sbapt e.eval("var ps_boolean_array = SharedObject.publicStaticBooleanArray;"); 105261344Suqs assertEquals(SharedObject.publicStaticBooleanArray[0], e.eval("SharedObject.publicStaticBooleanArray[0]")); 106261344Suqs assertTrue(Arrays.equals(SharedObject.publicStaticBooleanArray, (boolean[])e.get("ps_boolean_array"))); 107261344Suqs e.eval("var ts_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 108274880Sbapt "ts_boolean_arr[0] = true;" + 109294113Sbapt "ts_boolean_arr[1] = false;" + 110261344Suqs "ts_boolean_arr[2] = true;" + 111261344Suqs "SharedObject.publicStaticBooleanArray = ts_boolean_arr;"); 112241675Suqs assertTrue(Arrays.equals(new boolean[] { true, false, true }, SharedObject.publicStaticBooleanArray)); 113241675Suqs e.eval("SharedObject.publicStaticBooleanArray[0] = false;"); 114241675Suqs assertEquals(false, SharedObject.publicStaticBooleanArray[0]); 115274880Sbapt } 116274880Sbapt 117274880Sbapt @Test 118274880Sbapt public void accessFinalFieldBoolean() throws ScriptException { 119274880Sbapt e.eval("var pf_boolean = o.publicFinalBoolean;"); 120274880Sbapt assertEquals(o.publicFinalBoolean, e.get("pf_boolean")); 121274880Sbapt assertEquals("boolean", e.eval("typeof pf_boolean;")); 122274880Sbapt e.eval("o.publicFinalBoolean = false;"); 123241675Suqs assertEquals(true, o.publicFinalBoolean); 124241675Suqs } 125274880Sbapt 126241675Suqs @Test 127241675Suqs public void accessFinalFieldBooleanArray() throws ScriptException { 128261344Suqs e.eval("var pf_boolean_array = o.publicFinalBooleanArray;"); 129274880Sbapt assertEquals(o.publicFinalBooleanArray[0], e.eval("o.publicFinalBooleanArray[0]")); 130261344Suqs assertTrue(Arrays.equals(o.publicFinalBooleanArray, (boolean[])e.get("pf_boolean_array"))); 131261344Suqs e.eval("var tf_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 132241675Suqs "tf_boolean_arr[0] = false;" + 133274880Sbapt "tf_boolean_arr[1] = false;" + 134261344Suqs "tf_boolean_arr[2] = true;" + 135241675Suqs "o.publicOFinalbjectArray = tf_boolean_arr;"); 136241675Suqs assertTrue(Arrays.equals(new boolean[] { false, false, true, false }, o.publicFinalBooleanArray)); 137241675Suqs e.eval("o.publicFinalBooleanArray[0] = true;"); 138261344Suqs assertEquals(true, o.publicFinalBooleanArray[0]); 139241675Suqs } 140241675Suqs 141241675Suqs @Test 142241675Suqs public void accessStaticFinalFieldBoolean() throws ScriptException { 143241675Suqs e.eval("var psf_boolean = SharedObject.publicStaticFinalBoolean;"); 144241675Suqs assertEquals(SharedObject.publicStaticFinalBoolean, e.get("psf_boolean")); 145241675Suqs assertEquals("boolean", e.eval("typeof psf_boolean;")); 146274880Sbapt e.eval("SharedObject.publicStaticFinalBoolean = false;"); 147241675Suqs assertEquals(true, SharedObject.publicStaticFinalBoolean); 148274880Sbapt } 149274880Sbapt 150274880Sbapt @Test 151274880Sbapt public void accessStaticFinalFieldBooleanArray() throws ScriptException { 152274880Sbapt e.eval("var psf_boolean_array = SharedObject.publicStaticFinalBooleanArray;"); 153274880Sbapt assertEquals(SharedObject.publicStaticFinalBooleanArray[0], e.eval("SharedObject.publicStaticFinalBooleanArray[0]")); 154279527Sbapt assertTrue(Arrays.equals(SharedObject.publicStaticFinalBooleanArray, (boolean[])e.get("psf_boolean_array"))); 155279527Sbapt e.eval("var tsf_boolean_arr = new (Java.type(\"boolean[]\"))(3);" + 156279527Sbapt "tsf_boolean_arr[0] = false;" + 157279527Sbapt "tsf_boolean_arr[1] = true;" + 158294113Sbapt "tsf_boolean_arr[2] = false;" + 159279527Sbapt "SharedObject.publicStaticFinalBooleanArray = tsf_boolean_arr;"); 160279527Sbapt assertTrue(Arrays.equals(new boolean[] { false, true, false, false }, SharedObject.publicStaticFinalBooleanArray)); 161274880Sbapt e.eval("SharedObject.publicStaticFinalBooleanArray[0] = true;"); 162261344Suqs assertEquals(true, SharedObject.publicStaticFinalBooleanArray[0]); 163241675Suqs } 164241675Suqs 165241675Suqs @Test 166241675Suqs public void accessFieldBooleanBoxing() throws ScriptException { 167241675Suqs e.eval("var p_boolean_box = o.publicBooleanBox;"); 168241675Suqs assertEquals(o.publicBooleanBox, e.get("p_boolean_box")); 169274880Sbapt assertEquals("boolean", e.eval("typeof p_boolean_box;")); 170274880Sbapt e.eval("o.publicBooleanBox = false;"); 171274880Sbapt assertEquals(false, (boolean)o.publicBooleanBox); 172274880Sbapt } 173274880Sbapt 174274880Sbapt @Test 175274880Sbapt public void accessStaticFieldBooleanBoxing() throws ScriptException { 176274880Sbapt e.eval("var ps_boolean_box = SharedObject.publicStaticBooleanBox;"); 177275432Sbapt assertEquals(SharedObject.publicStaticBooleanBox, e.get("ps_boolean_box")); 178275432Sbapt assertEquals("boolean", e.eval("typeof ps_boolean_box;")); 179294113Sbapt e.eval("SharedObject.publicStaticBooleanBox = false;"); 180274880Sbapt assertEquals(false, (boolean)SharedObject.publicStaticBooleanBox); 181322249Sbapt } 182322249Sbapt 183322249Sbapt @Test 184322249Sbapt public void accessFinalFieldBooleanBoxing() throws ScriptException { 185322249Sbapt e.eval("var pf_boolean_box = o.publicFinalBooleanBox;"); 186322249Sbapt assertEquals(o.publicFinalBooleanBox, e.get("pf_boolean_box")); 187322249Sbapt assertEquals("boolean", e.eval("typeof pf_boolean_box;")); 188322249Sbapt e.eval("o.publicFinalBooleanBox = false;"); 189322249Sbapt assertEquals(true, (boolean)o.publicFinalBooleanBox); 190322249Sbapt } 191322249Sbapt 192274880Sbapt @Test 193261344Suqs public void accessStaticFinalFieldBooleanBoxing() throws ScriptException { 194241675Suqs e.eval("var psf_boolean_box = SharedObject.publicStaticFinalBooleanBox;"); 195241675Suqs assertEquals(SharedObject.publicStaticFinalBooleanBox, e.get("psf_boolean_box")); 196241675Suqs assertEquals("boolean", e.eval("typeof psf_boolean_box;")); 197241675Suqs e.eval("SharedObject.publicStaticFinalBooleanBox = false;"); 198241675Suqs assertEquals(true, (boolean)SharedObject.publicStaticFinalBooleanBox); 199241675Suqs } 200274880Sbapt 201261344Suqs @Test 202294113Sbapt public void accessVolatileField() throws ScriptException { 203261344Suqs e.eval("var pv_boolean = o.volatileBoolean;"); 204261344Suqs assertEquals(o.volatileBoolean, e.get("pv_boolean")); 205261344Suqs assertEquals("boolean", e.eval("typeof pv_boolean;")); 206294113Sbapt e.eval("o.volatileBoolean = false;"); 207261344Suqs assertEquals(false, o.volatileBoolean); 208261344Suqs } 209241675Suqs 210241675Suqs @Test 211261344Suqs public void accessTransientField() throws ScriptException { 212241675Suqs e.eval("var pt_boolean = o.transientBoolean;"); 213241675Suqs assertEquals(o.transientBoolean, e.get("pt_boolean")); 214294113Sbapt assertEquals("boolean", e.eval("typeof pt_boolean;")); 215241675Suqs e.eval("o.transientBoolean = false;"); 216274880Sbapt assertEquals(false, o.transientBoolean); 217241675Suqs } 218241675Suqs 219274880Sbapt} 220241675Suqs