test/script/basic/NASHORN-556.js

Tue, 15 Jan 2019 10:36:25 +0000

author
aefimov
date
Tue, 15 Jan 2019 10:36:25 +0000
changeset 2462
e9169a96a3d1
parent 962
ac62e33a99b0
child 1205
4112748288bb
permissions
-rw-r--r--

Added tag jdk8u202-ga for changeset 7aeae6eb6236

jlaskey@3 1 /*
jlaskey@7 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
jlaskey@3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
attila@962 4 *
jlaskey@3 5 * This code is free software; you can redistribute it and/or modify it
jlaskey@3 6 * under the terms of the GNU General Public License version 2 only, as
jlaskey@3 7 * published by the Free Software Foundation.
attila@962 8 *
jlaskey@3 9 * This code is distributed in the hope that it will be useful, but WITHOUT
jlaskey@3 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jlaskey@3 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
jlaskey@3 12 * version 2 for more details (a copy is included in the LICENSE file that
jlaskey@3 13 * accompanied this code).
attila@962 14 *
jlaskey@3 15 * You should have received a copy of the GNU General Public License version
jlaskey@3 16 * 2 along with this work; if not, write to the Free Software Foundation,
jlaskey@3 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
attila@962 18 *
jlaskey@3 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jlaskey@3 20 * or visit www.oracle.com if you need additional information or have any
jlaskey@3 21 * questions.
jlaskey@3 22 */
jlaskey@3 23
jlaskey@3 24 /*
jlaskey@3 25 * NASHORN-556: Need more tests to exercise code in jdk.nashorn.internal.runtime.array package.
jlaskey@3 26 *
jlaskey@3 27 * @test
jlaskey@3 28 * @run
jlaskey@3 29 */
jlaskey@3 30
jlaskey@3 31 function p() {
jlaskey@3 32 var s = "";
jlaskey@3 33 for each (var i in arguments) {
jlaskey@3 34 s += ((i !== undefined) ? i : "") + ",";
jlaskey@3 35 }
jlaskey@3 36 s = s.length != 0 ? s.substr(0, s.length - 1) : s;
jlaskey@3 37 print(s);
jlaskey@3 38 }
jlaskey@3 39
jlaskey@3 40 function assertEq(expected, actual) {
jlaskey@3 41 if (actual !== expected && !(isNaN(actual) && isNaN(expected))) {
jlaskey@3 42 throw "expected=" + expected + " actual=" + actual;
jlaskey@3 43 }
jlaskey@3 44 }
jlaskey@3 45
jlaskey@3 46 function f1() {
jlaskey@3 47 // (NoTypeArrayData)
jlaskey@3 48 var empty = {};
jlaskey@3 49 empty.length = 10;
attila@279 50 Java.to(empty);
jlaskey@3 51 delete empty[0];
jlaskey@3 52 Array.prototype.slice.call(empty, 0, 1);
jlaskey@3 53 Array.prototype.pop.call(empty);
jlaskey@3 54 Array.prototype.shift.call(empty);
jlaskey@3 55 empty = {};
jlaskey@3 56 empty[0] = eval("84") >>> 1; assertEq(42, empty[0]);
jlaskey@3 57 empty = {};
jlaskey@3 58 Array.prototype.unshift.call(empty, "x"); assertEq("x", empty[0]);
jlaskey@3 59 empty = {};
jlaskey@3 60 empty[0] = 8.4; assertEq(8.4, empty[0]);
jlaskey@3 61 }
jlaskey@3 62
jlaskey@3 63 function f2() {
jlaskey@3 64 // DeletedArrayFilter
jlaskey@3 65 var deleted = [,1,,2,,3,,4,,];
attila@279 66 assertEq(2, Java.to(deleted)[3]);
jlaskey@3 67 assertEq(undefined, deleted.pop());
jlaskey@3 68 assertEq(4, deleted.pop());
jlaskey@3 69 deleted.unshift(5);
jlaskey@3 70 p.apply(null, deleted);
jlaskey@3 71 assertEq(5, deleted.shift());
jlaskey@3 72 print(deleted.slice(0,3), deleted.slice(1,7));
jlaskey@3 73 assertEq(1, deleted[3] >>> 1);
jlaskey@3 74 deleted[3] = eval("84") >>> 1; assertEq(42, deleted[3]);
jlaskey@3 75 p.apply(null, deleted);
jlaskey@3 76 }
jlaskey@3 77
jlaskey@3 78 function f3() {
jlaskey@3 79 // DeletedRangeArrayFilter
jlaskey@3 80 var delrange = [1,2,3,,,,,,,,,,];
attila@279 81 Java.to(delrange);
jlaskey@3 82 delrange.unshift(4);
jlaskey@3 83 p.apply(null, delrange);
jlaskey@3 84 print(delrange.slice(1,3), delrange.slice(2,6));
jlaskey@3 85 assertEq(4, delrange.shift());
jlaskey@3 86 }
jlaskey@3 87
jlaskey@3 88 function f4() {
jlaskey@3 89 // NumberArrayData
jlaskey@3 90 var num = [1.1,2.2,3.3,4.4,5.5];
attila@279 91 Java.to(num);
jlaskey@3 92 assertEq(2, num[3] >>> 1);
jlaskey@3 93 assertEq(5, num[4] | 0);
jlaskey@3 94 assertEq(5.5, num.pop());
jlaskey@3 95 num.unshift(13.37);
jlaskey@3 96 print(num.slice(1,4));
jlaskey@3 97 assertEq(13.37, num.shift());
jlaskey@3 98 p.apply(null, num);
jlaskey@3 99 num.length = 20;
jlaskey@3 100 delete num[0];
jlaskey@3 101 num[0] = eval("14") >>> 1;
jlaskey@3 102 }
jlaskey@3 103
jlaskey@3 104 function f5() {
jlaskey@3 105 // ObjectArrayData
jlaskey@3 106 var obj = [2,"two",3.14,"pi",14,"fourteen"];
attila@279 107 Java.to(obj);
jlaskey@3 108 assertEq(-12.86, obj[2] - 16);
jlaskey@3 109 assertEq(7, obj[4] >>> 1);
jlaskey@3 110 obj.unshift("one");
jlaskey@3 111 obj[0] = 1.3;
jlaskey@3 112 obj[0] = eval("14") >>> 1;
jlaskey@3 113 assertEq(7, obj.shift());
jlaskey@3 114 p.apply(null, obj);
jlaskey@3 115 }
jlaskey@3 116
jlaskey@3 117 function f6() {
jlaskey@3 118 // SparseArrayData
jlaskey@3 119 var sparse = [9,8,7,6,5,4,3,2,1];
jlaskey@3 120 sparse[0x76543210] = 84;
jlaskey@3 121 assertEq(42, sparse[0x76543210] >>> 1);
jlaskey@3 122 assertEq(42, sparse[0x76543210] - 42);
jlaskey@3 123 assertEq(85, sparse[0x76543210] | 1);
jlaskey@3 124 sparse[0x76543210] = 7.2;
jlaskey@3 125 sparse[0x76543210] = eval("84") >>> 1;
jlaskey@3 126 sparse.unshift(10);
jlaskey@3 127 print(sparse.slice(0,12));
jlaskey@3 128 print(sparse.slice(0x76543209, 0x76543213));
jlaskey@3 129 assertEq(10, sparse.shift());
jlaskey@3 130 assertEq(42, sparse.pop());
jlaskey@3 131 sparse.length = 1024*1024;
jlaskey@3 132 sparse.push(sparse.length);
jlaskey@3 133 delete sparse[sparse.length-1];
attila@279 134 //print(Java.to(sparse).length);
jlaskey@3 135 (function(){}).apply(null, sparse);
jlaskey@3 136 }
jlaskey@3 137
jlaskey@3 138 function f7() {
jlaskey@3 139 // UndefinedArrayFilter
jlaskey@3 140 var undef = [1,2,3,4,5,undefined,7,8,9,19];
attila@279 141 Java.to(undef);
jlaskey@3 142 assertEq(4, undef[8] >>> 1);
jlaskey@3 143 var tmp = undef[9] >>> 1;
jlaskey@3 144 undef[8] = tmp;
jlaskey@3 145 undef.unshift(21);
jlaskey@3 146 print(undef.slice(0, 4), undef.slice(4, 5));
jlaskey@3 147 assertEq(21, undef.shift());
jlaskey@3 148 undef.push(20);
jlaskey@3 149 assertEq(20, undef.pop());
jlaskey@3 150 assertEq(19, undef.pop());
jlaskey@3 151 p.apply(null, undef);
jlaskey@3 152 undef.length = 20;
jlaskey@3 153 }
jlaskey@3 154
jlaskey@3 155 function f8() {
jlaskey@3 156 // LongArrayData
attila@279 157 var j = Java.from(Java.to([23,37,42,86,47], "long[]"));
attila@279 158 Java.to(j);
jlaskey@3 159 p.apply(null, j);
jlaskey@3 160 assertEq(43, j[3] >>> 1);
jlaskey@3 161 assertEq(36, j[4] - 11);
jlaskey@3 162 j.unshift(eval("14") >>> 1);
jlaskey@3 163 print(j.slice(0,4));
jlaskey@3 164 assertEq(7, j.shift());
jlaskey@3 165 assertEq(47, j.pop());
jlaskey@3 166 j.push("asdf");
attila@279 167 j = Java.from(Java.to([23,37,42,86,47], "long[]"));
jlaskey@3 168 j.length = 3;
jlaskey@3 169 j[0] = 13;
attila@279 170 j = Java.from(Java.to([23,37,42,86,47], "long[]"));
jlaskey@3 171 delete j[0];
attila@279 172 j = Java.from(Java.to([23,37,42,86,47], "long[]"));
jlaskey@3 173 j.length = 20;
jlaskey@3 174 j[0] = 13.37;
jlaskey@3 175 }
jlaskey@3 176
jlaskey@3 177 function f9() {
jlaskey@3 178 // FrozenArrayFilter
jlaskey@3 179 var a1 = [10,11,12,13,14,15];
jlaskey@3 180 Object.freeze(a1);
jlaskey@3 181 assertEq(true, Object.isFrozen(a1));
jlaskey@3 182 Object.getOwnPropertyDescriptor(a1, 0);
jlaskey@3 183 a1[1] = 1;
jlaskey@3 184 a1[2] = eval("14") >>> 1;
jlaskey@3 185 a1[3] = 3.14;
jlaskey@3 186 a1[4] = "asdf";
jlaskey@3 187 print(a1.slice(1,4));
jlaskey@3 188 a1.length = 20;
jlaskey@3 189 }
jlaskey@3 190
jlaskey@3 191 function f10() {
jlaskey@3 192 // SealedArrayFilter
jlaskey@3 193 var a1 = [10,11,12,13,14,15];
jlaskey@3 194 Object.seal(a1);
jlaskey@3 195 assertEq(true, Object.isSealed(a1));
jlaskey@3 196 Object.getOwnPropertyDescriptor(a1, 0);
jlaskey@3 197 a1[1] = 1;
jlaskey@3 198 a1[2] = eval("14") >>> 1;
jlaskey@3 199 a1[3] = 3.14;
jlaskey@3 200 a1[4] = "asdf";
jlaskey@3 201 print(a1.slice(1,4));
jlaskey@3 202 delete a1[0];
jlaskey@3 203 a1.length = 20;
jlaskey@3 204 }
jlaskey@3 205
jlaskey@3 206 f1();
jlaskey@3 207 f2();
jlaskey@3 208 f3();
jlaskey@3 209 f4();
jlaskey@3 210 f5();
jlaskey@3 211 f6();
jlaskey@3 212 f7();
jlaskey@3 213 f8();
jlaskey@3 214 f9();
jlaskey@3 215 f10();
jlaskey@3 216

mercurial