1 #include <wasmtime/memory.hh>
2
3 #include <gtest/gtest.h>
4 #include <wasmtime.hh>
5
6 using namespace wasmtime;
7
TEST(Memory,Smoke)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
TEST(Memory,OneBytePageSize)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