318 lines
10 KiB
Plaintext
318 lines
10 KiB
Plaintext
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
|
|
|