mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 22:40:28 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
396 lines
7.8 KiB
JavaScript
396 lines
7.8 KiB
JavaScript
function assert(b) {
|
|
if (!b)
|
|
throw new Error("Bad result!");
|
|
}
|
|
noInline(assert);
|
|
|
|
function test1() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
let iter = map[Symbol.iterator]();
|
|
let {value, done} = iter.next();
|
|
assert(value[0] === 20);
|
|
assert(value[1] === 30);
|
|
assert(!done);
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test1();
|
|
|
|
function test2() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
let iter = map[Symbol.iterator]();
|
|
let {value, done} = iter.next();
|
|
assert(value[0] === 20);
|
|
assert(value[1] === 30);
|
|
assert(!done);
|
|
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
|
|
map.set(40, 50);
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test2();
|
|
|
|
function test3() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map[Symbol.iterator]();
|
|
let {value, done} = iter.next();
|
|
assert(value[0] === 20);
|
|
assert(value[1] === 30);
|
|
assert(!done);
|
|
|
|
({value, done} = iter.next());
|
|
assert(!done);
|
|
assert(value[0] === 50);
|
|
assert(value[1] === 60);
|
|
|
|
map.set("foo", "bar");
|
|
({value, done} = iter.next());
|
|
assert(!done);
|
|
assert(value[0] === "foo");
|
|
assert(value[1] === "bar");
|
|
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test3();
|
|
|
|
function test4() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map[Symbol.iterator]();
|
|
let {value, done} = iter.next();
|
|
assert(value[0] === 20);
|
|
assert(value[1] === 30);
|
|
assert(!done);
|
|
|
|
map.clear();
|
|
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test4();
|
|
|
|
function test5() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map[Symbol.iterator]();
|
|
let {value, done} = iter.next();
|
|
assert(value[0] === 20);
|
|
assert(value[1] === 30);
|
|
assert(!done);
|
|
|
|
map.clear();
|
|
map.set(50, 60);
|
|
|
|
({value, done} = iter.next());
|
|
assert(!done);
|
|
assert(value[0] === 50);
|
|
assert(value[1] === 60);
|
|
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test5();
|
|
|
|
function test6() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
let i = 0;
|
|
for (let [key, value] of map) {
|
|
map.delete(key);
|
|
map.set(key, value);
|
|
i++;
|
|
if (i === 1000)
|
|
break;
|
|
}
|
|
assert(i === 1000);
|
|
}
|
|
test6();
|
|
|
|
function test7() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
let i = 0;
|
|
for (let [key, value] of map) {
|
|
map.clear();
|
|
map.set(key, value);
|
|
i++;
|
|
if (i === 1000)
|
|
break;
|
|
}
|
|
assert(i === 1000);
|
|
}
|
|
test7();
|
|
|
|
function test8() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
for (let i = 0; i < 500; i++)
|
|
map.set(i, i);
|
|
let i = 0;
|
|
for (let [key, value] of map) {
|
|
assert(key === value);
|
|
i++;
|
|
if (key === 250)
|
|
break;
|
|
}
|
|
assert(i === 251);
|
|
}
|
|
test8();
|
|
|
|
function test9() {
|
|
assert(1/(-0) === -Infinity);
|
|
|
|
let map = new Map;
|
|
map.set(-0, 50); // We should normalize -0 to +0 in the key.
|
|
for (let [key, value] of map) {
|
|
assert(1/key === Infinity);
|
|
}
|
|
assert(map.get(0.0) === 50);
|
|
assert(map.get(0) === 50);
|
|
assert(map.get(-0) === 50);
|
|
assert(map.get(+0) === 50);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test9();
|
|
|
|
function test10() {
|
|
let map = new Map;
|
|
map.set("negZero", -0); // We should *not* normalize -0 to +0 in the value.
|
|
for (let [key, value] of map) {
|
|
assert(1/value === -Infinity);
|
|
}
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test10();
|
|
|
|
function test11() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
let iter = map.keys();
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 20);
|
|
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test11();
|
|
|
|
function test12() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
let iter = map.values();
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 30);
|
|
|
|
({value, done} = iter.next());
|
|
assert(done);
|
|
assert(value === undefined);
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test12();
|
|
|
|
function test13() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map.keys();
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 20);
|
|
|
|
map.clear();
|
|
map.set("foo", "bar");
|
|
|
|
({value, done} = iter.next());
|
|
assert(!done);
|
|
assert(value === "foo");
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test13();
|
|
|
|
function test14() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map.values();
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 30);
|
|
|
|
map.clear();
|
|
map.set("foo", "bar");
|
|
|
|
;({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test14();
|
|
|
|
function test15() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map.keys();
|
|
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 20);
|
|
|
|
;({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === 50);
|
|
|
|
map.clear();
|
|
|
|
map.set("foo", "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === "foo");
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test15();
|
|
|
|
function test16() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map.values();
|
|
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 30);
|
|
|
|
;({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === 60);
|
|
|
|
map.clear();
|
|
|
|
map.set("foo", "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test16();
|
|
|
|
function test17() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map.keys();
|
|
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 20);
|
|
|
|
;({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === 50);
|
|
|
|
map.clear();
|
|
|
|
map.set("foo", "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === "foo");
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
|
|
map.set("hello", "world");
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test17();
|
|
|
|
function test18() {
|
|
let map = new Map;
|
|
map.set(20, 30);
|
|
map.set(50, 60);
|
|
let iter = map.values();
|
|
|
|
let {value, done} = iter.next();
|
|
assert(!done);
|
|
assert(value === 30);
|
|
|
|
;({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === 60);
|
|
|
|
map.clear();
|
|
|
|
map.set("foo", "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(!done);
|
|
assert(value === "bar");
|
|
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
|
|
map.set("hello", "world");
|
|
({value, done} = iter.next())
|
|
assert(done);
|
|
assert(value === undefined);
|
|
}
|
|
for (let i = 0; i < 100; i++)
|
|
test18();
|