MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / TEST

Function TEST

crates/c-api/tests/val.cc:8–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6using namespace wasmtime;
7
8TEST(Val, Smoke) {
9 Val val(1);
10 EXPECT_EQ(val.kind(), ValKind::I32);
11 EXPECT_EQ(val.i32(), 1);
12
13 val = (int32_t)3;
14 EXPECT_EQ(val.kind(), ValKind::I32);
15 EXPECT_EQ(val.i32(), 3);
16
17 val = (int64_t)4;
18 EXPECT_EQ(val.kind(), ValKind::I64);
19 EXPECT_EQ(val.i64(), 4);
20
21 val = (float)5;
22 EXPECT_EQ(val.kind(), ValKind::F32);
23 EXPECT_EQ(val.f32(), 5);
24
25 val = (double)6;
26 EXPECT_EQ(val.kind(), ValKind::F64);
27 EXPECT_EQ(val.f64(), 6);
28
29 val = V128();
30 EXPECT_EQ(val.kind(), ValKind::V128);
31 for (int i = 0; i < 16; i++) {
32 EXPECT_EQ(val.v128().v128[i], 0);
33 }
34
35 Engine engine;
36 Store store(engine);
37 val = std::optional<ExternRef>(std::nullopt);
38 EXPECT_EQ(val.kind(), ValKind::ExternRef);
39 EXPECT_EQ(val.externref(), std::nullopt);
40
41 val = std::optional<ExternRef>(ExternRef(store, 5));
42 EXPECT_EQ(val.kind(), ValKind::ExternRef);
43 EXPECT_EQ(std::any_cast<int>(val.externref()->data(store)), 5);
44
45 val = ExternRef(store, 5);
46 EXPECT_EQ(val.kind(), ValKind::ExternRef);
47 EXPECT_EQ(std::any_cast<int>(val.externref()->data(store)), 5);
48
49 val = std::optional<AnyRef>(std::nullopt);
50 EXPECT_EQ(val.kind(), ValKind::AnyRef);
51 EXPECT_EQ(val.anyref(), std::nullopt);
52
53 val = std::optional<AnyRef>(AnyRef::i31(store, 5));
54 EXPECT_EQ(val.kind(), ValKind::AnyRef);
55 EXPECT_EQ(val.anyref()->i31(store), 5);
56 EXPECT_EQ(val.anyref()->u31(store), 5);
57
58 val = AnyRef::i31(store, -5);
59 EXPECT_EQ(val.kind(), ValKind::AnyRef);
60 EXPECT_EQ(val.anyref()->i31(store), -5);
61 EXPECT_EQ(val.anyref()->u31(store), 0x7ffffffb);
62
63 val = std::optional<Func>(std::nullopt);
64 EXPECT_EQ(val.kind(), ValKind::FuncRef);
65 EXPECT_EQ(val.funcref(), std::nullopt);

Callers

nothing calls this directly

Calls 15

u31Method · 0.80
V128Class · 0.50
ExternRefClass · 0.50
FuncTypeClass · 0.50
kindMethod · 0.45
i32Method · 0.45
i64Method · 0.45
f32Method · 0.45
f64Method · 0.45
v128Method · 0.45
externrefMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected