wit-bindgen-cli 0.57.1

CLI tool to generate bindings for WIT documents and the component model.
#include <assert.h>
#include <runner_cpp.h>

template <class T>
bool equal(T const&a, T const&b) {
    return a==b;
}

void exports::runner::Run()
{
    using namespace ::test::records::to_test;

    assert(equal(MultipleResults(), std::tuple<uint8_t, uint16_t>(4, 5)));

    assert(equal(SwapTuple(std::tuple<uint8_t, uint32_t>(1, 2)), std::tuple<uint32_t, uint8_t>(2, 1)));
    assert(equal(RoundtripFlags1(::test::records::to_test::F1::kA), ::test::records::to_test::F1::kA));
    assert(equal(RoundtripFlags1(::test::records::to_test::F1::k_None), ::test::records::to_test::F1::k_None));
    assert(equal(RoundtripFlags1(::test::records::to_test::F1::kB), ::test::records::to_test::F1::kB));
    assert(equal(RoundtripFlags1(::test::records::to_test::F1::kA | ::test::records::to_test::F1::kB), ::test::records::to_test::F1::kA | ::test::records::to_test::F1::kB));

    assert(equal(RoundtripFlags2(::test::records::to_test::F2::kC), ::test::records::to_test::F2::kC));
    assert(equal(RoundtripFlags2(::test::records::to_test::F2::k_None), ::test::records::to_test::F2::k_None));
    assert(equal(RoundtripFlags2(::test::records::to_test::F2::kD), ::test::records::to_test::F2::kD));
    assert(equal(RoundtripFlags2(::test::records::to_test::F2::kC | ::test::records::to_test::F2::kE), ::test::records::to_test::F2::kC | ::test::records::to_test::F2::kE));

    assert(equal(
        RoundtripFlags3(::test::records::to_test::Flag8::kB0, ::test::records::to_test::Flag16::kB1, ::test::records::to_test::Flag32::kB2),
        std::tuple<::test::records::to_test::Flag8, ::test::records::to_test::Flag16, ::test::records::to_test::Flag32>(::test::records::to_test::Flag8::kB0, ::test::records::to_test::Flag16::kB1, ::test::records::to_test::Flag32::kB2)
    ));

    {
        auto r = RoundtripRecord1(::test::records::to_test::R1 {
            8,
            ::test::records::to_test::F1::k_None,
        });
        assert(equal(r.a, (uint8_t)8));
        assert(equal(r.b, ::test::records::to_test::F1::k_None));
    }

    auto r = RoundtripRecord1(::test::records::to_test::R1 {
        0,
        ::test::records::to_test::F1::kA | ::test::records::to_test::F1::kB,
    });
    assert(equal(r.a, (uint8_t)0));
    assert(equal(r.b, ::test::records::to_test::F1::kA | ::test::records::to_test::F1::kB));

    assert(equal(Tuple1(std::tuple<uint8_t>(1)), std::tuple<uint8_t>(1)));
}