Commit | Line | Data |
---|---|---|
c4239792 | 1 | from bt2 import value |
9cf643d1 PP |
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): | |
b4f45851 SM |
10 | self._packet_context_fc = bt2.StructureFieldClass() |
11 | self._packet_context_fc.append_field('menu', bt2.FloatingPointNumberFieldClass()) | |
12 | self._packet_context_fc.append_field('sticker', bt2.StringFieldClass()) | |
13 | self._event_header_fc = bt2.StructureFieldClass() | |
14 | self._event_header_fc.append_field('id', bt2.IntegerFieldClass(19)) | |
15 | self._event_context_fc = bt2.StructureFieldClass() | |
16 | self._event_context_fc.append_field('msg', bt2.StringFieldClass()) | |
9cf643d1 PP |
17 | self._ec1, self._ec2 = self._create_event_classes() |
18 | self._sc = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
19 | packet_context_field_class=self._packet_context_fc, |
20 | event_header_field_class=self._event_header_fc, | |
21 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
22 | event_classes=(self._ec1, self._ec2)) |
23 | ||
811644b8 | 24 | def tearDown(self): |
b4f45851 SM |
25 | del self._packet_context_fc |
26 | del self._event_header_fc | |
27 | del self._event_context_fc | |
811644b8 PP |
28 | del self._ec1 |
29 | del self._sc | |
30 | ||
9cf643d1 | 31 | def _create_event_classes(self): |
b4f45851 SM |
32 | context_fc = bt2.StructureFieldClass() |
33 | context_fc.append_field('allo', bt2.StringFieldClass()) | |
34 | context_fc.append_field('zola', bt2.IntegerFieldClass(18)) | |
35 | payload_fc = bt2.StructureFieldClass() | |
36 | payload_fc.append_field('zoom', bt2.StringFieldClass()) | |
37 | ec1 = bt2.EventClass('event23', id=23, context_field_class=context_fc, | |
38 | payload_field_class=payload_fc) | |
39 | ec2 = bt2.EventClass('event17', id=17, context_field_class=payload_fc, | |
40 | payload_field_class=context_fc) | |
9cf643d1 PP |
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) | |
b4f45851 SM |
46 | self.assertEqual(self._sc.packet_context_field_class, self._packet_context_fc) |
47 | self.assertEqual(self._sc.event_header_field_class, self._event_header_fc) | |
48 | self.assertEqual(self._sc.event_context_field_class, self._event_context_fc) | |
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 | ||
b4f45851 SM |
73 | def test_assign_packet_context_field_class(self): |
74 | self._sc.packet_context_field_class = self._event_context_fc | |
75 | self.assertEqual(self._sc.packet_context_field_class, self._event_context_fc) | |
9cf643d1 | 76 | |
b4f45851 SM |
77 | def test_assign_no_packet_context_field_class(self): |
78 | self._sc.packet_context_field_class = None | |
79 | self.assertIsNone(self._sc.packet_context_field_class) | |
9cf643d1 | 80 | |
b4f45851 | 81 | def test_assign_invalid_packet_context_field_class(self): |
9cf643d1 | 82 | with self.assertRaises(TypeError): |
b4f45851 | 83 | self._sc.packet_context_field_class = 'lel' |
9cf643d1 | 84 | |
b4f45851 SM |
85 | def test_assign_event_header_field_class(self): |
86 | self._sc.event_header_field_class = self._event_header_fc | |
87 | self.assertEqual(self._sc.event_header_field_class, self._event_header_fc) | |
9cf643d1 | 88 | |
b4f45851 SM |
89 | def test_assign_no_event_header_field_class(self): |
90 | self._sc.event_header_field_class = None | |
91 | self.assertIsNone(self._sc.event_header_field_class) | |
9cf643d1 | 92 | |
b4f45851 | 93 | def test_assign_invalid_event_header_field_class(self): |
9cf643d1 | 94 | with self.assertRaises(TypeError): |
b4f45851 | 95 | self._sc.event_header_field_class = 'lel' |
9cf643d1 | 96 | |
b4f45851 SM |
97 | def test_assign_event_context_field_class(self): |
98 | self._sc.event_context_field_class = self._packet_context_fc | |
99 | self.assertEqual(self._sc.event_context_field_class, self._packet_context_fc) | |
9cf643d1 | 100 | |
b4f45851 SM |
101 | def test_assign_no_event_context_field_class(self): |
102 | self._sc.event_context_field_class = None | |
103 | self.assertIsNone(self._sc.event_context_field_class) | |
9cf643d1 | 104 | |
b4f45851 | 105 | def test_assign_invalid_event_context_field_class(self): |
9cf643d1 | 106 | with self.assertRaises(TypeError): |
b4f45851 | 107 | self._sc.event_context_field_class = 'lel' |
9cf643d1 PP |
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) | |
b4f45851 SM |
125 | self.assertEqual(self._sc.packet_context_field_class.addr, cpy.packet_context_field_class.addr) |
126 | self.assertEqual(self._sc.event_header_field_class.addr, cpy.event_header_field_class.addr) | |
127 | self.assertEqual(self._sc.event_context_field_class.addr, cpy.event_context_field_class.addr) | |
9cf643d1 PP |
128 | |
129 | def test_deepcopy(self): | |
130 | cpy = copy.deepcopy(self._sc) | |
131 | self._test_copy(cpy) | |
b4f45851 SM |
132 | self.assertNotEqual(self._sc.packet_context_field_class.addr, cpy.packet_context_field_class.addr) |
133 | self.assertNotEqual(self._sc.event_header_field_class.addr, cpy.event_header_field_class.addr) | |
134 | self.assertNotEqual(self._sc.event_context_field_class.addr, cpy.event_context_field_class.addr) | |
9cf643d1 PP |
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, | |
b4f45851 SM |
163 | packet_context_field_class=self._packet_context_fc, |
164 | event_header_field_class=self._event_header_fc, | |
165 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
166 | event_classes=(ec1, ec2)) |
167 | ec1, ec2 = self._create_event_classes() | |
168 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
169 | packet_context_field_class=self._packet_context_fc, |
170 | event_header_field_class=self._event_header_fc, | |
171 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
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, | |
b4f45851 SM |
178 | packet_context_field_class=self._packet_context_fc, |
179 | event_header_field_class=self._event_header_fc, | |
180 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
181 | event_classes=(ec1, ec2)) |
182 | ec1, ec2 = self._create_event_classes() | |
183 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
184 | packet_context_field_class=self._packet_context_fc, |
185 | event_header_field_class=self._event_header_fc, | |
186 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
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, | |
b4f45851 SM |
193 | packet_context_field_class=self._packet_context_fc, |
194 | event_header_field_class=self._event_header_fc, | |
195 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
196 | event_classes=(ec1, ec2)) |
197 | ec1, ec2 = self._create_event_classes() | |
198 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
199 | packet_context_field_class=self._packet_context_fc, |
200 | event_header_field_class=self._event_header_fc, | |
201 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
202 | event_classes=(ec1, ec2)) |
203 | self.assertNotEqual(sc1, sc2) | |
204 | ||
b4f45851 | 205 | def test_ne_packet_context_field_class(self): |
9cf643d1 PP |
206 | ec1, ec2 = self._create_event_classes() |
207 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
208 | packet_context_field_class=self._event_context_fc, |
209 | event_header_field_class=self._event_header_fc, | |
210 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
211 | event_classes=(ec1, ec2)) |
212 | ec1, ec2 = self._create_event_classes() | |
213 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
214 | packet_context_field_class=self._packet_context_fc, |
215 | event_header_field_class=self._event_header_fc, | |
216 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
217 | event_classes=(ec1, ec2)) |
218 | self.assertNotEqual(sc1, sc2) | |
219 | ||
b4f45851 | 220 | def test_ne_event_header_field_class(self): |
9cf643d1 PP |
221 | ec1, ec2 = self._create_event_classes() |
222 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
223 | packet_context_field_class=self._packet_context_fc, |
224 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
225 | event_classes=(ec1, ec2)) |
226 | ec1, ec2 = self._create_event_classes() | |
227 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
228 | packet_context_field_class=self._packet_context_fc, |
229 | event_header_field_class=self._event_header_fc, | |
230 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
231 | event_classes=(ec1, ec2)) |
232 | self.assertNotEqual(sc1, sc2) | |
233 | ||
b4f45851 | 234 | def test_ne_event_context_field_class(self): |
9cf643d1 PP |
235 | ec1, ec2 = self._create_event_classes() |
236 | sc1 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
237 | packet_context_field_class=self._packet_context_fc, |
238 | event_header_field_class=self._event_header_fc, | |
239 | event_context_field_class=self._packet_context_fc, | |
9cf643d1 PP |
240 | event_classes=(ec1, ec2)) |
241 | ec1, ec2 = self._create_event_classes() | |
242 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
243 | packet_context_field_class=self._packet_context_fc, |
244 | event_header_field_class=self._event_header_fc, | |
245 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
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, | |
b4f45851 SM |
252 | packet_context_field_class=self._packet_context_fc, |
253 | event_header_field_class=self._event_header_fc, | |
254 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
255 | event_classes=(ec1,)) |
256 | ec1, ec2 = self._create_event_classes() | |
257 | sc2 = bt2.StreamClass(name='my_stream_class', id=12, | |
b4f45851 SM |
258 | packet_context_field_class=self._packet_context_fc, |
259 | event_header_field_class=self._event_header_fc, | |
260 | event_context_field_class=self._event_context_fc, | |
9cf643d1 PP |
261 | event_classes=(ec1, ec2)) |
262 | self.assertNotEqual(sc1, sc2) | |
263 | ||
264 | def test_eq_invalid(self): | |
265 | self.assertFalse(self._sc == 23) |