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