MCPcopy Create free account
hub / github.com/WasmEdge/WasmEdge / TEST_P

Function TEST_P

test/api/APIVMCoreTest.cpp:41–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39class CoreTest : public testing::TestWithParam<std::string> {};
40
41TEST_P(CoreTest, TestSuites) {
42 const auto [Proposal, Conf, UnitName] = T.resolve(GetParam());
43 const auto &ConfRef = Conf;
44
45 // Define context structure for C API
46 struct TestContext {
47 WasmEdge_VMContext *VM;
48 WasmEdge_ModuleInstanceContext *TestModCxt;
49 TestContext(const WasmEdge::Configure &C) {
50 WasmEdge_ConfigureContext *ConfCxt = createConf(C);
51 VM = WasmEdge_VMCreate(ConfCxt, nullptr);
52 WasmEdge_ConfigureDelete(ConfCxt);
53 TestModCxt = createSpecTestModule();
54 WasmEdge_VMRegisterModuleFromImport(VM, TestModCxt);
55 }
56 ~TestContext() {
57 WasmEdge_VMDelete(VM);
58 WasmEdge_ModuleInstanceDelete(TestModCxt);
59 }
60 };
61
62 T.onInit = [&ConfRef](SpecTest::ContextHandle Parent,
63 const std::vector<std::pair<std::string, std::string>>
64 &SharedModules) -> SpecTest::ContextHandle {
65 auto *Ctx = new TestContext(ConfRef);
66 if (Parent != nullptr && !SharedModules.empty()) {
67 auto *P = static_cast<TestContext *>(Parent);
68 WasmEdge_StoreContext *ParentStore = WasmEdge_VMGetStoreContext(P->VM);
69 for (const auto &[ParentName, AliasName] : SharedModules) {
70 WasmEdge_String ParentNameStr =
71 WasmEdge_StringCreateByCString(ParentName.c_str());
72 const WasmEdge_ModuleInstanceContext *ModInst =
73 WasmEdge_StoreFindModule(ParentStore, ParentNameStr);
74 WasmEdge_StringDelete(ParentNameStr);
75 if (ModInst != nullptr) {
76 WasmEdge_String AliasNameStr =
77 WasmEdge_StringCreateByCString(AliasName.c_str());
78 WasmEdge_VMRegisterModuleFromImportWithAlias(Ctx->VM, AliasNameStr,
79 ModInst);
80 WasmEdge_StringDelete(AliasNameStr);
81 }
82 }
83 }
84 return Ctx;
85 };
86
87 T.onFini = [](SpecTest::ContextHandle Ctx) {
88 delete static_cast<TestContext *>(Ctx);
89 };
90
91 T.onModule = [](SpecTest::ContextHandle Ctx, const std::string &ModName,
92 const std::string &FileName) -> Expect<void> {
93 auto *VM = static_cast<TestContext *>(Ctx)->VM;
94 WasmEdge_Result Res;
95 if (!ModName.empty()) {
96 WasmEdge_String ModStr = WasmEdge_StringWrap(
97 ModName.data(), static_cast<uint32_t>(ModName.length()));
98 Res = WasmEdge_VMRegisterModuleFromFile(VM, ModStr, FileName.c_str());

Callers

nothing calls this directly

Calls 15

WasmEdge_StoreFindModuleFunction · 0.85
WasmEdge_StringDeleteFunction · 0.85
WasmEdge_ResultOKFunction · 0.85
UnexpectFunction · 0.85
convResultFunction · 0.85
convFromValVecFunction · 0.85

Tested by

no test coverage detected