Test IndexedDB key types

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)
db.createObjectStore('store');

trans = db.transaction('store', 'readwrite')
store = trans.objectStore('store')

long_array = []; for (i = 0; i < 10; ++i) { long_array.push('abc', 123, new Date(0), []); }

array that contains non-numeric self-reference
self_referrential_array = []; self_referrential_array.self = self_referrential_array;

testing array key: []
store.put('value1', []);
store.get([]);
PASS getreq.result is "value1"
store.delete([]);

testing array key: [-Infinity]
store.put('value2', [-Infinity]);
store.get([-Infinity]);
PASS getreq.result is "value2"
store.delete([-Infinity]);

testing array key: [-Number.MAX_VALUE]
store.put('value3', [-Number.MAX_VALUE]);
store.get([-Number.MAX_VALUE]);
PASS getreq.result is "value3"
store.delete([-Number.MAX_VALUE]);

testing array key: [-1]
store.put('value4', [-1]);
store.get([-1]);
PASS getreq.result is "value4"
store.delete([-1]);

testing array key: [-Number.MIN_VALUE]
store.put('value5', [-Number.MIN_VALUE]);
store.get([-Number.MIN_VALUE]);
PASS getreq.result is "value5"
store.delete([-Number.MIN_VALUE]);

testing array key: [0]
store.put('value6', [0]);
store.get([0]);
PASS getreq.result is "value6"
store.delete([0]);

testing array key: [Number.MIN_VALUE]
store.put('value7', [Number.MIN_VALUE]);
store.get([Number.MIN_VALUE]);
PASS getreq.result is "value7"
store.delete([Number.MIN_VALUE]);

testing array key: [1]
store.put('value8', [1]);
store.get([1]);
PASS getreq.result is "value8"
store.delete([1]);

testing array key: [Number.MAX_VALUE]
store.put('value9', [Number.MAX_VALUE]);
store.get([Number.MAX_VALUE]);
PASS getreq.result is "value9"
store.delete([Number.MAX_VALUE]);

testing array key: [Infinity]
store.put('value10', [Infinity]);
store.get([Infinity]);
PASS getreq.result is "value10"
store.delete([Infinity]);

testing array key: [1,2,3]
store.put('value11', [1,2,3]);
store.get([1,2,3]);
PASS getreq.result is "value11"
store.delete([1,2,3]);

testing array key: [new Date(0)]
store.put('value12', [new Date(0)]);
store.get([new Date(0)]);
PASS getreq.result is "value12"
store.delete([new Date(0)]);

testing array key: [new Date('2525-01-01T00:00:00Z')]
store.put('value13', [new Date('2525-01-01T00:00:00Z')]);
store.get([new Date('2525-01-01T00:00:00Z')]);
PASS getreq.result is "value13"
store.delete([new Date('2525-01-01T00:00:00Z')]);

testing array key: [new Date(0), new Date('2525-01-01T00:00:00Z')]
store.put('value14', [new Date(0), new Date('2525-01-01T00:00:00Z')]);
store.get([new Date(0), new Date('2525-01-01T00:00:00Z')]);
PASS getreq.result is "value14"
store.delete([new Date(0), new Date('2525-01-01T00:00:00Z')]);

testing array key: ['']
store.put('value15', ['']);
store.get(['']);
PASS getreq.result is "value15"
store.delete(['']);

testing array key: ['']
store.put('value16', ['']);
store.get(['']);
PASS getreq.result is "value16"
store.delete(['']);

testing array key: ['abc123']
store.put('value17', ['abc123']);
store.get(['abc123']);
PASS getreq.result is "value17"
store.delete(['abc123']);

testing array key: ['abc', 123]
store.put('value18', ['abc', 123]);
store.get(['abc', 123]);
PASS getreq.result is "value18"
store.delete(['abc', 123]);

testing array key: [[]]
store.put('value19', [[]]);
store.get([[]]);
PASS getreq.result is "value19"
store.delete([[]]);

