99 lines
3 KiB
JavaScript
99 lines
3 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBFactory.cmp()
|
|
// META: script=resources/support-promises.js
|
|
|
|
// Spec: https://w3c.github.io/IndexedDB/#dom-idbfactory-cmp
|
|
// Spec: http://w3c.github.io/IndexedDB/#key-construct
|
|
|
|
'use strict';
|
|
|
|
// Test cmp() with valid keys. These tests verify that cmp() returns the correct
|
|
// comparison value.
|
|
test(function() {
|
|
let greater = indexedDB.cmp(2, 1);
|
|
let equal = indexedDB.cmp(2, 2);
|
|
let less = indexedDB.cmp(1, 2);
|
|
|
|
assert_equals(greater, 1, 'greater');
|
|
assert_equals(equal, 0, 'equal');
|
|
assert_equals(less, -1, 'less');
|
|
}, 'IDBFactory.cmp() - compared keys return correct value');
|
|
|
|
// Test cmp() with invalid keys. These tests verify that cmp() throws an
|
|
// exception when given invalid input.
|
|
test(function() {
|
|
assert_throws_js(TypeError, function() {
|
|
indexedDB.cmp();
|
|
});
|
|
}, 'IDBFactory.cmp() - no argument');
|
|
|
|
test(function() {
|
|
assert_throws_dom('DataError', function() {
|
|
indexedDB.cmp(null, null);
|
|
});
|
|
assert_throws_dom('DataError', function() {
|
|
indexedDB.cmp(1, null);
|
|
});
|
|
assert_throws_dom('DataError', function() {
|
|
indexedDB.cmp(null, 1);
|
|
});
|
|
}, 'IDBFactory.cmp() - null');
|
|
|
|
test(function() {
|
|
assert_throws_dom('DataError', function() {
|
|
indexedDB.cmp(NaN, NaN);
|
|
});
|
|
assert_throws_dom('DataError', function() {
|
|
indexedDB.cmp(1, NaN);
|
|
});
|
|
assert_throws_dom('DataError', function() {
|
|
indexedDB.cmp(NaN, 1);
|
|
});
|
|
}, 'IDBFactory.cmp() - NaN');
|
|
|
|
// Test cmp() with keys of different types. These tests verify that cmp()
|
|
// correctly compares keys of different types.
|
|
test(function() {
|
|
assert_equals(indexedDB.cmp([0], new Uint8Array([0])), 1, 'Array > Binary');
|
|
}, 'Array vs. Binary');
|
|
|
|
test(function() {
|
|
assert_equals(indexedDB.cmp(new Uint8Array([0]), '0'), 1, 'Binary > String');
|
|
}, 'Binary vs. String');
|
|
|
|
test(function() {
|
|
assert_equals(indexedDB.cmp('', new Date(0)), 1, 'String > Date');
|
|
}, 'String vs. Date');
|
|
|
|
test(function() {
|
|
assert_equals(indexedDB.cmp(new Date(0), 0), 1, 'Date > Number');
|
|
}, 'Date vs. Number');
|
|
|
|
// Test cmp() with binary keys. These tests verify that cmp() correctly compares
|
|
// binary keys.
|
|
test(function() {
|
|
assert_equals(
|
|
indexedDB.cmp(new Int8Array([-1]), new Uint8Array([0])), 1,
|
|
'255(-1) shall be larger than 0');
|
|
}, 'Compare in unsigned octet values (in the range [0, 255])');
|
|
|
|
test(function() {
|
|
assert_equals(
|
|
indexedDB.cmp(
|
|
new Uint8Array([255, 254, 253]), new Uint8Array([255, 253, 254])),
|
|
1, '[255, 254, 253] shall be larger than [255, 253, 254]');
|
|
}, 'Compare values of the same length');
|
|
|
|
test(function() {
|
|
assert_equals(
|
|
indexedDB.cmp(
|
|
new Uint8Array([255, 254]), new Uint8Array([255, 253, 254])),
|
|
1, '[255, 254] shall be larger than [255, 253, 254]');
|
|
}, 'Compare values of different lengths');
|
|
|
|
test(function() {
|
|
assert_equals(
|
|
indexedDB.cmp(
|
|
new Uint8Array([255, 253, 254]), new Uint8Array([255, 253])),
|
|
1, '[255, 253, 254] shall be larger than [255, 253]');
|
|
}, 'Compare when values in the range of their minimal length are the same');
|