Commit | Line | Data |
---|---|---|
9cf643d1 PP |
1 | from bt2 import values |
2 | import unittest | |
3 | import copy | |
4 | import bt2 | |
5 | ||
6 | ||
976c241d | 7 | @unittest.skip("this is broken") |
9cf643d1 PP |
8 | class StreamClassTestCase(unittest.TestCase): |
9 | def setUp(self): | |
10 | self._packet_context_ft = bt2.StructureFieldType() | |
11 | self._packet_context_ft.append_field('menu', bt2.FloatingPointNumberFieldType()) | |
12 | self._packet_context_ft.append_field('sticker', bt2.StringFieldType()) | |
13 | self._event_header_ft = bt2.StructureFieldType() | |
14 | self._event_header_ft.append_field('id', bt2.IntegerFieldType(19)) | |
15 | self._event_context_ft = bt2.StructureFieldType() | |
16 | self._event_context_ft.append_field('msg', bt2.StringFieldType()) | |
17 | self._ec1, self._ec2 = self._create_event_classes() | |
18 | self._sc = bt2.StreamClass(name='my_stream_class', id=12, | |
19 | packet_context_field_type=self._packet_context_ft, | |
20 | event_header_field_type=self._event_header_ft, | |
21 | event_context_field_type=self._event_context_ft, | |
22 | event_classes=(self._ec1, self._ec2)) | |
23 | ||
811644b8 PP |
24 | def tearDown(self): |
25 | del self._packet_context_ft | |
26 | del self._event_header_ft | |
27 | del self._event_context_ft | |
28 | del self._ec1 | |
29 | del self._sc | |
30 | ||
9cf643d1 PP |
31 | def _create_event_classes(self): |
32 | context_ft = bt2.StructureFieldType() | |
33 | context_ft.append_field('allo', bt2.StringFieldType()) | |
34 | context_ft.append_field('zola', bt2.IntegerFieldType(18)) | |
35 | payload_ft = bt2.StructureFieldType() | |
36 | payload_ft.append_field('zoom', bt2.StringFieldType()) | |
37 | ec1 = bt2.EventClass('event23', id=23, context_field_type=context_ft, | |
38 | payload_field_type=payload_ft) | |
39 | ec2 = bt2.EventClass('event17', id=17, context_field_type=payload_ft, | |
40 | payload_field_type=context_ft) | |
41 | return ec1, ec2 | |
42 | ||
43 | def test_create(self): | |
44 | self.assertEqual(self._sc.name, 'my_stream_class') | |
45 | self.assertEqual(self._sc.id, 12) | |
46 | self.assertEqual(self._sc.packet_context_field_type, self._packet_context_ft) | |
47 | self.assertEqual(self._sc.event_header_field_type, self._event_header_ft) | |
48 | self.assertEqual(self._sc.event_context_field_type, self._event_context_ft) | |
811644b8 PP |
49 | self.assertEqual(self._sc[23], self._ec1) |
50 | self.assertEqual(self._sc[17], self._ec2) | |
51 | self.assertEqual(len(self._sc), 2) | |
9cf643d1 PP |
52 | |
53 | def test_assign_name(self): | |
54 | self._sc.name = 'lel' | |
55 | self.assertEqual(self._sc.name, 'lel') | |
56 | ||
57 | def test_assign_invalid_name(self): | |
58 | with self.assertRaises(TypeError): | |
59 | self._sc.name = 17 | |
60 | ||
61 | def test_assign_id(self): | |
62 | self._sc.id = 1717 | |
63 | self.assertEqual(self._sc.id, 1717) | |
64 | ||
65 | def test_assign_invalid_id(self): | |
66 | with self.assertRaises(TypeError): | |
67 | self._sc.id = 'lel' | |
68 | ||
811644b8 PP |
69 | def test_no_id(self): |
70 | sc = bt2.StreamClass() | |
71 | self.assertIsNone(sc.id) | |
72 | ||
9cf643d1 PP |
73 | def test_assign_packet_context_field_type(self): |
74 | self._sc.packet_context_field_type = self._event_context_ft | |
75 | self.assertEqual(self._sc.packet_context_field_type, self._event_context_ft) | |
76 | ||
77 | def test_assign_no_packet_context_field_type(self): | |
78 | self._sc.packet_context_field_type = None | |
79 | self.assertIsNone(self._sc.packet_context_field_type) | |
80 | ||
81 | def test_assign_invalid_packet_context_field_type(self): | |
82 | with self.assertRaises(TypeError): | |
83 | self._sc.packet_context_field_type = 'lel' | |
84 | ||
85 | def test_assign_event_header_field_type(self): | |
86 | self._sc.event_header_field_type = self._event_header_ft | |
87 | self.assertEqual(self._sc.event_header_field_type, self._event_header_ft) | |
88 | ||
89 | def test_assign_no_event_header_field_type(self): | |
90 | self._sc.event_header_field_type = None | |
91 | self.assertIsNone(self._sc.event_header_field_type) | |
92 | ||
93 | def test_assign_invalid_event_header_field_type(self): | |
94 | with self.assertRaises(TypeError): | |
95 | self._sc.event_header_field_type = 'lel' | |
96 | ||
97 | def test_assign_event_context_field_type(self): | |
98 | self._sc.event_context_field_type = self._packet_context_ft | |
99 | self.assertEqual(self._sc.event_context_field_type, self._packet_context_ft) | |
100 | ||
101 | def test_assign_no_event_context_field_type(self): | |
102 | self._sc.event_context_field_type = None | |
103 | self.assertIsNone(self._sc.event_context_field_type) | |
104 | ||
105 | def test_assign_invalid_event_context_field_type(self): | |
106 | with self.assertRaises(TypeError): | |
107 | self._sc.event_context_field_type = 'lel' | |
108 | ||
109 | def test_trace_prop_no_tc(self): | |
110 | self.assertIsNone(self._sc.trace) | |
111 | ||
112 | def test_trace_prop(self): | |
113 | tc = bt2.Trace() | |
114 | tc.add_stream_class(self._sc) | |
115 | self.assertEqual(self._sc.trace.addr, tc.addr) | |
116 | ||
117 | def _test_copy(self, cpy): | |
118 | self.assertIsNot(cpy, self._sc) | |
119 | self.assertNotEqual(cpy.addr, self._sc.addr) | |
120 | self.assertEqual(cpy, self._sc) | |
121 | ||
122 | def test_copy(self): | |
123 | cpy = copy.copy(self._sc) | |
124 | self._test_copy(cpy) | |
125 | self.assertEqual(self._sc.packet_context_field_type.addr, cpy.packet_context_field_type.addr) | |
126 | self.assertEqual(self._sc.event_header_field_type.addr, cpy.event_header_field_type.addr) | |
127 | self.assertEqual(self._sc.event_context_field_type.addr, cpy.event_context_field_type.addr) | |
128 | ||
129 | def test_deepcopy(self): | |
130 | cpy = copy.deepcopy(self._sc) | |
131 | self._test_copy(cpy) | |
132 | self.assertNotEqual(self._sc.packet_context_field_type.addr, cpy.packet_context_field_type.addr) | |
133 | self.assertNotEqual(self._sc.event_header_field_type.addr, cpy.event_header_field_type.addr) | |
134 | self.assertNotEqual(self._sc.event_context_field_type.addr, cpy.event_context_field_type.addr) | |
135 | ||
136 | def test_getitem(self): | |
811644b8 PP |
137 | self.assertEqual(self._sc[23], self._ec1) |
138 | self.assertEqual(self._sc[17], self._ec2) | |
9cf643d1 PP |
139 | |
140 | def test_getitem_wrong_key_type(self): | |
141 | with self.assertRaises(TypeError): | |
811644b8 | 142 | self._sc['event23'] |
9cf643d1 PP |
143 | |
144 | def test_getitem_wrong_key(self): | |
145 | with self.assertRaises(KeyError): | |
811644b8 | 146 | self._sc[19] |
9cf643d1 PP |
147 | |
148 | def test_len(self): | |
149 | self.assertEqual(len(self._sc), 2) | |
150 | ||
151 | def test_iter(self): | |
811644b8 | 152 | for ec_id, event_class in self._sc.items(): |
9cf643d1 PP |
153 | self.assertIsInstance(event_class, bt2.EventClass) |
154 | ||
811644b8 | 155 | if ec_id == 23: |
9cf643d1 | 156 | self.assertEqual(event_class, self._ec1) |
811644b8 | 157 | elif ec_id == 17: |
9cf643d1 PP |
158 | self.assertEqual(event_class, self._ec2) |
159 | ||
9cf643d1 PP |
160 | def test_eq(self): |
161 | ec1, ec2 = self._create_event_classes() | |
162 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
163 | packet_context_field_type=self._packet_context_ft, | |
164 | event_header_field_type=self._event_header_ft, | |
165 | event_context_field_type=self._event_context_ft, | |
166 | event_classes=(ec1, ec2)) | |
167 | ec1, ec2 = self._create_event_classes() | |
168 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
169 | packet_context_field_type=self._packet_context_ft, | |
170 | event_header_field_type=self._event_header_ft, | |
171 | event_context_field_type=self._event_context_ft, | |
172 | event_classes=(ec1, ec2)) | |
173 | self.assertEqual(sc1, sc2) | |
174 | ||
175 | def test_ne_name(self): | |
176 | ec1, ec2 = self._create_event_classes() | |
177 | sc1 = bt2.StreamClass(name='my_stream_class1', id=12, | |
178 | packet_context_field_type=self._packet_context_ft, | |
179 | event_header_field_type=self._event_header_ft, | |
180 | event_context_field_type=self._event_context_ft, | |
181 | event_classes=(ec1, ec2)) | |
182 | ec1, ec2 = self._create_event_classes() | |
183 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
184 | packet_context_field_type=self._packet_context_ft, | |
185 | event_header_field_type=self._event_header_ft, | |
186 | event_context_field_type=self._event_context_ft, | |
187 | event_classes=(ec1, ec2)) | |
188 | self.assertNotEqual(sc1, sc2) | |
189 | ||
190 | def test_ne_id(self): | |
191 | ec1, ec2 = self._create_event_classes() | |
192 | sc1 = bt2.StreamClass(name='my_stream_class', id=13, | |
193 | packet_context_field_type=self._packet_context_ft, | |
194 | event_header_field_type=self._event_header_ft, | |
195 | event_context_field_type=self._event_context_ft, | |
196 | event_classes=(ec1, ec2)) | |
197 | ec1, ec2 = self._create_event_classes() | |
198 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
199 | packet_context_field_type=self._packet_context_ft, | |
200 | event_header_field_type=self._event_header_ft, | |
201 | event_context_field_type=self._event_context_ft, | |
202 | event_classes=(ec1, ec2)) | |
203 | self.assertNotEqual(sc1, sc2) | |
204 | ||
205 | def test_ne_packet_context_field_type(self): | |
206 | ec1, ec2 = self._create_event_classes() | |
207 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
208 | packet_context_field_type=self._event_context_ft, | |
209 | event_header_field_type=self._event_header_ft, | |
210 | event_context_field_type=self._event_context_ft, | |
211 | event_classes=(ec1, ec2)) | |
212 | ec1, ec2 = self._create_event_classes() | |
213 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
214 | packet_context_field_type=self._packet_context_ft, | |
215 | event_header_field_type=self._event_header_ft, | |
216 | event_context_field_type=self._event_context_ft, | |
217 | event_classes=(ec1, ec2)) | |
218 | self.assertNotEqual(sc1, sc2) | |
219 | ||
220 | def test_ne_event_header_field_type(self): | |
221 | ec1, ec2 = self._create_event_classes() | |
222 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
223 | packet_context_field_type=self._packet_context_ft, | |
224 | event_context_field_type=self._event_context_ft, | |
225 | event_classes=(ec1, ec2)) | |
226 | ec1, ec2 = self._create_event_classes() | |
227 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
228 | packet_context_field_type=self._packet_context_ft, | |
229 | event_header_field_type=self._event_header_ft, | |
230 | event_context_field_type=self._event_context_ft, | |
231 | event_classes=(ec1, ec2)) | |
232 | self.assertNotEqual(sc1, sc2) | |
233 | ||
234 | def test_ne_event_context_field_type(self): | |
235 | ec1, ec2 = self._create_event_classes() | |
236 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
237 | packet_context_field_type=self._packet_context_ft, | |
238 | event_header_field_type=self._event_header_ft, | |
239 | event_context_field_type=self._packet_context_ft, | |
240 | event_classes=(ec1, ec2)) | |
241 | ec1, ec2 = self._create_event_classes() | |
242 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
243 | packet_context_field_type=self._packet_context_ft, | |
244 | event_header_field_type=self._event_header_ft, | |
245 | event_context_field_type=self._event_context_ft, | |
246 | event_classes=(ec1, ec2)) | |
247 | self.assertNotEqual(sc1, sc2) | |
248 | ||
249 | def test_ne_event_class(self): | |
250 | ec1, ec2 = self._create_event_classes() | |
251 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
252 | packet_context_field_type=self._packet_context_ft, | |
253 | event_header_field_type=self._event_header_ft, | |
254 | event_context_field_type=self._event_context_ft, | |
255 | event_classes=(ec1,)) | |
256 | ec1, ec2 = self._create_event_classes() | |
257 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
258 | packet_context_field_type=self._packet_context_ft, | |
259 | event_header_field_type=self._event_header_ft, | |
260 | event_context_field_type=self._event_context_ft, | |
261 | event_classes=(ec1, ec2)) | |
262 | self.assertNotEqual(sc1, sc2) | |
263 | ||
264 | def test_eq_invalid(self): | |
265 | self.assertFalse(self._sc == 23) |