| 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(); |