Path: blob/main/crates/c-api/tests/component/lookup_func.cc
1692 views
#include "utils.h"12#include <gtest/gtest.h>3#include <wasmtime.h>45TEST(component, lookup_func) {6static constexpr auto component_text = std::string_view{7R"END(8(component9(core module $m10(func (export "f"))11)12(core instance $i (instantiate $m))13(func (export "f")14(canon lift (core func $i "f")))15)16)END",17};18const auto engine = wasm_engine_new();19EXPECT_NE(engine, nullptr);2021const auto store = wasmtime_store_new(engine, nullptr, nullptr);22const auto context = wasmtime_store_context(store);2324wasmtime_component_t *component = nullptr;2526auto err = wasmtime_component_new(27engine, reinterpret_cast<const uint8_t *>(component_text.data()),28component_text.size(), &component);2930CHECK_ERR(err);3132auto f = wasmtime_component_get_export_index(component, nullptr, "ff",33strlen("ff"));3435EXPECT_EQ(f, nullptr);3637f = wasmtime_component_get_export_index(component, nullptr, "f", strlen("f"));3839EXPECT_NE(f, nullptr);4041const auto linker = wasmtime_component_linker_new(engine);4243wasmtime_component_instance_t instance = {};44err = wasmtime_component_linker_instantiate(linker, context, component,45&instance);46CHECK_ERR(err);4748wasmtime_component_func_t func = {};49const auto found =50wasmtime_component_instance_get_func(&instance, context, f, &func);51EXPECT_TRUE(found);52EXPECT_NE(func.store_id, 0);5354wasmtime_component_export_index_delete(f);5556f = wasmtime_component_instance_get_export_index(&instance, context, nullptr,57"f", strlen("f"));58EXPECT_NE(f, nullptr);5960wasmtime_component_export_index_delete(f);61wasmtime_component_linker_delete(linker);6263wasmtime_store_delete(store);64wasm_engine_delete(engine);65}666768