74a8af6ca6
We add a script for running the js tests in `scripts/ci/js_tests`. This script can also be run locally. We move the `automerge-js` package to below the `automerge-wasm` crate as it is specifically testing the wasm interface. We also add an action to the github actions workflow for CI to run the js tests.
32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
const assert = require('assert')
|
|
const { Encoder } = require('../src/encoding')
|
|
|
|
// Assertion that succeeds if the first argument deepStrictEquals at least one of the
|
|
// subsequent arguments (but we don't care which one)
|
|
function assertEqualsOneOf(actual, ...expected) {
|
|
assert(expected.length > 0)
|
|
for (let i = 0; i < expected.length; i++) {
|
|
try {
|
|
assert.deepStrictEqual(actual, expected[i])
|
|
return // if we get here without an exception, that means success
|
|
} catch (e) {
|
|
if (!e.name.match(/^AssertionError/) || i === expected.length - 1) throw e
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Asserts that the byte array maintained by `encoder` contains the same byte
|
|
* sequence as the array `bytes`.
|
|
*/
|
|
function checkEncoded(encoder, bytes, detail) {
|
|
const encoded = (encoder instanceof Encoder) ? encoder.buffer : encoder
|
|
const expected = new Uint8Array(bytes)
|
|
const message = (detail ? `${detail}: ` : '') + `${encoded} expected to equal ${expected}`
|
|
assert(encoded.byteLength === expected.byteLength, message)
|
|
for (let i = 0; i < encoded.byteLength; i++) {
|
|
assert(encoded[i] === expected[i], message)
|
|
}
|
|
}
|
|
|
|
module.exports = { assertEqualsOneOf, checkEncoded }
|