Coverage for tests/test_global.py: 100%

37 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 TestGlobal(unittest.TestCase): 

7 def test_new(self): 

8 store = Store() 

9 ty = GlobalType(ValType.i32(), True) 

10 g = Global(store, ty, Val.i32(1)) 

11 Global(store, ty, Val.i32(1)) 

12 self.assertEqual(g.type(store).content, ValType.i32()) 

13 self.assertTrue(g.type(store).mutable) 

14 

15 self.assertEqual(g.value(store), 1) 

16 g.set_value(store, Val.i32(2)) 

17 self.assertEqual(g.value(store), 2) 

18 self.assertTrue(isinstance(g.type(store), GlobalType)) 

19 

20 def test_falsy(self): 

21 store = Store() 

22 ty = GlobalType(ValType.i64(), True) 

23 g = Global(store, ty, Val.i64(0)) 

24 val = g.value(store) 

25 

26 self.assertEqual(val, 0) 

27 self.assertTrue(isinstance(val, int)) 

28 

29 def test_errors(self): 

30 store = Store() 

31 ty = GlobalType(ValType.i32(), True) 

32 with self.assertRaises(TypeError): 

33 Global(store, ty, store) 

34 with self.assertRaises(TypeError): 

35 Global(store, 1, Val.i32(1)) # type: ignore 

36 with self.assertRaises(AttributeError): 

37 Global(1, ty, Val.i32(1)) # type: ignore 

38 

39 g = Global(store, ty, Val.i32(1)) 

40 with self.assertRaises(TypeError): 

41 g.set_value(store, g) 

42 

43 ty = GlobalType(ValType.i32(), False) 

44 g = Global(store, ty, Val.i32(1)) 

45 with self.assertRaises(WasmtimeError): 

46 g.set_value(store, 1)