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
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-08 22:32 +0100
1"""
2test for In()
3"""
4import unittest
6from stricto import In, String, Int, Error
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")
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)
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")
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)
56 def test_default_type(self):
57 """
58 default
59 """
60 a = In([Int(), String()], default=12)
61 self.assertEqual(a, 12)
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)
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)
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")