• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1description("Test some corner case DOM Storage values.");
2
3function testKeyValue(key, value)
4{
5    keyString = "storage['" + key + "']";
6    shouldBeEqualToString("typeof " + keyString, "string");
7    shouldBeEqualToString(keyString, value);
8
9    keyString = "storage." + key;
10    shouldBeEqualToString("typeof " + keyString, "string");
11    shouldBeEqualToString(keyString, value);
12
13    keyString = "storage.getItem('" + key + "')";
14    shouldBeEqualToString("typeof " + keyString, "string");
15    shouldBeEqualToString(keyString, value);
16}
17
18function test(storageString)
19{
20    storage = eval(storageString);
21    if (!storage) {
22        testFailed(storageString + " DOES NOT exist");
23        return;
24    }
25
26    debug("Testing " + storageString);
27
28    evalAndLog("storage.clear()");
29    shouldBe("storage.length", "0");
30
31    debug("");
32    shouldBeEqualToString("typeof storage['foo']", "undefined");
33    shouldBeUndefined("storage['foo']");
34    shouldBeEqualToString("typeof storage.foo", "undefined");
35    shouldBeUndefined("storage.foo");
36    shouldBeEqualToString("typeof storage.getItem('foo')", "object");
37    shouldBeNull("storage.getItem('foo')");
38
39    debug("");
40    evalAndLog("storage.foo1 = null");
41    testKeyValue("foo1", "null");
42    evalAndLog("storage['foo2'] = null");
43    testKeyValue("foo2", "null");
44    evalAndLog("storage.setItem('foo3', null)");
45    testKeyValue("foo3", "null");
46
47    debug("");
48    evalAndLog("storage.foo4 = undefined");
49    testKeyValue("foo4", "undefined");
50    evalAndLog("storage['foo5'] = undefined");
51    testKeyValue("foo5", "undefined");
52    evalAndLog("storage.setItem('foo6', undefined)");
53    testKeyValue("foo6", "undefined");
54
55    debug("");
56    evalAndLog("storage.foo7 = 2");
57    testKeyValue("foo7", "2");
58    evalAndLog("storage['foo8'] = 2");
59    testKeyValue("foo8", "2");
60    evalAndLog("storage.setItem('foo9', 2)");
61    testKeyValue("foo9", "2");
62
63    debug("");
64    k = String.fromCharCode(255425) + String.fromCharCode(255) + String.fromCharCode(2554252321) + String.fromCharCode(0) + 'hello';
65    evalAndLog("storage.foo10 = k");
66    testKeyValue("foo10", k);
67    evalAndLog("storage['foo11'] = k");
68    testKeyValue("foo11", k);
69    evalAndLog("storage.setItem('foo12', k)");
70    testKeyValue("foo12", k);
71}
72
73test("sessionStorage");
74debug("");
75debug("");
76test("localStorage");
77
78window.successfullyParsed = true;
79isSuccessfullyParsed();
80