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