nashorn/test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java
changeset 29759 dfe00a233a98
parent 29659 f40752db7773
parent 29758 cb8621d74d60
child 29760 c8bb4d1093d4
child 29832 eed75e14d198
equal deleted inserted replaced
29659:f40752db7773 29759:dfe00a233a98
     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;
       
    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.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.BooleanAccessTest
       
    42  * @run testng/othervm jdk.nashorn.api.javaaccess.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.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 }