michael@0: load(libdir + "asserts.js"); michael@0: load(libdir + "iteration.js"); michael@0: michael@0: assertThrowsInstanceOf(() => Math.sin(...true), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...false), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...new Date()), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...Function("")), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...function () {}), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...(x => x)), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...1), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...{}), TypeError); michael@0: var foo = {} michael@0: michael@0: foo[std_iterator] = 10; michael@0: assertThrowsInstanceOf(() => Math.sin(...foo), TypeError); michael@0: michael@0: foo[std_iterator] = function() undefined; michael@0: assertThrowsInstanceOf(() => Math.sin(...foo), TypeError); michael@0: michael@0: foo[std_iterator] = function() this; michael@0: assertThrowsInstanceOf(() => Math.sin(...foo), TypeError); michael@0: michael@0: foo[std_iterator] = function() this; michael@0: foo.next = function() { throw 10; }; michael@0: assertThrowsValue(() => Math.sin(...foo), 10); michael@0: michael@0: assertThrowsInstanceOf(() => Math.sin(.../a/), TypeError); michael@0: assertThrowsInstanceOf(() => Math.sin(...new Error()), TypeError);