Coverage for tests/test_shared_memory.py: 100%
50 statements
« prev ^ index » next coverage.py v7.11.3, created at 2025-12-22 16:28 +0000
« prev ^ index » next coverage.py v7.11.3, created at 2025-12-22 16:28 +0000
1import unittest
3from wasmtime import *
5def engine_with_shared_memory() -> Engine:
6 config = Config()
7 config.shared_memory = True
8 return Engine(config)
10class TestSharedMemory(unittest.TestCase):
11 def test_new(self):
12 engine = engine_with_shared_memory()
13 memory_type = MemoryType(Limits(1, 2), is_64=False, shared=True)
14 assert(not memory_type.is_64)
15 shared_memory = SharedMemory(engine, memory_type)
16 with self.assertRaises(TypeError):
17 shared_memory.grow('') # type: ignore
18 with self.assertRaises(WasmtimeError):
19 shared_memory.grow(-1)
20 self.assertEqual(shared_memory.data_ptr()[0], 0)
21 self.assertEqual(shared_memory.data_len(), 65536)
22 self.assertTrue(isinstance(shared_memory.type(), MemoryType))
24 def test_grow(self):
25 engine = engine_with_shared_memory()
26 memory_type = MemoryType(Limits(1, 2), shared=True)
27 shared_memory = SharedMemory(engine, memory_type)
28 assert(shared_memory.grow(1) == 1)
29 assert(shared_memory.grow(0) == 2)
30 with self.assertRaises(WasmtimeError):
31 shared_memory.grow(1)
33 def test_errors(self):
34 engine = engine_with_shared_memory()
35 ty = MemoryType(Limits(1, 2), shared=True)
36 with self.assertRaises(AttributeError):
37 SharedMemory(1, ty) # type: ignore
38 with self.assertRaises(AttributeError):
39 SharedMemory(engine, 1) # type: ignore
41 def test_shared_memory_type_fails_if_no_max_specified(self):
42 with self.assertRaises(WasmtimeError):
43 # Shared memories must have a max size
44 MemoryType(Limits(0x100000000, None), shared=True)
46 def test_shared_memory_type_works_if_min_max_i64_is_set(self):
47 ty = MemoryType(Limits(0x100000000, 0x100000000), is_64=True, shared=True)
48 assert(ty.limits.min == 0x100000000)
49 assert(ty.limits.max == 0x100000000)
50 assert(ty.is_64)
52 def test_shared_memory_type_fails_if_is_too_large(self):
53 with self.assertRaises(WasmtimeError):
54 MemoryType(Limits(1, 0x100000000), shared=True)
56 def test_memory_type_has_to_be_shared(self):
57 engine = engine_with_shared_memory()
58 ty = MemoryType(Limits(1, 2))
59 with self.assertRaises(WasmtimeError):
60 SharedMemory(engine, ty)