Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/c-api/tests/instance.cc
1692 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