Coverage for tests/test_in.py: 100%

46 statements  

« prev     ^ index     » next       coverage.py v7.4.1, created at 2024-02-08 22:32 +0100

1""" 

2test for In() 

3""" 

4import unittest 

5 

6from stricto import In, String, Int, Error 

7 

8 

9class TestIn(unittest.TestCase): 

10 """ 

11 test for In() 

12 """ 

13 def test_set(self): 

14 """ 

15 set type error 

16 """ 

17 a = In([Int(), String()]) 

18 with self.assertRaises(Error) as e: 

19 a.set(12.3) 

20 self.assertEqual(e.exception.message, "Match no model") 

21 a.set(12) 

22 self.assertEqual(a, 12) 

23 a.set("yolo") 

24 self.assertEqual(a, "yolo") 

25 

26 def test_type(self): 

27 """ 

28 Set type ref 

29 """ 

30 a = In([Int(), String()]) 

31 b = a 

32 self.assertEqual(type(b), In) 

33 a.set(12) 

34 self.assertEqual(b, 12) 

35 

36 def test_second_type(self): 

37 """ 

38 test change type 

39 """ 

40 a = In([Int(), String()]) 

41 a.set(12) 

42 b = a + 3 

43 self.assertEqual(b, 15) 

44 a.set("foo") 

45 b = a + "bar" 

46 self.assertEqual(b, "foobar") 

47 

48 def test_model_none(self): 

49 """ 

50 Test error 

51 """ 

52 a = In([None, Int()]) 

53 a.set(11) 

54 self.assertEqual(a, 11) 

55 

56 def test_default_type(self): 

57 """ 

58 default 

59 """ 

60 a = In([Int(), String()], default=12) 

61 self.assertEqual(a, 12) 

62 

63 def test_default_type_conflict(self): 

64 """ 

65 set default conflict 

66 """ 

67 a = In([Int(default=10), String()], default=12) 

68 self.assertEqual(a, 12) 

69 

70 def test_count_in(self): 

71 """ 

72 test specific type function (count for list) 

73 """ 

74 a = In([Int(), String()], default="yoyo") 

75 self.assertEqual(a.count("y"), 2) 

76 a.set(12) 

77 self.assertEqual(a.bit_length(), 4) 

78 

79 def test_min_in(self): 

80 """ 

81 check minimal 

82 """ 

83 a = In([Int(min=10), String()], default="yoyo") 

84 with self.assertRaises(Error) as e: 

85 a.set(1) 

86 self.assertEqual(e.exception.message, "Must be above Minimal")