storage_setitem.window.js (7417B)
1 ["localStorage", "sessionStorage"].forEach(function(name) { 2 var test_error = { name: "test" }; 3 var interesting_strs = ["\uD7FF", "\uD800", "\uDBFF", "\uDC00", 4 "\uDFFF", "\uE000", "\uFFFD", "\uFFFE", "\uFFFF", 5 "\uD83C\uDF4D", "\uD83Ca", "a\uDF4D", 6 "\uDBFF\uDFFF"]; 7 8 for (var i = 0; i <= 0xFF; i++) { 9 interesting_strs.push(String.fromCharCode(i)); 10 } 11 12 test(function() { 13 var storage = window[name]; 14 storage.clear(); 15 16 storage.setItem("name", "user1"); 17 assert_equals(storage.length, 1, "localStorage.setItem") 18 }, name + ".setItem()"); 19 20 test(function() { 21 var storage = window[name]; 22 storage.clear(); 23 24 storage["name"] = "user1"; 25 assert_true("name" in storage); 26 assert_equals(storage.length, 1, "storage.length") 27 assert_equals(storage.getItem("name"), "user1"); 28 assert_equals(storage["name"], "user1"); 29 }, name + "[]"); 30 31 test(function() { 32 var storage = window[name]; 33 storage.clear(); 34 35 storage["name"] = "user1"; 36 storage["name"] = "user2"; 37 assert_true("name" in storage); 38 assert_equals(storage.length, 1, "storage.length") 39 assert_equals(storage.getItem("name"), "user2"); 40 assert_equals(storage["name"], "user2"); 41 }, name + "[] update"); 42 43 test(function() { 44 var storage = window[name]; 45 storage.clear(); 46 47 storage.setItem("age", null); 48 assert_true("age" in storage); 49 assert_equals(storage.length, 1, "storage.length") 50 assert_equals(storage.getItem("age"), "null"); 51 assert_equals(storage["age"], "null"); 52 }, name + ".setItem(_, null)"); 53 54 test(function() { 55 var storage = window[name]; 56 storage.clear(); 57 58 storage["age"] = null; 59 assert_true("age" in storage); 60 assert_equals(storage.length, 1, "storage.length") 61 assert_equals(storage.getItem("age"), "null"); 62 assert_equals(storage["age"], "null"); 63 }, name + "[] = null"); 64 65 test(function() { 66 var storage = window[name]; 67 storage.clear(); 68 69 storage.setItem("age", undefined); 70 assert_true("age" in storage); 71 assert_equals(storage.length, 1, "storage.length") 72 assert_equals(storage.getItem("age"), "undefined"); 73 assert_equals(storage["age"], "undefined"); 74 }, name + ".setItem(_, undefined)"); 75 76 test(function() { 77 var storage = window[name]; 78 storage.clear(); 79 80 storage["age"] = undefined; 81 assert_true("age" in storage); 82 assert_equals(storage.length, 1, "storage.length") 83 assert_equals(storage.getItem("age"), "undefined"); 84 assert_equals(storage["age"], "undefined"); 85 }, name + "[] = undefined"); 86 87 test(function() { 88 var storage = window[name]; 89 storage.clear(); 90 91 storage.setItem("age", "10"); 92 assert_throws_exactly(test_error, function() { 93 storage.setItem("age", 94 { toString: function() { throw test_error; } }); 95 }); 96 assert_true("age" in storage); 97 assert_equals(storage.length, 1, "storage.length") 98 assert_equals(storage.getItem("age"), "10"); 99 assert_equals(storage["age"], "10"); 100 }, name + ".setItem({ throws })"); 101 102 test(function() { 103 var storage = window[name]; 104 storage.clear(); 105 106 storage.setItem("age", "10"); 107 assert_throws_exactly(test_error, function() { 108 storage["age"] = 109 { toString: function() { throw test_error; } }; 110 }); 111 assert_true("age" in storage); 112 assert_equals(storage.length, 1, "storage.length") 113 assert_equals(storage.getItem("age"), "10"); 114 assert_equals(storage["age"], "10"); 115 }, name + "[] = { throws }"); 116 117 test(function() { 118 var storage = window[name]; 119 storage.clear(); 120 121 storage.setItem(undefined, "test"); 122 assert_true("undefined" in storage); 123 assert_equals(storage.length, 1, "storage.length") 124 assert_equals(storage.getItem("undefined"), "test"); 125 assert_equals(storage["undefined"], "test"); 126 }, name + ".setItem(undefined, _)"); 127 128 test(function() { 129 var storage = window[name]; 130 storage.clear(); 131 132 storage[undefined] = "test2"; 133 assert_true("undefined" in storage); 134 assert_equals(storage.length, 1, "storage.length") 135 assert_equals(storage.getItem("undefined"), "test2"); 136 assert_equals(storage["undefined"], "test2"); 137 }, name + "[undefined]"); 138 139 test(function() { 140 var storage = window[name]; 141 storage.clear(); 142 143 storage.setItem(null, "test"); 144 assert_true("null" in storage); 145 assert_equals(storage.length, 1, "storage.length") 146 assert_equals(storage.getItem("null"), "test"); 147 assert_equals(storage["null"], "test"); 148 }, name + ".setItem(null, _)"); 149 150 test(function() { 151 var storage = window[name]; 152 storage.clear(); 153 154 storage[null] = "test2"; 155 assert_true("null" in storage); 156 assert_equals(storage.length, 1, "storage.length") 157 assert_equals(storage.getItem("null"), "test2"); 158 assert_equals(storage["null"], "test2"); 159 }, name + "[null]"); 160 161 test(function() { 162 var storage = window[name]; 163 storage.clear(); 164 165 storage["foo\0bar"] = "user1"; 166 assert_true("foo\0bar" in storage); 167 assert_false("foo\0" in storage); 168 assert_false("foo\0baz" in storage); 169 assert_false("foo" in storage); 170 assert_equals(storage.length, 1, "storage.length") 171 assert_equals(storage.getItem("foo\0bar"), "user1"); 172 assert_equals(storage.getItem("foo\0"), null); 173 assert_equals(storage.getItem("foo\0baz"), null); 174 assert_equals(storage.getItem("foo"), null); 175 assert_equals(storage["foo\0bar"], "user1"); 176 assert_equals(storage["foo\0"], undefined); 177 assert_equals(storage["foo\0baz"], undefined); 178 assert_equals(storage["foo"], undefined); 179 }, name + " key containing null"); 180 181 test(function() { 182 var storage = window[name]; 183 storage.clear(); 184 185 storage["name"] = "foo\0bar"; 186 assert_true("name" in storage); 187 assert_equals(storage.length, 1, "storage.length") 188 assert_equals(storage.getItem("name"), "foo\0bar"); 189 assert_equals(storage["name"], "foo\0bar"); 190 }, name + " value containing null"); 191 192 for (i = 0; i < interesting_strs.length; i++) { 193 var str = interesting_strs[i]; 194 test(function() { 195 var storage = window[name]; 196 storage.clear(); 197 198 storage[str] = "user1"; 199 assert_true(str in storage); 200 assert_equals(storage.length, 1, "storage.length") 201 assert_equals(storage.getItem(str), "user1"); 202 assert_equals(storage[str], "user1"); 203 }, name + "[" + format_value(str) + "]"); 204 205 test(function() { 206 var storage = window[name]; 207 storage.clear(); 208 209 storage["name"] = str; 210 assert_equals(storage.length, 1, "storage.length") 211 assert_equals(storage.getItem("name"), str); 212 assert_equals(storage["name"], str); 213 }, name + "[] = " + format_value(str)); 214 } 215 });