81 lines
2.2 KiB
JavaScript
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");
|
|
});
|