js-test 1.0.0-alpha.15

wasm bindgen js test utilities
Documentation
use wasm_bindgen::prelude::*;
use wasm_bindgen_test::wasm_bindgen_test;

#[wasm_bindgen(inline_js = r#"
function values_should_deep_equal() {
    let sym = Symbol("some_symbol");

    class MyObj {
        constructor(value) {
            this.value = value;
        }
    }

    return [
        [undefined, undefined],
        ["my-value", "my-value"],
        [Symbol.iterator, Symbol.iterator],
        [123456n, 123456n],
        [1, 1.0],
        [0, -0],
        [NaN, NaN],
        [true, true],
        [false, false],
        [true, true],
        [null, null],
        [{}, {}],
        [{ k: 1 }, { k: 1 }],
        [{ k: [1, { v: 2 }]}, { k: [1, { v: 2 }]}],
        [{ k: { v: [false] }}, { k: { v: [false] }}],
        [{ [sym]: 0 }, { [sym]: 0 }],
        [new MyObj({k:"v"}), new MyObj({k:"v"})],
        [[], []],
        [[false, "1", 2], [false, "1", 2]],
        [[{k:1},{k2:2}], [{k:1},{k2:2}]],
    ];
}
function values_should_not_deep_equal() {
    class MyObj {
        constructor(value) {
            this.value = value;
        }
    }

    return [
        [undefined, null],
        ["my-value", "my-another-value"],
        [Symbol("some_sym"), Symbol("some_sym")],
        [123456n, 123456],
        [1, 1.1],
        [0, NaN],
        [true, false],
        [null, {}],
        [0, []],
        [-0, false],
        [{}, Object.create(null)],
        [{ k: 1 }, { k: 2 }],
        [{ k: 1 }, { k2: 1 }],
        [{ k: 1 }, {}],
        [{ k: [1, { v: 2 }]}, { k: [1]}],
        [{ k: { v: [] }}, { k: { v: [undefined] }}],
        [{ [Symbol("some_symbol")]: 0 }, { [Symbol("some_symbol")]: 0 }],
        [new MyObj({k:"v"}), {k:"v"}],
    ];
}
module.exports = {
    values_should_deep_equal,
    values_should_not_deep_equal,
}
"#)]
extern "C" {
    fn values_should_deep_equal() -> Box<[js_sys::Array]>;
    fn values_should_not_deep_equal() -> Box<[js_sys::Array]>;
}

#[wasm_bindgen_test]
fn test_deep_equal() {
    use js_test::deep_equal;

    let tuples = values_should_deep_equal();

    for tuple in tuples.into_iter() {
        let v1 = tuple.get(0);
        let v2 = tuple.get(1);

        assert!(deep_equal(&v1, &v2));
    }
}

#[wasm_bindgen_test]
fn test_not_deep_equal() {
    use js_test::deep_equal;

    let tuples = values_should_not_deep_equal();

    for tuple in tuples.into_iter() {
        let v1 = tuple.get(0);
        let v2 = tuple.get(1);

        assert!(!deep_equal(&v1, &v2));
    }
}