symbol-props.window.js (2293B)
1 ["localStorage", "sessionStorage"].forEach(function(name) { 2 test(function() { 3 var key = Symbol(); 4 5 var storage = window[name]; 6 storage.clear(); 7 8 storage[key] = "test"; 9 assert_equals(storage[key], "test"); 10 }, name + ": plain set + get (loose)"); 11 12 test(function() { 13 "use strict"; 14 var key = Symbol(); 15 16 var storage = window[name]; 17 storage.clear(); 18 19 storage[key] = "test"; 20 assert_equals(storage[key], "test"); 21 }, name + ": plain set + get (strict)"); 22 23 test(function() { 24 var key = Symbol(); 25 26 var storage = window[name]; 27 storage.clear(); 28 29 Object.defineProperty(storage, key, { "value": "test" }); 30 assert_equals(storage[key], "test"); 31 }, name + ": defineProperty + get"); 32 33 test(function() { 34 var key = Symbol(); 35 36 var storage = window[name]; 37 storage.clear(); 38 39 Object.defineProperty(storage, key, { "value": "test", "configurable": false }); 40 assert_equals(storage[key], "test"); 41 var desc = Object.getOwnPropertyDescriptor(storage, key); 42 assert_false(desc.configurable, "configurable"); 43 44 assert_false(delete storage[key]); 45 assert_equals(storage[key], "test"); 46 }, name + ": defineProperty not configurable"); 47 48 test(function() { 49 var key = Symbol(); 50 Storage.prototype[key] = "test"; 51 this.add_cleanup(function() { delete Storage.prototype[key]; }); 52 53 var storage = window[name]; 54 storage.clear(); 55 56 assert_equals(storage[key], "test"); 57 var desc = Object.getOwnPropertyDescriptor(storage, key); 58 assert_equals(desc, undefined); 59 }, name + ": get with symbol on prototype"); 60 61 test(function() { 62 var key = Symbol(); 63 64 var storage = window[name]; 65 storage.clear(); 66 67 storage[key] = "test"; 68 assert_true(delete storage[key]); 69 assert_equals(storage[key], undefined); 70 }, name + ": delete existing property"); 71 72 test(function() { 73 var key = Symbol(); 74 75 var storage = window[name]; 76 storage.clear(); 77 78 assert_true(delete storage[key]); 79 assert_equals(storage[key], undefined); 80 }, name + ": delete non-existent property"); 81 });