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