| 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 < 1000; ++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" |
| |
| testing array key: [-Infinity] |
| store.put('value2', [-Infinity]); |
| store.get([-Infinity]); |
| PASS getreq.result is "value2" |
| |
| testing array key: [-Number.MAX_VALUE] |
| store.put('value3', [-Number.MAX_VALUE]); |
| store.get([-Number.MAX_VALUE]); |
| PASS getreq.result is "value3" |
| |
| testing array key: [-1] |
| store.put('value4', [-1]); |
| store.get([-1]); |
| PASS getreq.result is "value4" |
| |
| testing array key: [-Number.MIN_VALUE] |
| store.put('value5', [-Number.MIN_VALUE]); |
| store.get([-Number.MIN_VALUE]); |
| PASS getreq.result is "value5" |
| |
| testing array key: [0] |
| store.put('value6', [0]); |
| store.get([0]); |
| PASS getreq.result is "value6" |
| |
| testing array key: [Number.MIN_VALUE] |
| store.put('value7', [Number.MIN_VALUE]); |
| store.get([Number.MIN_VALUE]); |
| PASS getreq.result is "value7" |
| |
| testing array key: [1] |
| store.put('value8', [1]); |
| store.get([1]); |
| PASS getreq.result is "value8" |
| |
| testing array key: [Number.MAX_VALUE] |
| store.put('value9', [Number.MAX_VALUE]); |
| store.get([Number.MAX_VALUE]); |
| PASS getreq.result is "value9" |
| |
| testing array key: [Infinity] |
| store.put('value10', [Infinity]); |
| store.get([Infinity]); |
| PASS getreq.result is "value10" |
| |
| testing array key: [1,2,3] |
| store.put('value11', [1,2,3]); |
| store.get([1,2,3]); |
| PASS getreq.result is "value11" |
| |
| testing array key: [new Date(0)] |
| store.put('value12', [new Date(0)]); |
| store.get([new Date(0)]); |
| PASS getreq.result is "value12" |
| |
| 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" |
| |
| 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" |
| |
| testing array key: [''] |
| store.put('value15', ['']); |
| store.get(['']); |
| PASS getreq.result is "value15" |
| |
| testing array key: [''] |
| store.put('value16', ['']); |
| store.get(['']); |
| PASS getreq.result is "value16" |
| |
| testing array key: ['abc123'] |
| store.put('value17', ['abc123']); |
| store.get(['abc123']); |
| PASS getreq.result is "value17" |
| |
| testing array key: ['abc', 123] |
| store.put('value18', ['abc', 123]); |
| store.get(['abc', 123]); |
| PASS getreq.result is "value18" |
| |
| testing array key: [[]] |
| store.put('value19', [[]]); |
| store.get([[]]); |
| PASS getreq.result is "value19" |
| |
| testing array key: [[], []] |
| store.put('value20', [[], []]); |
| store.get([[], []]); |
| PASS getreq.result is "value20" |
| |
| testing array key: [[], [], []] |
| store.put('value21', [[], [], []]); |
| store.get([[], [], []]); |
| PASS getreq.result is "value21" |
| |
| testing array key: [[[]]] |
| store.put('value22', [[[]]]); |
| store.get([[[]]]); |
| PASS getreq.result is "value22" |
| |
| testing array key: [[[[]]]] |
| store.put('value23', [[[[]]]]); |
| store.get([[[[]]]]); |
| PASS getreq.result is "value23" |
| |
| 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" |
| |
| 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" |
| |
| testing array key: long_array |
| store.put('value26', long_array); |
| store.get(long_array); |
| PASS getreq.result is "value26" |
| |
| testing array key: self_referrential_array |
| store.put('value27', self_referrential_array); |
| store.get(self_referrential_array); |
| PASS getreq.result is "value27" |
| |
| 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 |
| |