| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Tests storage with named item access and Symbol properties."); |
| |
| knownSymbol = Symbol(); |
| localStorage.clear(); |
| |
| localStorage[Symbol()] = 1; |
| shouldBeTrue("localStorage.length === 0"); |
| shouldBeTrue("localStorage[Symbol()] === undefined"); |
| |
| localStorage[knownSymbol] = 2; |
| shouldBeTrue("localStorage.length === 0"); |
| shouldBeTrue("localStorage[knownSymbol] === 2"); // number |
| shouldNotThrow("delete localStorage[knownSymbol]"); |
| shouldBeTrue("localStorage.length === 0"); |
| shouldBeTrue("localStorage[knownSymbol] === undefined"); |
| |
| localStorage["Symbol()"] = 3; |
| shouldBeTrue("localStorage.length === 1"); |
| shouldBeTrue("localStorage['Symbol()'] === '3'"); // string |
| shouldBeTrue("localStorage.key(0) === 'Symbol()'"); |
| |
| shouldBeTrue("localStorage[''] === undefined"); |
| localStorage[''] = 4; |
| shouldBeTrue("localStorage[''] === '4'"); // string |
| shouldBeTrue("localStorage.length === 2"); |
| |
| shouldNotThrow("delete localStorage['Symbol()']"); |
| shouldBeTrue("localStorage.length === 1"); |
| shouldBeTrue("localStorage['Symbol()'] === undefined"); // string |
| |
| shouldNotThrow("delete localStorage['']"); |
| shouldBeTrue("localStorage.length === 0"); |
| shouldBeTrue("localStorage[''] === undefined"); // string |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |