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