Test dom storage with many different types of keys (as opposed to values)

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Testing sessionStorage
storage.clear()
PASS storage.length is 0

PASS storage.getItem('FOO') is null
storage.setItem('FOO', 'BAR')
PASS storage.length is 1
PASS storage.getItem('FOO') is "BAR"
PASS storage.getItem('foo') is null
PASS storage.foo is undefined.
PASS storage['foo'] is undefined.
storage.foo = 'x'
PASS storage.foo is "x"
PASS storage['foo'] is "x"
PASS storage.getItem('foo') is "x"
storage['foo'] = 'y'
PASS storage.foo is "y"
PASS storage['foo'] is "y"
PASS storage.getItem('foo') is "y"
storage.setItem('foo', 'z')
PASS storage.foo is "z"
PASS storage['foo'] is "z"
PASS storage.getItem('foo') is "z"
PASS storage.length is 2

Testing a null key
storage.setItem(null, 'asdf')
PASS storage.getItem('null') is "asdf"
PASS storage.getItem(null) is "asdf"
PASS storage['null'] is "asdf"
PASS storage[null] is "asdf"
PASS storage.length is 3
storage[null] = 1
PASS storage.getItem(null) is "1"
storage['null'] = 2
PASS storage.getItem(null) is "2"
storage.setItem('null', 3)
PASS storage.getItem(null) is "3"
PASS storage.length is 3

Testing an undefined key
storage[undefined] = 'xyz'
PASS storage.getItem('undefined') is "xyz"
PASS storage.getItem(undefined) is "xyz"
PASS storage['undefined'] is "xyz"
PASS storage[undefined] is "xyz"
PASS storage.length is 4
storage['undefined'] = 4
PASS storage.getItem(undefined) is "4"
storage.setItem(undefined, 5)
PASS storage.getItem(undefined) is "5"
storage.setItem('undefined', 6)
PASS storage.getItem(undefined) is "6"
PASS storage.length is 4

Testing a numeric key
storage['2'] = 'ppp'
PASS storage.getItem('2') is "ppp"
PASS storage.getItem(2) is "ppp"
PASS storage['2'] is "ppp"
PASS storage[2] is "ppp"
PASS storage.length is 5
storage[2] = 7
PASS storage.getItem(2) is "7"
storage.setItem(2, 8)
PASS storage.getItem(2) is "8"
storage.setItem('2', 9)
PASS storage.getItem(2) is "9"
PASS storage.length is 5

Setting a non-ascii string to foo
storage[k] = 'hello'
PASS storage.getItem(k) is "hello"
PASS storage[k] is "hello"
PASS storage.length is 6

Testing case differences
storage.foo1 = 'lower1'
storage.FOO1 = 'UPPER1'
storage['foo2'] = 'lower2'
storage['FOO2'] = 'UPPER2'
storage.setItem('foo3', 'lower3')
storage.setItem('FOO3', 'UPPER3')
PASS storage.foo1 is "lower1"
PASS storage.FOO1 is "UPPER1"
PASS storage['foo2'] is "lower2"
PASS storage['FOO2'] is "UPPER2"
PASS storage.getItem('foo3') is "lower3"
PASS storage.getItem('FOO3') is "UPPER3"
PASS storage.length is 12

Testing overriding length
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage.length = 0
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage['length'] = 0
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage.setItem('length', 0)
PASS storage.length is 13
PASS storage['length'] is 13
PASS storage.getItem('length') is "0"
storage.removeItem('length')
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage.setItem('length', 0)
PASS storage.length is 13


Testing localStorage
storage.clear()
PASS storage.length is 0

PASS storage.getItem('FOO') is null
storage.setItem('FOO', 'BAR')
PASS storage.length is 1
PASS storage.getItem('FOO') is "BAR"
PASS storage.getItem('foo') is null
PASS storage.foo is undefined.
PASS storage['foo'] is undefined.
storage.foo = 'x'
PASS storage.foo is "x"
PASS storage['foo'] is "x"
PASS storage.getItem('foo') is "x"
storage['foo'] = 'y'
PASS storage.foo is "y"
PASS storage['foo'] is "y"
PASS storage.getItem('foo') is "y"
storage.setItem('foo', 'z')
PASS storage.foo is "z"
PASS storage['foo'] is "z"
PASS storage.getItem('foo') is "z"
PASS storage.length is 2

Testing a null key
storage.setItem(null, 'asdf')
PASS storage.getItem('null') is "asdf"
PASS storage.getItem(null) is "asdf"
PASS storage['null'] is "asdf"
PASS storage[null] is "asdf"
PASS storage.length is 3
storage[null] = 1
PASS storage.getItem(null) is "1"
storage['null'] = 2
PASS storage.getItem(null) is "2"
storage.setItem('null', 3)
PASS storage.getItem(null) is "3"
PASS storage.length is 3

Testing an undefined key
storage[undefined] = 'xyz'
PASS storage.getItem('undefined') is "xyz"
PASS storage.getItem(undefined) is "xyz"
PASS storage['undefined'] is "xyz"
PASS storage[undefined] is "xyz"
PASS storage.length is 4
storage['undefined'] = 4
PASS storage.getItem(undefined) is "4"
storage.setItem(undefined, 5)
PASS storage.getItem(undefined) is "5"
storage.setItem('undefined', 6)
PASS storage.getItem(undefined) is "6"
PASS storage.length is 4

Testing a numeric key
storage['2'] = 'ppp'
PASS storage.getItem('2') is "ppp"
PASS storage.getItem(2) is "ppp"
PASS storage['2'] is "ppp"
PASS storage[2] is "ppp"
PASS storage.length is 5
storage[2] = 7
PASS storage.getItem(2) is "7"
storage.setItem(2, 8)
PASS storage.getItem(2) is "8"
storage.setItem('2', 9)
PASS storage.getItem(2) is "9"
PASS storage.length is 5

Setting a non-ascii string to foo
storage[k] = 'hello'
PASS storage.getItem(k) is "hello"
PASS storage[k] is "hello"
PASS storage.length is 6

Testing case differences
storage.foo1 = 'lower1'
storage.FOO1 = 'UPPER1'
storage['foo2'] = 'lower2'
storage['FOO2'] = 'UPPER2'
storage.setItem('foo3', 'lower3')
storage.setItem('FOO3', 'UPPER3')
PASS storage.foo1 is "lower1"
PASS storage.FOO1 is "UPPER1"
PASS storage['foo2'] is "lower2"
PASS storage['FOO2'] is "UPPER2"
PASS storage.getItem('foo3') is "lower3"
PASS storage.getItem('FOO3') is "UPPER3"
PASS storage.length is 12

Testing overriding length
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage.length = 0
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage['length'] = 0
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage.setItem('length', 0)
PASS storage.length is 13
PASS storage['length'] is 13
PASS storage.getItem('length') is "0"
storage.removeItem('length')
PASS storage.length is 12
PASS storage['length'] is 12
PASS storage.getItem('length') is null
storage.setItem('length', 0)
PASS storage.length is 13
PASS successfullyParsed is true

TEST COMPLETE

