aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js
diff options
context:
space:
mode:
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.js82
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} ` : "";
+}