Files
ladybird/Tests/LibWeb/Text/input/wpt-import/webstorage/symbol-props.window.js
Shannon Booth c63e77142a Tests/LibWeb: Import webstorage symbol-props WPT test
I noticed a subtest in this test failing along with every
other browser. After investigation, the failure was due
to testing the previous specification before:

https://github.com/whatwg/webidl/commit/3fb6ab4

So this imports the now adjusted WPT test as of:

https://github.com/web-platform-tests/wpt/commit/bb3f032
2025-07-03 12:45:31 +01:00

82 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_false(desc.configurable, "configurable");
assert_false(delete storage[key]);
assert_equals(storage[key], "test");
}, 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");
});