X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/map-constructor.js diff --git a/tests/stress/map-constructor.js b/tests/stress/map-constructor.js new file mode 100644 index 0000000..d932820 --- /dev/null +++ b/tests/stress/map-constructor.js @@ -0,0 +1,133 @@ +// Map constructor behaviors. + +if (typeof Map !== 'function') + throw "Error: bad value" + typeof Map; + +function testCallTypeError(item) { + var error = null; + try { + var map = Map(item); + } catch (e) { + error = e; + } + if (!error) + throw "Error: error not thrown"; + if (String(error) !== "TypeError: Map cannot be called as a function") + throw "Error: bad error " + String(error); +} + +var pass = [ + [ null, 0 ], + [ undefined, 0 ], + [ [], 0 ], + [ new Set(), 0], + [ new Map(), 0], + [ "", 0], + + [ + [ + [0, 1], + [1, 2], + [1, 3], + ], + 2 + ], + + [ + [ + [1, 1], + [1, 2], + [1, 3], + ], + 1 + ], + + [ + new Map([ + { 0: 'C', 1: 'O' }, + { 0: 'C', 1: 'K' }, + { 0: 'V', 1: 'K' }, + ]), + 2 + ], + + [ + new Map([ + [0, 1], + [1, 2], + [1, 3], + ]), + 2 + ], + + [ + new Map([ + [1, 1], + [1, 2], + [1, 3], + ]), + 1 + ], + + [ + new Map([ + { 0: 'C', 1: 'O' }, + { 0: 'C', 1: 'K' }, + { 0: 'V', 1: 'K' }, + ]), + 2 + ], +]; + +for (var pair of pass) { + var map = new Map(pair[0]); + if (map.size !== pair[1]) + throw "Error: bad map size " + map.size; + testCallTypeError(pair[0]); +} + +function testTypeError(item) { + var error = null; + try { + var map = new Map(item); + } catch (e) { + error = e; + } + if (!error) + throw "Error: error not thrown"; + if (String(error) !== "TypeError: Type error") + throw "Error: bad error " + String(error); +} + +var nonIterable = [ + 42, + Symbol("Cappuccino"), + true, + false, + {}, + new Date(), + new Error(), + Object(Symbol("Matcha")), + (function () { }), +]; + +for (var item of nonIterable) { + testTypeError(item); + testCallTypeError(item); +} + +var notContainNextItem = [ + "Cocoa", + [0, 1, 2, 3, 4], + [0, 0, 0, 1, 0], + ["A", "B", "A"], + new String("cocoa"), + new String("Cocoa"), + new Set([0,1,2,3,4]), + new Set([1,1,1,1]), +]; + +for (var item of notContainNextItem) { + testTypeError(item); + testCallTypeError(item); +}