// META: title=IDBKeyRange Tests - Incorrect // META: global=window,worker // META: script=resources/support.js // Spec: https://w3c.github.io/IndexedDB/#keyrange 'use strict'; // TypeError: bound requires more than 0 arguments test(() => { assert_throws_js(TypeError, () => { IDBKeyRange.bound(); }); }, 'IDBKeyRange.bound() - bound requires more than 0 arguments.'); // Null parameters test(() => { assert_throws_dom('DataError', () => { IDBKeyRange.bound(null, null); }); }, 'IDBKeyRange.bound(null, null) - null parameters are incorrect.'); // Null parameter test(() => { assert_throws_dom('DataError', () => { IDBKeyRange.bound(1, null); }); assert_throws_dom('DataError', () => { IDBKeyRange.bound(null, 1); }); }, 'IDBKeyRange.bound(1, null / null, 1) - null parameter is incorrect.'); // bound incorrect test(() => { const lowerBad = Math.floor(Math.random() * 31) + 5; const upper = lowerBad - 1; assert_throws_dom('DataError', () => { IDBKeyRange.bound(lowerBad, upper); }); assert_throws_dom('DataError', () => { IDBKeyRange.bound('b', 'a'); }); }, "IDBKeyRange.bound(lower, upper / lower > upper) - lower' is greater than 'upper'."); test(() => { assert_throws_dom('DataError', () => { IDBKeyRange.bound('a', 1); }); assert_throws_dom('DataError', () => { IDBKeyRange.bound(new Date(), 1); }); assert_throws_dom('DataError', () => { IDBKeyRange.bound([1, 2], 1); }); }, "IDBKeyRange.bound(DOMString/Date/Array, 1) - A DOMString, Date and Array are greater than a float."); // ReferenceError: the variable is not defined test(() => { const goodVariable = 1; assert_throws_js(ReferenceError, () => { IDBKeyRange.bound(noExistingVariable, 1); }); assert_throws_js( ReferenceError, () => { IDBKeyRange.bound(goodVariable, noExistingVariable); }); }, 'IDBKeyRange.bound(noExistingVariable, 1 / goodVariable, noExistingVariable) -\ noExistingVariable is not defined.'); // Valid type key error test(() => { assert_throws_dom('DataError', () => { IDBKeyRange.bound(true, 1); }); }, 'IDBKeyRange.bound(true, 1) - boolean is not a valid key type.');