Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/c-api/tests/memory.cc
3069 views
1
#include <wasmtime/memory.hh>
2
3
#include <gtest/gtest.h>
4
#include <wasmtime.hh>
5
6
using namespace wasmtime;
7
8
TEST(Memory, Smoke) {
9
Engine engine;
10
Store store(engine);
11
Memory m = Memory::create(store, MemoryType(1)).unwrap();
12
EXPECT_EQ(m.size(store), 1);
13
EXPECT_EQ(m.grow(store, 1).unwrap(), 1);
14
EXPECT_EQ(m.data(store).size(), 2 << 16);
15
EXPECT_EQ(m.type(store)->min(), 1);
16
EXPECT_EQ(m.page_size_log2(store), 16);
17
EXPECT_EQ(m.page_size(store), 1 << 16);
18
}
19
20
TEST(Memory, OneBytePageSize) {
21
Engine engine;
22
Store store(engine);
23
MemoryType mem_ty =
24
MemoryType::Builder().min(1).max(2).page_size_log2(0).build().unwrap();
25
Memory mem = Memory::create(store, mem_ty).unwrap();
26
27
// Has expected page size and limits.
28
EXPECT_EQ(mem.page_size_log2(store), 0);
29
EXPECT_EQ(mem.page_size(store), 1);
30
EXPECT_EQ(mem.type(store)->min(), 1);
31
EXPECT_EQ(*mem.type(store)->max(), 2);
32
33
// Has expected initial size.
34
EXPECT_EQ(mem.size(store), 1);
35
36
// Can grow to max and has expected new size.
37
EXPECT_EQ(mem.grow(store, 1).unwrap(), 1);
38
EXPECT_EQ(mem.size(store), 2);
39
EXPECT_EQ(mem.data(store).size(), 2);
40
41
// Fails to grow beyond max, size remains unchanged.
42
EXPECT_FALSE(mem.grow(store, 1));
43
EXPECT_EQ(mem.size(store), 2);
44
EXPECT_EQ(mem.data(store).size(), 2);
45
}
46
47