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