Files
simple-rust-tests/__wasm/wit-bindgen-sample/wit-bindgen/tests/runtime/handles/wasm.c

224 lines
5.9 KiB
C

#include <assert.h>
#include <exports.h>
#include <imports.h>
#include <stdlib.h>
#include <string.h>
void exports_test_imports() {
imports_host_state_t s = imports_host_state_create();
assert(imports_host_state_get(s) == 100);
imports_host_state_free(&s);
assert(imports_host_state2_saw_close() == false);
imports_host_state2_t s2 = imports_host_state2_create();
assert(imports_host_state2_saw_close() == false);
imports_host_state2_free(&s2);
assert(imports_host_state2_saw_close() == true);
{
imports_host_state_t a, b;
imports_host_state2_t c, d;
a = imports_host_state_create();
c = imports_host_state2_create();
imports_two_host_states(a, c, &b, &d);
imports_host_state_free(&a);
imports_host_state_free(&b);
imports_host_state2_free(&c);
{
imports_host_state_param_record_t a;
a.a = d;
imports_host_state2_param_record(&a);
}
{
imports_host_state_param_tuple_t a;
a.f0 = d;
imports_host_state2_param_tuple(&a);
}
{
imports_host_state_param_option_t a;
a.is_some = true;
a.val = d;
imports_host_state2_param_option(&a);
}
{
imports_host_state_param_result_t a;
a.is_err = false;
a.val.ok = d;
imports_host_state2_param_result(&a);
a.is_err = true;
a.val.err = 2;
imports_host_state2_param_result(&a);
}
{
imports_host_state_param_variant_t a;
a.tag = 0;
a.val.f0 = d;
imports_host_state2_param_variant(&a);
a.tag = 1;
a.val.f1 = 2;
imports_host_state2_param_variant(&a);
}
{
imports_host_state2_t arr[2];
arr[0] = d;
arr[1] = d;
imports_list_host_state2_t list;
list.len = 0;
list.ptr = arr;
imports_host_state2_param_list(&list);
list.len = 1;
imports_host_state2_param_list(&list);
list.len = 2;
imports_host_state2_param_list(&list);
}
imports_host_state2_free(&d);
}
{
imports_host_state_result_record_t a;
imports_host_state2_result_record(&a);
imports_host_state2_free(&a.a);
}
{
imports_host_state2_t a;
imports_host_state2_result_tuple(&a);
imports_host_state2_free(&a);
}
{
imports_host_state2_t a;
assert(imports_host_state2_result_option(&a));
imports_host_state2_free(&a);
}
{
imports_host_state_result_result_t a;
imports_host_state2_result_result(&a);
assert(!a.is_err);
imports_host_state2_free(&a.val.ok);
}
{
imports_host_state_result_variant_t a;
imports_host_state2_result_variant(&a);
assert(a.tag == 0);
imports_host_state2_free(&a.val.f0);
}
{
imports_list_host_state2_t a;
imports_host_state2_result_list(&a);
imports_list_host_state2_free(&a);
}
{
imports_markdown2_t a = imports_markdown2_create();
imports_string_t s;
imports_string_set(&s, "red is the best color");
imports_markdown2_append(a, &s);
imports_markdown2_render(a, &s);
const char *expected = "green is the best color";
assert(s.len == strlen(expected));
assert(memcmp(s.ptr, expected, s.len) == 0);
imports_string_free(&s);
imports_markdown2_free(&a);
}
}
exports_wasm_state_t exports_wasm_state_create(void) {
return exports_wasm_state_new((void*) 100);
}
uint32_t exports_wasm_state_get_val(exports_wasm_state_t a) {
uint32_t ret = (uint32_t) exports_wasm_state_get(&a);
exports_wasm_state_free(&a);
return ret;
}
exports_wasm_state2_t exports_wasm_state2_create(void) {
return exports_wasm_state2_new((void*) 33);
}
static bool WASM_STATE2_CLOSED = false;
bool exports_wasm_state2_saw_close(void) {
return WASM_STATE2_CLOSED;
}
void exports_wasm_state2_dtor(void *data) {
WASM_STATE2_CLOSED = true;
}
void exports_two_wasm_states(exports_wasm_state_t a, exports_wasm_state2_t b, exports_wasm_state_t *ret0, exports_wasm_state2_t *ret1) {
exports_wasm_state_free(&a);
exports_wasm_state2_free(&b);
*ret0 = exports_wasm_state_new((void*) 101);
*ret1 = exports_wasm_state2_new((void*) 102);
}
void exports_wasm_state2_param_record(exports_wasm_state_param_record_t *a) {
exports_wasm_state_param_record_free(a);
}
void exports_wasm_state2_param_tuple(exports_wasm_state_param_tuple_t *a) {
exports_wasm_state_param_tuple_free(a);
}
void exports_wasm_state2_param_option(exports_wasm_state_param_option_t *a) {
exports_wasm_state_param_option_free(a);
}
void exports_wasm_state2_param_result(exports_wasm_state_param_result_t *a) {
exports_wasm_state_param_result_free(a);
}
void exports_wasm_state2_param_variant(exports_wasm_state_param_variant_t *a) {
exports_wasm_state_param_variant_free(a);
}
void exports_wasm_state2_param_list(exports_list_wasm_state2_t *a) {
exports_list_wasm_state2_free(a);
}
void exports_wasm_state2_result_record(exports_wasm_state_result_record_t *ret0) {
ret0->a = exports_wasm_state2_new((void*) 222);
}
void exports_wasm_state2_result_tuple(exports_wasm_state2_t *ret0) {
*ret0 = exports_wasm_state2_new((void*) 333);
}
bool exports_wasm_state2_result_option(exports_wasm_state2_t *ret0) {
*ret0 = exports_wasm_state2_new((void*) 444);
return true;
}
void exports_wasm_state2_result_result(exports_wasm_state_result_result_t *ret0) {
ret0->is_err = false;
ret0->val.ok = exports_wasm_state2_new((void*) 555);
}
void exports_wasm_state2_result_variant(exports_wasm_state_result_variant_t *ret0) {
ret0->tag = 0;
ret0->val.f0 = exports_wasm_state2_new((void*) 666);
}
void exports_wasm_state2_result_list(exports_list_wasm_state2_t *ret0) {
ret0->len = 2;
ret0->ptr = malloc(2 * sizeof(exports_wasm_state2_t));
ret0->ptr[0] = exports_wasm_state2_new((void*) 777);
ret0->ptr[1] = exports_wasm_state2_new((void*) 888);
}
bool exports_markdown_create(exports_markdown_t *md) {
return false;
}
void exports_markdown_append(exports_markdown_t md, exports_string_t *s) {
abort();
}
void exports_markdown_render(exports_markdown_t md, exports_string_t *ret) {
abort();
}