mirror of
https://github.com/servo/servo.git
synced 2025-07-11 17:33:47 +01:00
91 lines
3.1 KiB
JavaScript
91 lines
3.1 KiB
JavaScript
export function assertEqualDates(actual, expected, label) {
|
|
label = formatLabel(label);
|
|
|
|
assert_equals(expected.constructor, 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);
|
|
}
|
|
|
|
assert_equals(actual, expected, label);
|
|
}
|
|
|
|
export function assertEqualArrayBuffers(actual, expected, label) {
|
|
label = formatLabel(label);
|
|
|
|
assert_equals(expected.constructor, ArrayBuffer,
|
|
`${label}assertEqualArrayBuffers usage check: expected must be an ArrayBuffer`);
|
|
|
|
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),
|
|
`${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),
|
|
`${label} assertArrayCustomEquals usage check: expected must be an Array`);
|
|
|
|
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], `${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} ` : "";
|
|
}
|