// The argument to Map can be a generator. var done = false; function* data(n) { var s = ''; for (var i = 0; i < n; i++) { yield [s, i]; s += '.'; } done = true; } var m = new Map(data(50)); assertEq(done, true); // the constructor consumes the argument assertEq(m.size, 50); assertEq(m.get(""), 0); assertEq(m.get("....."), 5); assertEq(m.get(Array(49+1).join(".")), 49); assertEq(m.has(undefined), false);