Test IndexedDB's KeyRange. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS 'lower' in IDBKeyRange is false PASS 'upper' in IDBKeyRange is false PASS 'lowerOpen' in IDBKeyRange is false PASS 'upperOpen' in IDBKeyRange is false PASS 'only' in IDBKeyRange is true PASS 'lowerBound' in IDBKeyRange is true PASS 'upperBound' in IDBKeyRange is true PASS 'bound' in IDBKeyRange is true instance = IDBKeyRange.only(1) PASS 'lower' in instance is true PASS 'upper' in instance is true PASS 'lowerOpen' in instance is true PASS 'upperOpen' in instance is true PASS 'only' in instance is false PASS 'lowerBound' in instance is false PASS 'upperBound' in instance is false PASS 'bound' in instance is false IDBKeyRange.only(1) PASS keyRange.lower is 1 PASS keyRange.upper is 1 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.only(3.14) PASS keyRange.lower is 3.14 PASS keyRange.upper is 3.14 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.only('a') PASS keyRange.lower is 'a' PASS keyRange.upper is 'a' PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.lowerBound(10,true) PASS keyRange.lower is 10 PASS keyRange.lowerOpen is true PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound(11,false) PASS keyRange.lower is 11 PASS keyRange.lowerOpen is false PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound(12,undefined) PASS keyRange.lower is 12 PASS keyRange.lowerOpen is false PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound(10.1,true) PASS keyRange.lower is 10.1 PASS keyRange.lowerOpen is true PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound(11.2,false) PASS keyRange.lower is 11.2 PASS keyRange.lowerOpen is false PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound(12.3,undefined) PASS keyRange.lower is 12.3 PASS keyRange.lowerOpen is false PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound('aa',true) PASS keyRange.lower is 'aa' PASS keyRange.lowerOpen is true PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound('ab',false) PASS keyRange.lower is 'ab' PASS keyRange.lowerOpen is false PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.lowerBound('ac',undefined) PASS keyRange.lower is 'ac' PASS keyRange.lowerOpen is false PASS keyRange.upper is undefined. PASS keyRange.upperOpen is true IDBKeyRange.upperBound(20,true) PASS keyRange.upper is 20 PASS keyRange.upperOpen is true PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound(21,false) PASS keyRange.upper is 21 PASS keyRange.upperOpen is false PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound(22,undefined) PASS keyRange.upper is 22 PASS keyRange.upperOpen is false PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound(20.2,true) PASS keyRange.upper is 20.2 PASS keyRange.upperOpen is true PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound(21.3,false) PASS keyRange.upper is 21.3 PASS keyRange.upperOpen is false PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound(22.4,undefined) PASS keyRange.upper is 22.4 PASS keyRange.upperOpen is false PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound('ba',true) PASS keyRange.upper is 'ba' PASS keyRange.upperOpen is true PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound('bb',false) PASS keyRange.upper is 'bb' PASS keyRange.upperOpen is false PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.upperBound('bc',undefined) PASS keyRange.upper is 'bc' PASS keyRange.upperOpen is false PASS keyRange.lower is undefined. PASS keyRange.lowerOpen is true IDBKeyRange.bound(30,40, undefined, undefined) PASS keyRange.lower is 30 PASS keyRange.upper is 40 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound(31,41, false, false) PASS keyRange.lower is 31 PASS keyRange.upper is 41 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound(32,42, false, true) PASS keyRange.lower is 32 PASS keyRange.upper is 42 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is true IDBKeyRange.bound(33,43, true, false) PASS keyRange.lower is 33 PASS keyRange.upper is 43 PASS keyRange.lowerOpen is true PASS keyRange.upperOpen is false IDBKeyRange.bound(34,44, true, true) PASS keyRange.lower is 34 PASS keyRange.upper is 44 PASS keyRange.lowerOpen is true PASS keyRange.upperOpen is true IDBKeyRange.bound(30.1,40.2, undefined, undefined) PASS keyRange.lower is 30.1 PASS keyRange.upper is 40.2 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound(31.3,41.4, false, false) PASS keyRange.lower is 31.3 PASS keyRange.upper is 41.4 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound(32.5,42.6, false, true) PASS keyRange.lower is 32.5 PASS keyRange.upper is 42.6 PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is true IDBKeyRange.bound(33.7,43.8, true, false) PASS keyRange.lower is 33.7 PASS keyRange.upper is 43.8 PASS keyRange.lowerOpen is true PASS keyRange.upperOpen is false IDBKeyRange.bound(34.9,44, true, true) PASS keyRange.lower is 34.9 PASS keyRange.upper is 44 PASS keyRange.lowerOpen is true PASS keyRange.upperOpen is true IDBKeyRange.bound('aaa','aba', false, false) PASS keyRange.lower is 'aaa' PASS keyRange.upper is 'aba' PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound('aab','abb', undefined, undefined) PASS keyRange.lower is 'aab' PASS keyRange.upper is 'abb' PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound('aac','abc', false, false) PASS keyRange.lower is 'aac' PASS keyRange.upper is 'abc' PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is false IDBKeyRange.bound('aad','abd', false, true) PASS keyRange.lower is 'aad' PASS keyRange.upper is 'abd' PASS keyRange.lowerOpen is false PASS keyRange.upperOpen is true IDBKeyRange.bound('aae','abe', true, false) PASS keyRange.lower is 'aae' PASS keyRange.upper is 'abe' PASS keyRange.lowerOpen is true PASS keyRange.upperOpen is false IDBKeyRange.bound('aaf','abf', true, true) PASS keyRange.lower is 'aaf' PASS keyRange.upper is 'abf' PASS keyRange.lowerOpen is true PASS keyRange.upperOpen is true Passing an invalid key into only({}) Expecting exception from IDBKeyRange.only({}) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'only' on 'IDBKeyRange': The parameter is not a valid key. Passing an invalid key into upperBound({}) Expecting exception from IDBKeyRange.upperBound({}) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'upperBound' on 'IDBKeyRange': The parameter is not a valid key. Passing an invalid key into lowerBound({}) Expecting exception from IDBKeyRange.lowerBound({}) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'lowerBound' on 'IDBKeyRange': The parameter is not a valid key. Passing an invalid key into bound(null, {}) Expecting exception from IDBKeyRange.bound(null, {}) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The parameter is not a valid key. Passing an invalid key into bound({},null) Expecting exception from IDBKeyRange.bound({}, null) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The parameter is not a valid key. Passing an invalid key into bound({}, {}) Expecting exception from IDBKeyRange.bound({}, {}) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The parameter is not a valid key. Lower key greater than higher key, bound(4, 3) Expecting exception from IDBKeyRange.bound(4, 3) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key is greater than the upper key. Equal keys, either of the bounds is open, bound(4, 4, true, false) Expecting exception from IDBKeyRange.bound(4, 4, true, false) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key and upper key are equal and one of the bounds is open. Equal keys, either of the bounds is open, bound(4, 4, false, true) Expecting exception from IDBKeyRange.bound(4, 4, false, true) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key and upper key are equal and one of the bounds is open. Equal keys, either of the bounds is open, bound(4, 4, true, true) Expecting exception from IDBKeyRange.bound(4, 4, true, true) PASS Exception was thrown. PASS code is 0 PASS ename is 'DataError' Exception message: Failed to execute 'bound' on 'IDBKeyRange': The lower key and upper key are equal and one of the bounds is open. Equal keys, none of the bounds is open, bound(4, 4, false, false) PASS successfullyParsed is true TEST COMPLETE