summaryrefslogtreecommitdiff
path: root/deps/v8/test/webkit/array-every.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/webkit/array-every.js')
-rw-r--r--deps/v8/test/webkit/array-every.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/deps/v8/test/webkit/array-every.js b/deps/v8/test/webkit/array-every.js
new file mode 100644
index 0000000000..bbd50cb2a8
--- /dev/null
+++ b/deps/v8/test/webkit/array-every.js
@@ -0,0 +1,116 @@
+// Copyright 2013 the V8 project authors. All rights reserved.
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+description(
+"This test checks the behavior of the every() method on Array objects."
+);
+
+debug("1.0 Single Argument Testing");
+function isBigEnough(element, index, array) {
+ return (element >= 10);
+}
+shouldBeFalse("[12, 5, 8, 130, 44].every(isBigEnough)");
+shouldBeTrue("[12, 54, 18, 130, 44].every(isBigEnough)");
+debug("");
+
+debug("2.0 Two Argument Testing");
+var predicate = {
+ comparison: 11,
+ isBigEnough: function(s) {
+ return (s >= comparison);
+ }
+};
+shouldBeFalse("[12, 5, 10, 130, 44].every(isBigEnough, predicate)");
+shouldBeTrue("[12, 54, 18, 130, 44].every(isBigEnough, predicate)");
+debug("");
+
+debug("3.0 Array Mutation Tests");
+debug("");
+
+debug("3.1 Array Element Removal");
+function isBigEnoughAndPop(element, index, array) {
+ array.pop();
+ return (element >= 10);
+}
+shouldBeFalse("[12, 5, 8, 130, 44].every(isBigEnoughAndPop)");
+shouldBeTrue("[12, 54, 18, 130, 44].every(isBigEnoughAndPop)");
+debug("");
+
+debug("3.2 Array Element Changing");
+function isBigEnoughAndChange(element, index, array) {
+ array[array.length-1-index]= 5;
+ return (element >= 10);
+}
+shouldBeFalse("[12, 5, 8, 130, 44].every(isBigEnoughAndChange)");
+shouldBeFalse("[12, 54, 18, 130, 44].every(isBigEnoughAndChange)");
+debug("");
+
+debug("3.3 Array Element Addition");
+function isBigEnoughAndPush(element, index, array) {
+ array.push(131);
+ return (element >= 131);
+}
+shouldBeFalse("[12, 5, 8, 130, 44].every(isBigEnoughAndPush)");
+shouldBeFalse("[12, 54, 18, 130, 44].every(isBigEnoughAndPush)");
+debug("");
+
+debug("4.0 Exception Test");
+function isBigEnoughAndException(element, index, array) {
+ if(index==1) throw "exception from function";
+ return (element >= 10);
+}
+shouldThrow("[12, 5, 8, 130, 44].every(isBigEnoughAndException)", '"exception from function"');
+shouldThrow("[12, 54, 18, 130, 44].every(isBigEnoughAndException)", '"exception from function"');
+debug("");
+
+debug("5.0 Wrong Type for Callback Test");
+shouldThrow("[12, 5, 8, 130, 44].every(5)");
+shouldThrow("[12, 5, 8, 130, 44].every('wrong')");
+shouldThrow("[12, 5, 8, 130, 44].every(new Object())");
+shouldThrow("[12, 5, 8, 130, 44].every(null)");
+shouldThrow("[12, 5, 8, 130, 44].every(undefined)");
+shouldThrow("[12, 5, 8, 130, 44].every()");
+debug("");
+
+debug('6.0 Early Exit ("Short Circuiting")');
+var accumulator = new Array();
+function isBigEnoughShortCircuit(element, index, array) {
+ accumulator.push(element);
+ return (element >= 10);
+}
+shouldBeFalse("[12, 5, 8, 130, 44].every(isBigEnoughShortCircuit)");
+shouldBe("accumulator.toString()", "[12, 5].toString()");
+accumulator.length = 0;
+shouldBeTrue("[12, 54, 18, 130, 44].every(isBigEnoughShortCircuit)");
+shouldBe("accumulator.toString()", "[12, 54, 18, 130, 44].toString()");
+debug("");
+
+debug('7.0 Behavior for Holes in Arrays');
+var arr = [5, 5, 5, 5];
+delete arr[1];
+function isNotUndefined(element, index, array) {
+ return typeof element !== "undefined";
+}
+shouldBeTrue("arr.every(isNotUndefined)");
+arr = new Array(20);
+shouldBeTrue("arr.every(isNotUndefined)");