haikuwebkit/LayoutTests/storage/domstorage/localstorage/delete-defineproperty-remov...

35 lines
1.4 KiB
HTML

<head>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
</head>
<body>
<script>
localStorage.clear();
test(() => {
assert_array_equals(Object.getOwnPropertyNames(localStorage), []);
}, "Object.getOwnPropertyNames(localStorage) on an empty local storage should return an empty array.");
test(() => {
Object.defineProperty(localStorage, '1', {value: 'present'});
assert_equals(localStorage.getItem('1'), 'present');
assert_array_equals(Object.getOwnPropertyNames(localStorage), ['1']);
}, "Object.defineProperty can be used to add items to localStorage.");
test(() => {
assert_equals(delete localStorage[1], true);
assert_array_equals(Object.getOwnPropertyNames(localStorage), []);
}, "Operator delete can be used to remove items from localStorage.");
test(() => {
Object.defineProperty(localStorage, '2', {value: 'present', configurable: false});
assert_equals(localStorage.getItem('2'), 'present');
assert_array_equals(Object.getOwnPropertyNames(localStorage), ['2']);
assert_equals(delete localStorage[2], true);
assert_array_equals(Object.getOwnPropertyNames(localStorage), []);
}, "The configurable modifier does effect the result when used in adding properties to localStorage with Object.defineProperty.");
</script>
</body>