nashorn/test/script/basic/JDK-8173480.js
changeset 43352 1e536b9ddf07
equal deleted inserted replaced
43351:75a27e55eb8a 43352:1e536b9ddf07
       
     1 /*
       
     2  * Copyright (c) 2017, 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.
       
     8  * 
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  * 
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  * 
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  */
       
    23 
       
    24 /**
       
    25  * JDK-8173480: in operator should work on java objects and classes
       
    26  *
       
    27  * @test
       
    28  * @run
       
    29  */
       
    30 
       
    31 var hash = "hash"; // for testing ConsString keys
       
    32 
       
    33 var obj = new java.lang.Object();
       
    34 Assert.assertTrue("hashCode" in obj);
       
    35 Assert.assertTrue(hash + "Code" in obj);
       
    36 Assert.assertTrue("class" in obj);
       
    37 Assert.assertFalse("x" in obj);
       
    38 Assert.assertFalse(1 in obj);
       
    39 Assert.assertFalse("1" in obj);
       
    40 
       
    41 var map = new java.util.HashMap();
       
    42 map["k"] = true;
       
    43 Assert.assertTrue(map["k"]);
       
    44 Assert.assertTrue("k" in map);
       
    45 Assert.assertTrue("hashCode" in map);
       
    46 Assert.assertTrue(hash + "Code" in map);
       
    47 Assert.assertTrue("class" in map);
       
    48 Assert.assertFalse("x" in map);
       
    49 Assert.assertFalse(1 in map);
       
    50 Assert.assertFalse("1" in map);
       
    51 
       
    52 var list = new java.util.ArrayList();
       
    53 list.add(true);
       
    54 Assert.assertTrue(list[0]);
       
    55 Assert.assertTrue(list["0"]);
       
    56 Assert.assertTrue(0 in list);
       
    57 Assert.assertTrue("0" in list);
       
    58 Assert.assertTrue("hashCode" in list);
       
    59 Assert.assertTrue(hash + "Code" in list);
       
    60 Assert.assertTrue("class" in list);
       
    61 Assert.assertFalse("x" in list);
       
    62 Assert.assertFalse(1 in list);
       
    63 Assert.assertFalse("1" in list);
       
    64 
       
    65 var objectArray = new (Java.type("java.lang.Object[]"))(1);
       
    66 objectArray[0] = true;
       
    67 Assert.assertTrue(objectArray[0]);
       
    68 Assert.assertTrue(objectArray["0"]);
       
    69 Assert.assertTrue(0 in objectArray);
       
    70 Assert.assertTrue("0" in objectArray);
       
    71 Assert.assertTrue("hashCode" in objectArray);
       
    72 Assert.assertTrue(hash + "Code" in objectArray);
       
    73 Assert.assertTrue("class" in objectArray);
       
    74 Assert.assertFalse("x" in objectArray);
       
    75 Assert.assertFalse(1 in objectArray);
       
    76 Assert.assertFalse("1" in objectArray);
       
    77 
       
    78 var RuntimeClass = Java.type("java.lang.Runtime");
       
    79 Assert.assertTrue("getRuntime" in RuntimeClass);
       
    80 Assert.assertTrue("runtime" in RuntimeClass);
       
    81 Assert.assertTrue("class" in RuntimeClass);
       
    82 Assert.assertFalse("hashCode" in RuntimeClass);
       
    83 Assert.assertFalse(hash + "Code" in RuntimeClass);
       
    84 Assert.assertFalse("x" in RuntimeClass);
       
    85 Assert.assertFalse(1 in RuntimeClass);
       
    86 Assert.assertFalse("1" in RuntimeClass);
       
    87