testing array key: [[], []]
store.put('value20', [[], []]);
store.get([[], []]);
PASS getreq.result is "value20"
store.delete([[], []]);

testing array key: [[], [], []]
store.put('value21', [[], [], []]);
store.get([[], [], []]);
PASS getreq.result is "value21"
store.delete([[], [], []]);

testing array key: [[[]]]
store.put('value22', [[[]]]);
store.get([[[]]]);
PASS getreq.result is "value22"
store.delete([[[]]]);

testing array key: [[[[]]]]
store.put('value23', [[[[]]]]);
store.get([[[[]]]]);
PASS getreq.result is "value23"
store.delete([[[[]]]]);

testing array key: [123, 'abc', new Date(0), []]
store.put('value24', [123, 'abc', new Date(0), []]);
store.get([123, 'abc', new Date(0), []]);
PASS getreq.result is "value24"
store.delete([123, 'abc', new Date(0), []]);

testing array key: [[123, 'abc', new Date(0), []], [456, 'def', new Date(999), [[]]]]
store.put('value25', [[123, 'abc', new Date(0), []], [456, 'def', new Date(999), [[]]]]);
store.get([[123, 'abc', new Date(0), []], [456, 'def', new Date(999), [[]]]]);
PASS getreq.result is "value25"
store.delete([[123, 'abc', new Date(0), []], [456, 'def', new Date(999), [[]]]]);

testing array key: long_array
store.put('value26', long_array);
store.get(long_array);
PASS getreq.result is "value26"
store.delete(long_array);

testing array key: self_referrential_array
store.put('value27', self_referrential_array);
store.get(self_referrential_array);
PASS getreq.result is "value27"
store.delete(self_referrential_array);

trans = db.transaction('store', 'readwrite')
store = trans.objectStore('store')

array that contains itself: array = [ array ]
cyclic_array = []; cyclic_array.push(cyclic_array)
array that contains itself, one level down: array = [ [ array ] ]
cyclic_array2 = []; cyclic_array2.push([cyclic_array2])
array that contains itself, not as first element: array = [1, 'b', [], array]
cyclic_array3 = [1, 'b', []]; cyclic_array3.push(cyclic_array3)
array that contains array that contains itself
cyclic_array4 = [cyclic_array];

testing invalid array key: [ void 0 ]
Expecting exception from store.put('value', [ void 0 ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ true ]
Expecting exception from store.put('value', [ true ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ false ]
Expecting exception from store.put('value', [ false ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ NaN ]
Expecting exception from store.put('value', [ NaN ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ null ]
Expecting exception from store.put('value', [ null ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ {} ]
Expecting exception from store.put('value', [ {} ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ function () {} ]
Expecting exception from store.put('value', [ function () {} ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ /regex/ ]
Expecting exception from store.put('value', [ /regex/ ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ self ]
Expecting exception from store.put('value', [ self ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ self.document ]
Expecting exception from store.put('value', [ self.document ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: [ self.document.body ]
Expecting exception from store.put('value', [ self.document.body ]);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: cyclic_array
Expecting exception from store.put('value', cyclic_array);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: cyclic_array2
Expecting exception from store.put('value', cyclic_array2);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: cyclic_array3
Expecting exception from store.put('value', cyclic_array3);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: cyclic_array4
Expecting exception from store.put('value', cyclic_array4);
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

testing invalid array key: Array(1000)
Expecting exception from store.put('value', Array(1000));
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to store record in an IDBObjectStore: The parameter is not a valid key.

PASS indexedDB.cmp(makeArrayOfDepth(25), 0) is 1
PASS indexedDB.cmp(makeArrayOfDepth(250), 0) is 1
Expecting exception from indexedDB.cmp(makeArrayOfDepth(2500), 0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'DataError'
Exception message: Failed to execute 'cmp' on 'IDBFactory': The parameter is not a valid key.

PASS successfullyParsed is true

TEST COMPLETE

