mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-09 04:54:33 +00:00
122 lines
4.1 KiB
HTML
122 lines
4.1 KiB
HTML
<!doctype html>
|
|
<title>WeakMap.prototype</title>
|
|
<link rel=author href=mailto:Ms2ger@gmail.com title=Ms2ger>
|
|
<link rel=help href=http://people.mozilla.org/~jorendorff/es6-draft.html#sec-15.15.5>
|
|
<script src=/resources/testharness.js></script>
|
|
<script src=/resources/testharnessreport.js></script>
|
|
<div id=log></div>
|
|
<script>
|
|
function assert_propdesc(obj, prop, Writable, Enumerable, Configurable) {
|
|
var propdesc = Object.getOwnPropertyDescriptor(obj, prop);
|
|
assert_equals(typeof propdesc, "object");
|
|
assert_equals(propdesc.writable, Writable, "[[Writable]]");
|
|
assert_equals(propdesc.enumerable, Enumerable, "[[Enumerable]]");
|
|
assert_equals(propdesc.configurable, Configurable, "[[Configurable]]");
|
|
}
|
|
|
|
function test_length(fun, expected) {
|
|
test(function() {
|
|
assert_propdesc(WeakMap.prototype[fun], "length", false, false, false);
|
|
assert_equals(WeakMap.prototype[fun].length, expected);
|
|
}, "WeakMap.prototype." + fun + ".length")
|
|
}
|
|
|
|
function test_thisval(fun, args) {
|
|
// Step 1-2
|
|
test(function() {
|
|
assert_throws(new TypeError(), function() {
|
|
WeakMap.prototype[fun].apply(null, args);
|
|
});
|
|
assert_throws(new TypeError(), function() {
|
|
WeakMap.prototype[fun].apply(undefined, args);
|
|
});
|
|
}, "WeakMap.prototype." + fun + ": ToObject on this")
|
|
// Step 3
|
|
test(function() {
|
|
assert_throws(new TypeError(), function() {
|
|
WeakMap.prototype[fun].apply({}, args);
|
|
});
|
|
}, "WeakMap.prototype." + fun + ": this has no [[WeakMapData]] internal property")
|
|
}
|
|
|
|
// In every case, the length property of a built-in Function object described
|
|
// in this clause has the attributes { [[Writable]]: false, [[Enumerable]]:
|
|
// false, [[Configurable]]: false }. Every other property described in this
|
|
// clause has the attributes { [[Writable]]: true, [[Enumerable]]: false,
|
|
// [[Configurable]]: true } unless otherwise specified.
|
|
|
|
test(function() {
|
|
assert_equals(Object.getPrototypeOf(WeakMap.prototype), Object.prototype);
|
|
}, "The value of the [[Prototype]] internal property of the WeakMap prototype object is the standard built-in Object prototype object (15.2.4).")
|
|
|
|
// 15.15.5.1 WeakMap.prototype.constructor
|
|
test(function() {
|
|
assert_equals(WeakMap.prototype.constructor, WeakMap);
|
|
assert_propdesc(WeakMap.prototype, "constructor", true, false, true);
|
|
}, "The initial value of WeakMap.prototype.constructor is the built-in WeakMap constructor.")
|
|
|
|
// 15.15.5.2 WeakMap.prototype.clear ()
|
|
test(function() {
|
|
assert_propdesc(WeakMap.prototype, "clear", true, false, true);
|
|
test_length("clear", 0);
|
|
// Step 1-3
|
|
test_thisval("clear", null);
|
|
// Step 4-5
|
|
test(function() {
|
|
var wm = new WeakMap();
|
|
var key = {};
|
|
wm.set(key, "fail");
|
|
assert_true(wm.has(key));
|
|
var res = wm.clear();
|
|
assert_equals(res, undefined);
|
|
assert_false(wm.has(key));
|
|
}, "WeakMap.prototype.clear: basic functionality");
|
|
}, "WeakMap.prototype.clear")
|
|
|
|
// 15.15.5.3 WeakMap.prototype.delete ( key )
|
|
test(function() {
|
|
assert_propdesc(WeakMap.prototype, "delete", true, false, true);
|
|
test_length("delete", 1);
|
|
// Step 1-3
|
|
test_thisval("delete", [{}]);
|
|
}, "WeakMap.prototype.delete")
|
|
|
|
// 15.15.5.4 WeakMap.prototype.get ( key )
|
|
test(function() {
|
|
assert_propdesc(WeakMap.prototype, "get", true, false, true);
|
|
test_length("get", 1);
|
|
// Step 1-3
|
|
test_thisval("get", [{}]);
|
|
|
|
// Step 8
|
|
test(function() {
|
|
var wm = new WeakMap();
|
|
var key = {};
|
|
var res = wm.get({}, {});
|
|
assert_equals(res, undefined);
|
|
}, "WeakMap.prototype.get: return undefined");
|
|
}, "WeakMap.prototype.get")
|
|
|
|
// 15.14.5.5 Map.prototype.has ( key )
|
|
test(function() {
|
|
assert_propdesc(WeakMap.prototype, "has", true, false, true);
|
|
test_length("has", 1);
|
|
// Step 1-3
|
|
test_thisval("has", [{}]);
|
|
}, "WeakMap.prototype.has")
|
|
|
|
// 15.14.5.6 Map.prototype.set ( key , value )
|
|
test(function() {
|
|
assert_propdesc(WeakMap.prototype, "set", true, false, true);
|
|
test_length("set", 2);
|
|
// Step 1-3
|
|
test_thisval("set", [{}, {}]);
|
|
}, "WeakMap.prototype.set")
|
|
|
|
// 15.15.5.7 Map.prototype.@@toStringTag
|
|
test(function() {
|
|
assert_class_string(new WeakMap(), "WeakMap");
|
|
assert_class_string(WeakMap.prototype, "WeakMap");
|
|
}, "WeakMap.prototype.@@toStringTag")
|
|
</script>
|