This tests the expected values from some more complex index situations.

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


indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;

indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
Initial upgrade needed: Old version - 0 New version - 1
get "good" result is: [object Object]
bar is good
baz is bad
getKey "good" result is: 1
get "bad" result is: undefined
getKey "bad" result is: undefined
get "ok" result is: [object Object]
bar is ok
baz is meh
getKey "ok" result is: 4
get "meh" result is: undefined
getKey "meh" result is: undefined
get "super" result is: [object Object]
bar is super
baz is thanksForAsking
getKey "super" result is: 7
get "thanksForAsking" result is: undefined
getKey "thanksForAsking" result is: undefined
get "good,bad" result is: undefined
getKey "good,bad" result is: undefined
get "ok,meh" result is: undefined
getKey "ok,meh" result is: undefined
get "super,thanksForAsking" result is: undefined
getKey "super,thanksForAsking" result is: undefined
get "This is to test" result is: undefined
getKey "This is to test" result is: undefined
get "multiEntry indexes" result is: undefined
getKey "multiEntry indexes" result is: undefined
get "This is to test,multiEntry indexes" result is: [object Object]
bar is This is to test,multiEntry indexes
getKey "This is to test,multiEntry indexes" result is: 10
count result is: 10

get "good" result is: undefined
getKey "good" result is: undefined
get "bad" result is: [object Object]
bar is good
baz is bad
getKey "bad" result is: 1
get "ok" result is: undefined
getKey "ok" result is: undefined
get "meh" result is: [object Object]
bar is ok
baz is meh
getKey "meh" result is: 4
get "super" result is: undefined
getKey "super" result is: undefined
get "thanksForAsking" result is: [object Object]
bar is super
baz is thanksForAsking
getKey "thanksForAsking" result is: 7
get "good,bad" result is: undefined
getKey "good,bad" result is: undefined
get "ok,meh" result is: undefined
getKey "ok,meh" result is: undefined
get "super,thanksForAsking" result is: undefined
getKey "super,thanksForAsking" result is: undefined
get "This is to test" result is: undefined
getKey "This is to test" result is: undefined
get "multiEntry indexes" result is: undefined
getKey "multiEntry indexes" result is: undefined
get "This is to test,multiEntry indexes" result is: undefined
getKey "This is to test,multiEntry indexes" result is: undefined
count result is: 9

get "good" result is: undefined
getKey "good" result is: undefined
get "bad" result is: undefined
getKey "bad" result is: undefined
get "ok" result is: undefined
getKey "ok" result is: undefined
get "meh" result is: undefined
getKey "meh" result is: undefined
get "super" result is: undefined
getKey "super" result is: undefined
get "thanksForAsking" result is: undefined
getKey "thanksForAsking" result is: undefined
get "good,bad" result is: [object Object]
bar is good
baz is bad
getKey "good,bad" result is: 1
get "ok,meh" result is: [object Object]
bar is ok
baz is meh
getKey "ok,meh" result is: 4
get "super,thanksForAsking" result is: [object Object]
bar is super
baz is thanksForAsking
getKey "super,thanksForAsking" result is: 7
get "This is to test" result is: undefined
getKey "This is to test" result is: undefined
get "multiEntry indexes" result is: undefined
getKey "multiEntry indexes" result is: undefined
get "This is to test,multiEntry indexes" result is: undefined
getKey "This is to test,multiEntry indexes" result is: undefined
count result is: 9

get "good" result is: [object Object]
bar is good
baz is bad
getKey "good" result is: 1
get "bad" result is: undefined
getKey "bad" result is: undefined
get "ok" result is: [object Object]
bar is ok
baz is meh
getKey "ok" result is: 4
get "meh" result is: undefined
getKey "meh" result is: undefined
get "super" result is: [object Object]
bar is super
baz is thanksForAsking
getKey "super" result is: 7
get "thanksForAsking" result is: undefined
getKey "thanksForAsking" result is: undefined
get "good,bad" result is: undefined
getKey "good,bad" result is: undefined
get "ok,meh" result is: undefined
getKey "ok,meh" result is: undefined
get "super,thanksForAsking" result is: undefined
getKey "super,thanksForAsking" result is: undefined
get "This is to test" result is: [object Object]
bar is This is to test,multiEntry indexes
getKey "This is to test" result is: 10
get "multiEntry indexes" result is: [object Object]
bar is This is to test,multiEntry indexes
getKey "multiEntry indexes" result is: 10
get "This is to test,multiEntry indexes" result is: undefined
getKey "This is to test,multiEntry indexes" result is: undefined
count result is: 11

Initial upgrade versionchange transaction complete
PASS successfullyParsed is true

TEST COMPLETE

