diff options
Diffstat (limited to 'tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js')
-rw-r--r-- | tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js | 82 |
1 files changed, 68 insertions, 14 deletions
diff --git a/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js b/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js index ad4623c179d..448ab31348c 100644 --- a/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js +++ b/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js @@ -1,37 +1,91 @@ export function assertEqualDates(actual, expected, label) { + label = formatLabel(label); + assert_equals(expected.constructor, Date, - "assertEqualDates usage check: expected must be a Date"); + `${label}assertEqualDates usage check: expected must be a Date`); + + assert_equals(actual.constructor, Date, `${label}must be a Date`); + assert_equals(actual.valueOf(), expected.valueOf(), `${label}timestamps must match`); +} + +export function assertEqualPostKeyRoundtripping(actual, expected, label) { + label = formatLabel(label); + + // Please extend this to support other types as needed! + assert_true( + typeof expected === "number" || typeof expected === "string" || expected.constructor === Date, + `${label}assertEqualPostKeyRoundtripping usage check: currently only supports numbers, strings, and dates` + ); + + if (expected.constructor === Date) { + assert_equals(actual.constructor, Date, `${label}comparing to Date(${Number(expected)}) (actual = ${actual})`); + actual = Number(actual); + expected = Number(expected); + } - const labelPart = label === undefined ? "" : `${label}: `; - assert_equals(actual.constructor, Date, `${labelPart}must be a Date`); - assert_equals(actual.valueOf(), expected.valueOf(), `${labelPart}timestamps must match`); + assert_equals(actual, expected, label); } export function assertEqualArrayBuffers(actual, expected, label) { + label = formatLabel(label); + assert_equals(expected.constructor, ArrayBuffer, - "assertEqualArrayBuffers usage check: expected must be an ArrayBuffer"); + `${label}assertEqualArrayBuffers usage check: expected must be an ArrayBuffer`); - const labelPart = label === undefined ? "" : `${label}: `; - assert_equals(actual.constructor, ArrayBuffer, `${labelPart}must be an ArrayBuffer`); - assert_array_equals(new Uint8Array(actual), new Uint8Array(expected), `${labelPart}must match`); + assert_equals(actual.constructor, ArrayBuffer, `${label}must be an ArrayBuffer`); + assert_array_equals(new Uint8Array(actual), new Uint8Array(expected), `${label}must match`); } export function assertArrayBufferEqualsABView(actual, expected, label) { + label = formatLabel(label); + assert_true(ArrayBuffer.isView(expected), - "assertArrayBufferEqualsABView usage check: expected must be an ArrayBuffer view"); + `${label}assertArrayBufferEqualsABView usage check: expected must be an ArrayBuffer view`); assertEqualArrayBuffers(actual, expected.buffer, label); } +export function assertAsyncIteratorEquals(actual, expected, label) { + return assertAsyncIteratorCustomEquals(actual, expected, Object.is, label); +} + export function assertArrayCustomEquals(actual, expected, equalityAsserter, label) { + label = formatLabel(label); + assert_true(Array.isArray(expected), - "assertArrayCustomEquals usage check: expected must be an Array"); + `${label} assertArrayCustomEquals usage check: expected must be an Array`); - const labelPart = label === undefined ? "" : `${label}: `; - assert_true(Array.isArray(actual), `${labelPart}must be an array`); - assert_equals(actual.length, expected.length, `${labelPart}length must be as expected`); + assert_true(Array.isArray(actual), `${label}must be an array`); + assert_equals(actual.length, expected.length, `${label}length must be as expected`); for (let i = 0; i < actual.length; ++i) { - equalityAsserter(actual[i], expected[i], `${labelPart}index ${i}`); + equalityAsserter(actual[i], expected[i], `${label}index ${i}`); } } + +export async function assertAsyncIteratorCustomEquals(actual, expected, equalityAsserter, label) { + label = formatLabel(label); + + assert_true(Array.isArray(expected), + `${label} assertAsyncIteratorCustomEquals usage check: expected must be an Array`); + + const collected = await collectAsyncIterator(actual); + assert_equals(collected.length, expected.length, `${label}length must be as expected`); + + for (let i = 0; i < collected.length; ++i) { + equalityAsserter(collected[i], expected[i], `${label}index ${i}`); + } +} + +async function collectAsyncIterator(asyncIterator) { + const array = []; + for await (const entry of asyncIterator) { + array.push(entry); + } + + return array; +} + +function formatLabel(label) { + return label !== undefined ? `${label} ` : ""; +} |