| load("./resources/typedarray-test-helper-functions.js"); |
| description( |
| "This test checks the behavior of the TypedArray.prototype.sort function" |
| ); |
| |
| shouldBe("Int32Array.prototype.sort.length", "1"); |
| shouldBe("Int32Array.prototype.sort.name", "'sort'"); |
| shouldBeTrue("isSameFunctionForEachTypedArrayPrototype('sort')"); |
| shouldBeTrue("testPrototypeReceivesArray('sort', [undefined, this, { }, [ ], true, ''])"); |
| debug(""); |
| |
| debug("testPrototypeFunction has the following arg list (name, args, init, result [ , expectedArray ])"); |
| debug(""); |
| |
| debug("1.0 No Argument Testing"); |
| shouldBeTrue("testPrototypeFunction('sort', '()', [12, 5, 8, 13, 44], [5, 8, 12, 13, 44], [5, 8, 12, 13, 44])"); |
| shouldBeTrue("testPrototypeFunction('sort', '()', [2, 4, 8, 3, 4], [2, 3, 4, 4, 8])"); |
| debug(""); |
| |
| debug("1.1 Signed Numbers"); |
| shouldBeTrue("testPrototypeFunctionOnSigned('sort', '()', [12, -5, 8, -13, 44], [-13, -5, 8, 12, 44])"); |
| debug(""); |
| |
| debug("1.2 Float Numbers"); |
| shouldBeTrue("testPrototypeFunctionOnFloat('sort', '()', [12, -5, 0, -0, -13, 44], [-13, -5, -0, 0, 12, 44])"); |
| |
| debug("1.3 Negative NaNs"); |
| var buffer = new ArrayBuffer(8); |
| var intView = new Int32Array(buffer); |
| var floatView = new Float32Array(buffer); |
| intView[0] = -1; |
| |
| floatView.sort(); |
| shouldBeTrue("Object.is(floatView[0],0) && Object.is(floatView[1], NaN)"); |
| debug(""); |
| |
| debug("2.0 Custom Function Testing"); |
| function sortBackwards(a, b) { return b - a; } |
| shouldBeTrue("testPrototypeFunction('sort', '(sortBackwards)', [2, 5, 10, 3, 4], [10, 5, 4, 3, 2])"); |
| debug(""); |
| |
| debug("3.0 Exception Test"); |
| var count = 0; |
| function compareException(a, b) { |
| if(count++ === 4) throw "exception from function"; |
| return a < b; |
| } |
| shouldThrow("testPrototypeFunction('sort', '(compareException)', [12, 15, 10, 13, 44], true)"); |
| debug(""); |
| |
| debug("4.0 Wrong Type for Callback Test"); |
| shouldBeTrue("testPrototypeFunction('sort', '(8)', [12, 15, 10, 13, 44], [10, 12, 13, 15, 44])"); |
| shouldBeTrue("testPrototypeFunction('sort', '(\"wrong\")', [12, 15, 10, 13, 44], [10, 12, 13, 15, 44])"); |
| shouldBeTrue("testPrototypeFunction('sort', '(new Object())', [12, 15, 10, 13, 44], [10, 12, 13, 15, 44])"); |
| shouldBeTrue("testPrototypeFunction('sort', '(null)', [12, 15, 10, 13, 44], [10, 12, 13, 15, 44])"); |
| debug(""); |
| finishJSTest(); |