defineProperty.window.js (2081B)
1 ["localStorage", "sessionStorage"].forEach(function(name) { 2 [9, "x"].forEach(function(key) { 3 test(function() { 4 var desc = { 5 value: "value", 6 }; 7 8 var storage = window[name]; 9 storage.clear(); 10 11 assert_equals(storage[key], undefined); 12 assert_equals(storage.getItem(key), null); 13 assert_equals(Object.defineProperty(storage, key, desc), storage); 14 assert_equals(storage[key], "value"); 15 assert_equals(storage.getItem(key), "value"); 16 }, "Defining data property for key " + key + " on " + name); 17 18 test(function() { 19 var desc1 = { 20 value: "value", 21 }; 22 var desc2 = { 23 value: "new value", 24 }; 25 26 var storage = window[name]; 27 storage.clear(); 28 29 assert_equals(storage[key], undefined); 30 assert_equals(storage.getItem(key), null); 31 assert_equals(Object.defineProperty(storage, key, desc1), storage); 32 assert_equals(storage[key], "value"); 33 assert_equals(storage.getItem(key), "value"); 34 35 assert_equals(Object.defineProperty(storage, key, desc2), storage); 36 assert_equals(storage[key], "new value"); 37 assert_equals(storage.getItem(key), "new value"); 38 }, "Defining data property for key " + key + " on " + name + " twice"); 39 40 test(function() { 41 var desc = { 42 value: { 43 toString: function() { return "value"; } 44 }, 45 }; 46 47 var storage = window[name]; 48 storage.clear(); 49 50 assert_equals(storage[key], undefined); 51 assert_equals(storage.getItem(key), null); 52 assert_equals(Object.defineProperty(storage, key, desc), storage); 53 assert_equals(storage[key], "value"); 54 assert_equals(storage.getItem(key), "value"); 55 }, "Defining data property with toString for key " + key + " on " + name); 56 }); 57 });