https://github.com/web-platform-tests/wpt
Tip revision: a99112edef5480c5a92159a8bf772af8ef00fc85 authored by Lennart Grahl on 24 May 2018, 22:01:25 UTC
fixup! fixup! Add an ugly workaround for createDataChannelPair to make it work in Safari
fixup! fixup! Add an ugly workaround for createDataChannelPair to make it work in Safari
Tip revision: a99112e
idbkeyrange-includes.htm
<!doctype html>
<meta charset=utf-8>
<title>IndexedDB: IDBKeyRange.includes()</title>
<meta name="help" href="https://w3c.github.io/IndexedDB/#keyrange">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
test(function() {
var range = IDBKeyRange.bound(12, 34);
assert_throws(new TypeError, function() { range.includes(); },
'throws if key is not specified');
assert_throws('DataError', function() { range.includes(undefined); },
'throws if key is undefined');
assert_throws('DataError', function() { range.includes(null); },
'throws if key is null');
assert_throws('DataError', function() { range.includes({}); },
'throws if key is not valid type');
assert_throws('DataError', function() { range.includes(NaN); },
'throws if key is not valid number');
assert_throws('DataError', function() { range.includes(new Date(NaN)); },
'throws if key is not valid date');
assert_throws('DataError', function() {
var a = []; a[0] = a; range.includes(a);
}, 'throws if key is not valid array');
}, "IDBKeyRange.includes() with invalid input");
test(function() {
var closedRange = IDBKeyRange.bound(5, 20);
assert_true(!!closedRange.includes, "IDBKeyRange has a .includes");
assert_true(closedRange.includes(7), "in range");
assert_false(closedRange.includes(1), "below range");
assert_false(closedRange.includes(42), "above range");
assert_true(closedRange.includes(5.01), "at the lower end of the range");
assert_true(closedRange.includes(19.99), "at the upper end of the range");
assert_false(closedRange.includes(4.99), "right below range");
assert_false(closedRange.includes(21.01), "right above range");
assert_true(closedRange.includes(5), "lower boundary");
assert_true(closedRange.includes(20), "upper boundary");
}, "IDBKeyRange.includes() with a closed range");
test(function() {
var closedRange = IDBKeyRange.bound(5, 20, true, true);
assert_true(closedRange.includes(7), "in range");
assert_false(closedRange.includes(1), "below range");
assert_false(closedRange.includes(42), "above range");
assert_true(closedRange.includes(5.01), "at the lower end of the range");
assert_true(closedRange.includes(19.99), "at the upper end of the range");
assert_false(closedRange.includes(4.99), "right below range");
assert_false(closedRange.includes(21.01), "right above range");
assert_false(closedRange.includes(5), "lower boundary");
assert_false(closedRange.includes(20), "upper boundary");
}, "IDBKeyRange.includes() with an open range");
test(function() {
var range = IDBKeyRange.bound(5, 20, true);
assert_true(range.includes(7), "in range");
assert_false(range.includes(1), "below range");
assert_false(range.includes(42), "above range");
assert_true(range.includes(5.01), "at the lower end of the range");
assert_true(range.includes(19.99), "at the upper end of the range");
assert_false(range.includes(4.99), "right below range");
assert_false(range.includes(21.01), "right above range");
assert_false(range.includes(5), "lower boundary");
assert_true(range.includes(20), "upper boundary");
}, "IDBKeyRange.includes() with a lower-open upper-closed range");
test(function() {
var range = IDBKeyRange.bound(5, 20, false, true);
assert_true(range.includes(7), "in range");
assert_false(range.includes(1), "below range");
assert_false(range.includes(42), "above range");
assert_true(range.includes(5.01), "at the lower end of the range");
assert_true(range.includes(19.99), "at the upper end of the range");
assert_false(range.includes(4.99), "right below range");
assert_false(range.includes(21.01), "right above range");
assert_true(range.includes(5), "lower boundary");
assert_false(range.includes(20), "upper boundary");
}, "IDBKeyRange.includes() with a lower-closed upper-open range");
test(function() {
var onlyRange = IDBKeyRange.only(42);
assert_true(onlyRange.includes(42), "in range");
assert_false(onlyRange.includes(1), "below range");
assert_false(onlyRange.includes(9000), "above range");
assert_false(onlyRange.includes(41), "right below range");
assert_false(onlyRange.includes(43), "right above range");
}, "IDBKeyRange.includes() with an only range");
test(function() {
var range = IDBKeyRange.lowerBound(5);
assert_false(range.includes(4), 'value before closed lower bound');
assert_true(range.includes(5), 'value at closed lower bound');
assert_true(range.includes(6), 'value after closed lower bound');
assert_true(range.includes(42), 'value way after open lower bound');
}, "IDBKeyRange.includes() with an closed lower-bounded range");
test(function() {
var range = IDBKeyRange.lowerBound(5, true);
assert_false(range.includes(4), 'value before open lower bound');
assert_false(range.includes(5), 'value at open lower bound');
assert_true(range.includes(6), 'value after open lower bound');
assert_true(range.includes(42), 'value way after open lower bound');
}, "IDBKeyRange.includes() with an open lower-bounded range");
test(function() {
var range = IDBKeyRange.upperBound(5);
assert_true(range.includes(-42), 'value way before closed upper bound');
assert_true(range.includes(4), 'value before closed upper bound');
assert_true(range.includes(5), 'value at closed upper bound');
assert_false(range.includes(6), 'value after closed upper bound');
}, "IDBKeyRange.includes() with an closed upper-bounded range");
test(function() {
var range = IDBKeyRange.upperBound(5, true);
assert_true(range.includes(-42), 'value way before closed upper bound');
assert_true(range.includes(4), 'value before open upper bound');
assert_false(range.includes(5), 'value at open upper bound');
assert_false(range.includes(6), 'value after open upper bound');
}, "IDBKeyRange.includes() with an open upper-bounded range");
test(function(t) {
assert_true(IDBKeyRange.bound(new Date(0), new Date())
.includes(new Date(102729600000)));
assert_false(IDBKeyRange.bound(new Date(0), new Date(1e11))
.includes(new Date(1e11 + 1)));
assert_true(IDBKeyRange.bound('a', 'c').includes('b'));
assert_false(IDBKeyRange.bound('a', 'c').includes('d'));
assert_true(IDBKeyRange.bound([], [[], []]).includes([[]]));
assert_false(IDBKeyRange.bound([], [[]]).includes([[[]]]));
}, 'IDBKeyRange.includes() with non-numeric keys');
</script>