blob: fcc2b027e51c28a80aa5e8d2aba73e92a0719aa4 [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
</head>
<body>
<script type="application/javascript">
test(() => {
assert_true(!!window.internals);
const maplike = internals.createInternalsMapLike();
assert_array_equals(maplike.inspectKeys(), ["init"], "init keys");
assert_array_equals(maplike.inspectValues(), [0], "init values");
assert_true(maplike.has("init"));
maplike.set("testA", 1);
assert_array_equals(maplike.inspectKeys(), ["init", "testA"]);
assert_array_equals(maplike.inspectValues(), [0, 1]);
maplike.set("testA", 2);
assert_array_equals(maplike.inspectKeys(), ["init", "testA"]);
assert_array_equals(maplike.inspectValues(), [0, 2]);
maplike.set("testB", 3);
assert_array_equals(maplike.inspectKeys(), ["init", "testA", "testB"]);
assert_array_equals(maplike.inspectValues(), [0, 2, 3]);
maplike.delete("init");
assert_array_equals(maplike.inspectKeys(), ["testA", "testB"]);
assert_array_equals(maplike.inspectValues(), [2, 3]);
assert_equals(maplike.size, 2, "size");
let entriesTest = "";
for (let entry of maplike.entries()) {
entriesTest += entry;
entriesTest += ' ';
}
assert_equals(entriesTest, "testA,2 testB,3 ", "entries test");
let valuesTest = "";
for (let entry of maplike.values()) {
valuesTest += entry;
}
assert_equals(valuesTest, "23", "values test");
let keysTest = "";
for (let entry of maplike.keys()) {
keysTest += entry;
}
assert_equals(keysTest, "testAtestB", "keys test");
assert_equals(maplike.forEach.length, 1);
let forEachTest = "";
const forEachResult = maplike.forEach((value, key, object) => {
forEachTest += key;
forEachTest += ',';
forEachTest += value;
forEachTest += ' ';
assert_equals(object, maplike);
});
assert_equals(forEachTest, "testA,2 testB,3 ", "forEach test");
assert_equals(forEachResult, undefined);
maplike.clear();
assert_array_equals(maplike.inspectKeys(), []);
assert_array_equals(maplike.inspectValues(), []);
}, "Basic add/remove/clear functionality");
</script>
</body>
</html>