bt2: Adapt test_stream_class.py and make it pass
[babeltrace.git] / tests / bindings / python / bt2 / test_stream_class.py
1 import unittest
2 import bt2
3 from utils import run_in_component_init
4
5
6 class StreamClassTestCase(unittest.TestCase):
7 def setUp(self):
8 def f(comp_self):
9 tc = comp_self._create_trace_class(assigns_automatic_stream_class_id=True)
10 cc = comp_self._create_clock_class()
11 return tc, cc
12
13 self._tc, self._cc = run_in_component_init(f)
14 self._trace = self._tc()
15
16 def test_create_default(self):
17 sc = self._tc.create_stream_class()
18
19 self.assertIsNone(sc.name)
20 self.assertIsNone(sc.packet_context_field_class)
21 self.assertIsNone(sc.event_common_context_field_class)
22 self.assertIsNone(sc.default_clock_class)
23 self.assertTrue(sc.assigns_automatic_event_class_id)
24 self.assertTrue(sc.assigns_automatic_stream_id)
25 self.assertFalse(sc.packets_have_default_beginning_clock_snapshot)
26 self.assertFalse(sc.packets_have_default_end_clock_snapshot)
27
28 def test_create_name(self):
29 sc = self._tc.create_stream_class(name='bozo')
30 self.assertEqual(sc.name, 'bozo')
31
32 def test_create_invalid_name(self):
33 with self.assertRaises(TypeError):
34 self._tc.create_stream_class(name=17)
35
36 def test_create_packet_context_field_class(self):
37 fc = self._tc.create_structure_field_class()
38 sc = self._tc.create_stream_class(packet_context_field_class=fc)
39 self.assertEqual(sc.packet_context_field_class, fc)
40
41 def test_create_invalid_packet_context_field_class(self):
42 with self.assertRaises(TypeError):
43 self._tc.create_stream_class(packet_context_field_class=22)
44
45 def test_create_event_common_context_field_class(self):
46 fc = self._tc.create_structure_field_class()
47 sc = self._tc.create_stream_class(event_common_context_field_class=fc)
48 self.assertEqual(sc.event_common_context_field_class, fc)
49
50 def test_create_invalid_event_common_context_field_class(self):
51 with self.assertRaises(TypeError):
52 self._tc.create_stream_class(event_common_context_field_class=22)
53
54 def test_create_default_clock_class(self):
55 sc = self._tc.create_stream_class(default_clock_class=self._cc)
56 self.assertEqual(sc.default_clock_class.addr, self._cc.addr)
57
58 def test_create_invalid_default_clock_class(self):
59 with self.assertRaises(TypeError):
60 self._tc.create_stream_class(default_clock_class=12)
61
62 def test_automatic_stream_ids(self):
63 sc = self._tc.create_stream_class(assigns_automatic_stream_id=True)
64 self.assertTrue(sc.assigns_automatic_stream_id)
65
66 stream = self._trace.create_stream(sc)
67 self.assertIsNotNone(stream.id)
68
69 def test_automatic_stream_ids_raises(self):
70 sc = self._tc.create_stream_class(assigns_automatic_stream_id=True)
71 self.assertTrue(sc.assigns_automatic_stream_id)
72
73 with self.assertRaises(bt2.CreationError):
74 self._trace.create_stream(sc, id=123)
75
76 def test_no_automatic_stream_ids(self):
77 sc = self._tc.create_stream_class(assigns_automatic_stream_id=False)
78 self.assertFalse(sc.assigns_automatic_stream_id)
79
80 stream = self._trace.create_stream(sc, id=333)
81 self.assertEqual(stream.id, 333)
82
83 def test_no_automatic_stream_ids_raises(self):
84 sc = self._tc.create_stream_class(assigns_automatic_stream_id=False)
85 self.assertFalse(sc.assigns_automatic_stream_id)
86
87 with self.assertRaises(bt2.CreationError):
88 self._trace.create_stream(sc)
89
90 def test_automatic_event_class_ids(self):
91 sc = self._tc.create_stream_class(assigns_automatic_event_class_id=True)
92 self.assertTrue(sc.assigns_automatic_event_class_id)
93
94 ec = sc.create_event_class()
95 self.assertIsNotNone(ec.id)
96
97 def test_automatic_event_class_ids_raises(self):
98 sc = self._tc.create_stream_class(assigns_automatic_event_class_id=True)
99 self.assertTrue(sc.assigns_automatic_event_class_id)
100
101 with self.assertRaises(bt2.CreationError):
102 sc.create_event_class(id=123)
103
104 def test_no_automatic_event_class_ids(self):
105 sc = self._tc.create_stream_class(assigns_automatic_event_class_id=False)
106 self.assertFalse(sc.assigns_automatic_event_class_id)
107
108 ec = sc.create_event_class(id=333)
109 self.assertEqual(ec.id, 333)
110
111 def test_no_automatic_event_class_ids_raises(self):
112 sc = self._tc.create_stream_class(assigns_automatic_event_class_id=False)
113 self.assertFalse(sc.assigns_automatic_event_class_id)
114
115 with self.assertRaises(bt2.CreationError):
116 sc.create_event_class()
117
118 def test_packets_have_default_beginning_clock_snapshot(self):
119 sc = self._tc.create_stream_class(default_clock_class=self._cc, packets_have_default_beginning_clock_snapshot=True)
120 self.assertTrue(sc.packets_have_default_beginning_clock_snapshot)
121
122 def test_packets_have_default_beginning_clock_snapshot_raises(self):
123 with self.assertRaises(TypeError):
124 sc = self._tc.create_stream_class(packets_have_default_beginning_clock_snapshot="something")
125
126 def test_packets_have_default_end_clock_snapshot(self):
127 sc = self._tc.create_stream_class(default_clock_class=self._cc, packets_have_default_end_clock_snapshot=True)
128 self.assertTrue(sc.packets_have_default_end_clock_snapshot)
129
130 def test_packets_have_default_end_clock_snapshot_raises(self):
131 with self.assertRaises(TypeError):
132 sc = self._tc.create_stream_class(packets_have_default_end_clock_snapshot="something")
133
134 def test_trace_class(self):
135 sc = self._tc.create_stream_class()
136 self.assertEqual(sc.trace_class.addr, self._tc.addr)
137
138 def _create_stream_class_with_event_classes(self):
139 sc = self._tc.create_stream_class(assigns_automatic_event_class_id=False)
140 ec1 = sc.create_event_class(id=23)
141 ec2 = sc.create_event_class(id=17)
142 return sc, ec1, ec2
143
144 def test_getitem(self):
145 sc, ec1, ec2 = self._create_stream_class_with_event_classes()
146
147 self.assertEqual(sc[23].addr, ec1.addr)
148 self.assertEqual(sc[17].addr, ec2.addr)
149
150 def test_getitem_wrong_key_type(self):
151 sc, _, _ = self._create_stream_class_with_event_classes()
152
153 with self.assertRaises(TypeError):
154 sc['event23']
155
156 def test_getitem_wrong_key(self):
157 sc, _, _ = self._create_stream_class_with_event_classes()
158
159 with self.assertRaises(KeyError):
160 sc[19]
161
162 def test_len(self):
163 sc, _, _ = self._create_stream_class_with_event_classes()
164
165 self.assertEqual(len(sc), 2)
166
167 def test_iter(self):
168 sc, _, _ = self._create_stream_class_with_event_classes()
169
170 ec_ids = sorted(sc)
171 self.assertEqual(ec_ids, [17, 23])
This page took 0.033719 seconds and 5 git commands to generate.