Coverage for tests/test_shared_memory.py: 100%

46 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-02-20 16:25 +0000

1import unittest 

2 

3from wasmtime import * 

4 

5 

6class TestSharedMemory(unittest.TestCase): 

7 def test_new(self): 

8 engine = Store().engine 

9 memory_type = MemoryType(Limits(1, 2), is_64=False, shared=True) 

10 assert(not memory_type.is_64) 

11 shared_memory = SharedMemory(engine, memory_type) 

12 with self.assertRaises(TypeError): 

13 shared_memory.grow('') # type: ignore 

14 with self.assertRaises(WasmtimeError): 

15 shared_memory.grow(-1) 

16 self.assertEqual(shared_memory.data_ptr()[0], 0) 

17 self.assertEqual(shared_memory.data_len(), 65536) 

18 self.assertTrue(isinstance(shared_memory.type(), MemoryType)) 

19 

20 def test_grow(self): 

21 engine = Store().engine 

22 memory_type = MemoryType(Limits(1, 2), shared=True) 

23 shared_memory = SharedMemory(engine, memory_type) 

24 assert(shared_memory.grow(1) == 1) 

25 assert(shared_memory.grow(0) == 2) 

26 with self.assertRaises(WasmtimeError): 

27 shared_memory.grow(1) 

28 

29 def test_errors(self): 

30 engine = Store().engine 

31 ty = MemoryType(Limits(1, 2), shared=True) 

32 with self.assertRaises(AttributeError): 

33 SharedMemory(1, ty) # type: ignore 

34 with self.assertRaises(AttributeError): 

35 SharedMemory(engine, 1) # type: ignore 

36 

37 def test_shared_memory_type_fails_if_no_max_specified(self): 

38 with self.assertRaises(WasmtimeError): 

39 # Shared memories must have a max size 

40 MemoryType(Limits(0x100000000, None), shared=True) 

41 

42 def test_shared_memory_type_works_if_min_max_i64_is_set(self): 

43 ty = MemoryType(Limits(0x100000000, 0x100000000), is_64=True, shared=True) 

44 assert(ty.limits.min == 0x100000000) 

45 assert(ty.limits.max == 0x100000000) 

46 assert(ty.is_64) 

47 

48 def test_shared_memory_type_fails_if_is_too_large(self): 

49 with self.assertRaises(WasmtimeError): 

50 MemoryType(Limits(1, 0x100000000), shared=True) 

51 

52 def test_memory_type_has_to_be_shared(self): 

53 engine = Store().engine 

54 ty = MemoryType(Limits(1, 2)) 

55 with self.assertRaises(WasmtimeError): 

56 SharedMemory(engine, ty)