gecko-dev/testing/web-platform/tests/webstorage/symbol-props.window.js
Ms2ger b6d76dafc2 Bug 1526530 [wpt PR 15131] - Add some tests for Symbol properties on Storage objects., a=testonly
Automatic update from web-platform-tests
Add some tests for Symbol properties on Storage objects.

--

wpt-commits: 4582ca92624594ad7e5d2c1137823c1c1e93d2e3
wpt-pr: 15131
2019-02-14 11:38:48 +00:00

81 lines
2.2 KiB
JavaScript

["localStorage", "sessionStorage"].forEach(function(name) {
test(function() {
var key = Symbol();
var storage = window[name];
storage.clear();
storage[key] = "test";
assert_equals(storage[key], "test");
}, name + ": plain set + get (loose)");
test(function() {
"use strict";
var key = Symbol();
var storage = window[name];
storage.clear();
storage[key] = "test";
assert_equals(storage[key], "test");
}, name + ": plain set + get (strict)");
test(function() {
var key = Symbol();
var storage = window[name];
storage.clear();
Object.defineProperty(storage, key, { "value": "test" });
assert_equals(storage[key], "test");
}, name + ": defineProperty + get");
test(function() {
var key = Symbol();
var storage = window[name];
storage.clear();
Object.defineProperty(storage, key, { "value": "test", "configurable": false });
assert_equals(storage[key], "test");
var desc = Object.getOwnPropertyDescriptor(storage, key);
assert_true(desc.configurable, "configurable");
assert_true(delete storage[key]);
assert_equals(storage[key], undefined);
}, name + ": defineProperty not configurable");
test(function() {
var key = Symbol();
Storage.prototype[key] = "test";
this.add_cleanup(function() { delete Storage.prototype[key]; });
var storage = window[name];
storage.clear();
assert_equals(storage[key], "test");
var desc = Object.getOwnPropertyDescriptor(storage, key);
assert_equals(desc, undefined);
}, name + ": get with symbol on prototype");
test(function() {
var key = Symbol();
var storage = window[name];
storage.clear();
storage[key] = "test";
assert_true(delete storage[key]);
assert_equals(storage[key], undefined);
}, name + ": delete existing property");
test(function() {
var key = Symbol();
var storage = window[name];
storage.clear();
assert_true(delete storage[key]);
assert_equals(storage[key], undefined);
}, name + ": delete non-existent property");
});