test/script/basic/arrays.js

Thu, 12 Oct 2017 19:52:15 +0800

author
aoqi
date
Thu, 12 Oct 2017 19:52:15 +0800
changeset 1205
4112748288bb
parent 962
ac62e33a99b0
parent 952
6d5471a497fb
permissions
-rw-r--r--

merge

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
attila@962 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
attila@962 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
attila@962 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
attila@962 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 /**
aoqi@0 25 * Basic Array tests.
aoqi@0 26 *
aoqi@0 27 * @test
aoqi@0 28 * @run
aoqi@0 29 */
aoqi@0 30
aoqi@0 31 var arr = new Array(3);
aoqi@0 32 print(arr.length);
aoqi@0 33
aoqi@0 34 print("isArray.length = " + Array.isArray.length);
aoqi@0 35 print(Array.isArray(44));
aoqi@0 36 print(Array.isArray([44]));
aoqi@0 37
aoqi@0 38 function even(num) {
aoqi@0 39 return (num % 2) == 0;
aoqi@0 40 }
aoqi@0 41
aoqi@0 42 print("join.length = " + Array.prototype.join.length);
aoqi@0 43 print(["javascript", "is", "great"].join("<->"));
aoqi@0 44
aoqi@0 45 var arr = [4, 56, 5];
aoqi@0 46 print("every.length = " + Array.prototype.every.length);
aoqi@0 47 print(arr.toString() + " every even? = " + arr.every(even));
aoqi@0 48 arr = [4, 56, 688];
aoqi@0 49 print(arr.toString() + " every even? = " + arr.every(even));
aoqi@0 50
aoqi@0 51 print("some.length = " + Array.prototype.some.length);
aoqi@0 52 arr = [4, 56, 5];
aoqi@0 53 print(arr.toString() + " some even? = " + arr.some(even));
aoqi@0 54 arr = [3, 5, 17];
aoqi@0 55 print(arr.toString() + " some even? = " + arr.some(even));
aoqi@0 56
aoqi@0 57 print("forEach.length = " + Array.prototype.forEach.length);
aoqi@0 58 arr = [ "java", "javascript", "jython", "jruby"];
aoqi@0 59 arr.forEach(function(val, idx, obj) {
aoqi@0 60 print(obj.toString() + "[" + idx + "] is " + val);
aoqi@0 61 });
aoqi@0 62
aoqi@0 63 print(arr.map(function(val) { return val.toUpperCase(); }));
aoqi@0 64 print("shifted is " + arr.shift() + ", remaining is " + arr.toString() + ", length is " + arr.length);
aoqi@0 65
aoqi@0 66 arr = [ "c++", "java", "javascript", "objective c" ];
aoqi@0 67 print(arr.filter(function(val) { return val.charAt(0) == 'j'; }));
aoqi@0 68
aoqi@0 69 print([3, 66, 2, 44].reduce(function (acc, e) { return acc + e; }));
aoqi@0 70 print([1, 2, 3, 4, 5].reduce(function (acc, e) { return acc * e; }));
aoqi@0 71
aoqi@0 72 print(arr.reduce(
aoqi@0 73 function(acc, e) { return acc + " " + e; }
aoqi@0 74 ));
aoqi@0 75
aoqi@0 76 print(["javascript", "from", "world", "hello"].reduceRight(
aoqi@0 77 function(acc, x) { return acc + " " + x; }
aoqi@0 78 ));
aoqi@0 79
aoqi@0 80 var langs = ["java", "javascript", "jython", "jruby", "c"];
aoqi@0 81 print("indexOf.length = " + Array.prototype.indexOf.length);
aoqi@0 82 print("indexOf('java') = " + langs.indexOf("java"));
aoqi@0 83 print("indexOf('javascript') = " + langs.indexOf("javascript"));
aoqi@0 84 print("indexOf('javascript', 3) = " + langs.indexOf("javascript", 3));
aoqi@0 85 print("indexOf('c++') = " + langs.indexOf("c++"));
aoqi@0 86 print("[].indexOf('any') = " + [].indexOf("any"));
aoqi@0 87
aoqi@0 88 langs = ["java", "javascript", "jython", "jruby", "java", "jython", "c"];
aoqi@0 89 print("lastIndexOf.length = " + Array.prototype.lastIndexOf.length);
aoqi@0 90 print("lastIndexOf('java') = " + langs.lastIndexOf("java"));
aoqi@0 91 print("lastIndexOf('jython') = " + langs.lastIndexOf("jython"));
aoqi@0 92 print("lastIndexOf('c') = " + langs.lastIndexOf("c"));
aoqi@0 93 print("lastIndexOf('c++') = " + langs.lastIndexOf("c++"));
aoqi@0 94 print("[].lastIndexOf('any') = " + [].lastIndexOf("any"));
aoqi@0 95
aoqi@0 96 print("concat.length = " + Array.prototype.concat.length);
aoqi@0 97 print(["foo", "bar"].concat(["x", "y"], 34, "sss", [3, 4, 2]));
aoqi@0 98
aoqi@0 99
aoqi@0 100 // Check various array length arguments to constructor
aoqi@0 101
aoqi@0 102 function expectRangeError(length) {
aoqi@0 103 try {
aoqi@0 104 var arr = new Array(length);
aoqi@0 105 print("range error expected for " + length);
aoqi@0 106 } catch (e) {
aoqi@0 107 if (! (e instanceof RangeError)) {
aoqi@0 108 print("range error expected for " + length);
aoqi@0 109 }
aoqi@0 110 }
aoqi@0 111 }
aoqi@0 112
aoqi@0 113 expectRangeError(NaN);
aoqi@0 114 expectRangeError(Infinity);
aoqi@0 115 expectRangeError(-Infinity);
aoqi@0 116 expectRangeError(-10);
aoqi@0 117
aoqi@0 118 var arr = new Array("10");
aoqi@0 119 if (arr.length != 1 && arr[0] != '10') {
aoqi@0 120 throw new Error("expected length 1 array");
aoqi@0 121 }
aoqi@0 122
aoqi@0 123 arr = new Array(new Number(34));
aoqi@0 124 if (arr.length != 1 && arr[0] != new Number(34)) {
aoqi@0 125 throw new Error("expected length 1 array");
aoqi@0 126 }
aoqi@0 127
aoqi@0 128 arr = new Array(15);
aoqi@0 129 if (arr.length != 15) {
aoqi@0 130 throw new Error("expected length 15 array");
aoqi@0 131 }
aoqi@0 132
aoqi@0 133 print("Array.length = " + Array.length);
aoqi@0 134
aoqi@0 135 print([NaN,NaN,NaN]);
aoqi@0 136
aoqi@0 137 // check setting array's length
aoqi@0 138 arr = [3,2,1];
aoqi@0 139 arr.length = 1;
aoqi@0 140 print(arr);
aoqi@0 141 print(arr.length);
aoqi@0 142
aoqi@0 143 // test typeof array
aoqi@0 144 var numberArray = [];
aoqi@0 145 numberArray[0] = 1;
aoqi@0 146 print(typeof numberArray[0]);
aoqi@0 147
aoqi@0 148 print(numberArray.toLocaleString());
aoqi@0 149
aoqi@0 150 // Array functions on non-array objects
aoqi@0 151
aoqi@0 152 print(Array.prototype.join.call(new java.lang.Object()));
aoqi@0 153 print(Array.prototype.concat.call("hello", "world"));
aoqi@0 154 print(Array.prototype.map.call("hello", function() {}));
aoqi@0 155 print(Array.prototype.reduce.call("hello", function() {}));
aoqi@0 156 print(Array.prototype.toString.call(new java.lang.Object()));
aoqi@0 157 print(Array.prototype.toLocaleString.call(new java.lang.Object()));
attila@962 158 print(Array.prototype.reduceRight.call(new java.lang.Object(),
aoqi@0 159 function() {}, 33));
aoqi@0 160

mercurial