blob: dbbfc8a2edfbdc876df4389f07e6960a0dc1f7fd [file] [log] [blame]
load("./resources/typedarray-constructor-helper-functions.js");
description(
"This test checks the behavior of the TypedArray.from function"
);
shouldBe("Int32Array.from.length", "1");
shouldBe("Int32Array.from.name", "'from'");
debug("");
debug("testConstructorFunction has the following arg list (name, args, init, result [ , expectedArray ])");
debug("");
debug("1.0 Single Argument Testing");
shouldBeTrue("testConstructorFunction('from', '([])', [])");
shouldBeTrue("testConstructorFunction('from', '([2])', [2])");
shouldBeTrue("testConstructorFunction('from', '([2,3,4])', [2,3,4])");
debug("");
debug("2.0 Two Argument Testing");
function even(e, i) {
return !(e & 1) || (this.change ? this.change.indexOf(i) >= 0 : false);
}
shouldBeTrue("testConstructorFunction('from', '([12, 5, 8, 13, 44], even)', [1, 0, 1, 0, 1])");
shouldBeTrue("testConstructorFunction('from', '([11, 54, 18, 13, 1], even)', [0, 1, 1, 0, 0])");
debug("");
debug("3.0 Three Argument Testing");
var thisValue = { change: [1, 3] };
shouldBeTrue("testConstructorFunction('from', '([12, 23, 11, 1, 45], even, thisValue)', [1, 1, 0, 1, 0])");
debug("");
debug("4.0 Exception Test");
function isBigEnoughAndException(element, index, array) {
if(index==1) throw "exception from function";
return (element >= 10);
}
shouldThrow("testConstructorFunction('from', '([12, 15, 10, 13, 44], isBigEnoughAndException)', false)");
debug("");
debug("5.0 Wrong Type for Callback Test");
shouldThrow("testConstructorFunction('from', '( [12, 15, 10, 13, 44], 8)', false)");
shouldThrow("testConstructorFunction('from', '([12, 15, 10, 13, 44], \"wrong\")', false)");
shouldThrow("testConstructorFunction('from', '([12, 15, 10, 13, 44], new Object())', false)");
shouldThrow("testConstructorFunction('from', '([12, 15, 10, 13, 44], null)', false)");
debug("");
finishJSTest();