Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/c-api/tests/instance.cc
3068 views
1
#include <gtest/gtest.h>
2
#include <wasmtime/instance.hh>
3
4
using namespace wasmtime;
5
6
TEST(Instance, Smoke) {
7
Engine engine;
8
Store store(engine);
9
Memory m = Memory::create(store, MemoryType(1)).unwrap();
10
Global g = Global::create(store, GlobalType(ValKind::I32, false), 1).unwrap();
11
Table t = Table::create(store, TableType(ValKind::FuncRef, 1),
12
std::optional<Func>())
13
.unwrap();
14
Func f(store, FuncType({}, {}),
15
[](auto caller, auto params, auto results) -> auto {
16
return std::monostate();
17
});
18
19
Module mod =
20
Module::compile(engine, "(module"
21
"(import \"\" \"\" (func))"
22
"(import \"\" \"\" (global i32))"
23
"(import \"\" \"\" (table 1 funcref))"
24
"(import \"\" \"\" (memory 1))"
25
26
"(func (export \"f\"))"
27
"(global (export \"g\") i32 (i32.const 0))"
28
"(export \"m\" (memory 0))"
29
"(export \"t\" (table 0))"
30
")")
31
.unwrap();
32
Instance::create(store, mod, {}).err();
33
Instance i = Instance::create(store, mod, {f, g, t, m}).unwrap();
34
EXPECT_FALSE(i.get(store, "not-present"));
35
f = std::get<Func>(*i.get(store, "f"));
36
m = std::get<Memory>(*i.get(store, "m"));
37
t = std::get<Table>(*i.get(store, "t"));
38
g = std::get<Global>(*i.get(store, "g"));
39
40
EXPECT_TRUE(i.get(store, 0));
41
EXPECT_TRUE(i.get(store, 1));
42
EXPECT_TRUE(i.get(store, 2));
43
EXPECT_TRUE(i.get(store, 3));
44
EXPECT_FALSE(i.get(store, 4));
45
auto [name, func] = *i.get(store, 0);
46
EXPECT_EQ(name, "f");
47
}
48
49