michael@0: load(libdir + "asserts.js"); michael@0: michael@0: function testArrayThrows() { michael@0: // Test kernel not being callable. michael@0: var a = [1,2,3,4,5,6,7,8]; michael@0: for (var [opName, args] in ["mapPar", [{}], michael@0: "filterPar", [{}], michael@0: "reducePar", [{}], michael@0: "scanPar", [{}]]) michael@0: { michael@0: assertThrowsInstanceOf(function () { a[opName].apply(a, args); }, TypeError); michael@0: } michael@0: michael@0: assertThrowsInstanceOf(function () { michael@0: a.scatterPar(a, 0, {}); michael@0: }, TypeError); michael@0: michael@0: assertThrowsInstanceOf(function () { michael@0: Array.buildPar(1024, {}); michael@0: }, TypeError); michael@0: michael@0: // Test bad lengths. michael@0: assertThrowsInstanceOf(function () { michael@0: Array.buildPar(0xffffffff + 1, function () {}); michael@0: }, RangeError); michael@0: michael@0: assertThrowsInstanceOf(function () { michael@0: a.scatterPar(a, 0, function () {}, 0xffffffff + 1); michael@0: }, RangeError); michael@0: michael@0: // Test empty reduction. michael@0: for (var opName in ["reducePar", "scanPar"]) { michael@0: assertThrowsInstanceOf(function () { michael@0: var a = []; michael@0: a[opName](function (v, p) { return v * p; }); michael@0: }, TypeError); michael@0: } michael@0: michael@0: // Test scatter: michael@0: // - no conflict function. michael@0: // - out of bounds michael@0: var p = [1,2,3,4,5]; michael@0: michael@0: assertThrowsInstanceOf(function () { michael@0: p.scatterPar([0,1,0,3,4]); michael@0: }, Error); michael@0: michael@0: assertThrowsInstanceOf(function () { michael@0: p.scatterPar([0,1,0,3,11]); michael@0: }, Error); michael@0: } michael@0: michael@0: if (getBuildConfiguration().parallelJS) michael@0: testArrayThrows();