7 class StreamClassTestCase(unittest
.TestCase
):
9 self
._packet
_context
_ft
= bt2
.StructureFieldType()
10 self
._packet
_context
_ft
.append_field('menu', bt2
.FloatingPointNumberFieldType())
11 self
._packet
_context
_ft
.append_field('sticker', bt2
.StringFieldType())
12 self
._event
_header
_ft
= bt2
.StructureFieldType()
13 self
._event
_header
_ft
.append_field('id', bt2
.IntegerFieldType(19))
14 self
._event
_context
_ft
= bt2
.StructureFieldType()
15 self
._event
_context
_ft
.append_field('msg', bt2
.StringFieldType())
16 self
._ec
1, self
._ec
2 = self
._create
_event
_classes
()
17 self
._sc
= bt2
.StreamClass(name
='my_stream_class', id=12,
18 packet_context_field_type
=self
._packet
_context
_ft
,
19 event_header_field_type
=self
._event
_header
_ft
,
20 event_context_field_type
=self
._event
_context
_ft
,
21 event_classes
=(self
._ec
1, self
._ec
2))
23 def _create_event_classes(self
):
24 context_ft
= bt2
.StructureFieldType()
25 context_ft
.append_field('allo', bt2
.StringFieldType())
26 context_ft
.append_field('zola', bt2
.IntegerFieldType(18))
27 payload_ft
= bt2
.StructureFieldType()
28 payload_ft
.append_field('zoom', bt2
.StringFieldType())
29 ec1
= bt2
.EventClass('event23', id=23, context_field_type
=context_ft
,
30 payload_field_type
=payload_ft
)
31 ec2
= bt2
.EventClass('event17', id=17, context_field_type
=payload_ft
,
32 payload_field_type
=context_ft
)
35 def test_create(self
):
36 self
.assertEqual(self
._sc
.name
, 'my_stream_class')
37 self
.assertEqual(self
._sc
.id, 12)
38 self
.assertEqual(self
._sc
.packet_context_field_type
, self
._packet
_context
_ft
)
39 self
.assertEqual(self
._sc
.event_header_field_type
, self
._event
_header
_ft
)
40 self
.assertEqual(self
._sc
.event_context_field_type
, self
._event
_context
_ft
)
41 self
.assertEqual(self
._sc
['event23'], self
._ec
1)
42 self
.assertEqual(self
._sc
['event17'], self
._ec
2)
44 def test_assign_name(self
):
46 self
.assertEqual(self
._sc
.name
, 'lel')
48 def test_assign_invalid_name(self
):
49 with self
.assertRaises(TypeError):
52 def test_assign_id(self
):
54 self
.assertEqual(self
._sc
.id, 1717)
56 def test_assign_invalid_id(self
):
57 with self
.assertRaises(TypeError):
60 def test_assign_packet_context_field_type(self
):
61 self
._sc
.packet_context_field_type
= self
._event
_context
_ft
62 self
.assertEqual(self
._sc
.packet_context_field_type
, self
._event
_context
_ft
)
64 def test_assign_no_packet_context_field_type(self
):
65 self
._sc
.packet_context_field_type
= None
66 self
.assertIsNone(self
._sc
.packet_context_field_type
)
68 def test_assign_invalid_packet_context_field_type(self
):
69 with self
.assertRaises(TypeError):
70 self
._sc
.packet_context_field_type
= 'lel'
72 def test_assign_event_header_field_type(self
):
73 self
._sc
.event_header_field_type
= self
._event
_header
_ft
74 self
.assertEqual(self
._sc
.event_header_field_type
, self
._event
_header
_ft
)
76 def test_assign_no_event_header_field_type(self
):
77 self
._sc
.event_header_field_type
= None
78 self
.assertIsNone(self
._sc
.event_header_field_type
)
80 def test_assign_invalid_event_header_field_type(self
):
81 with self
.assertRaises(TypeError):
82 self
._sc
.event_header_field_type
= 'lel'
84 def test_assign_event_context_field_type(self
):
85 self
._sc
.event_context_field_type
= self
._packet
_context
_ft
86 self
.assertEqual(self
._sc
.event_context_field_type
, self
._packet
_context
_ft
)
88 def test_assign_no_event_context_field_type(self
):
89 self
._sc
.event_context_field_type
= None
90 self
.assertIsNone(self
._sc
.event_context_field_type
)
92 def test_assign_invalid_event_context_field_type(self
):
93 with self
.assertRaises(TypeError):
94 self
._sc
.event_context_field_type
= 'lel'
96 def test_trace_prop_no_tc(self
):
97 self
.assertIsNone(self
._sc
.trace
)
99 def test_trace_prop(self
):
101 tc
.add_stream_class(self
._sc
)
102 self
.assertEqual(self
._sc
.trace
.addr
, tc
.addr
)
104 def _test_copy(self
, cpy
):
105 self
.assertIsNot(cpy
, self
._sc
)
106 self
.assertNotEqual(cpy
.addr
, self
._sc
.addr
)
107 self
.assertEqual(cpy
, self
._sc
)
110 cpy
= copy
.copy(self
._sc
)
112 self
.assertEqual(self
._sc
.packet_context_field_type
.addr
, cpy
.packet_context_field_type
.addr
)
113 self
.assertEqual(self
._sc
.event_header_field_type
.addr
, cpy
.event_header_field_type
.addr
)
114 self
.assertEqual(self
._sc
.event_context_field_type
.addr
, cpy
.event_context_field_type
.addr
)
116 def test_deepcopy(self
):
117 cpy
= copy
.deepcopy(self
._sc
)
119 self
.assertNotEqual(self
._sc
.packet_context_field_type
.addr
, cpy
.packet_context_field_type
.addr
)
120 self
.assertNotEqual(self
._sc
.event_header_field_type
.addr
, cpy
.event_header_field_type
.addr
)
121 self
.assertNotEqual(self
._sc
.event_context_field_type
.addr
, cpy
.event_context_field_type
.addr
)
123 def test_getitem(self
):
124 self
.assertEqual(self
._sc
['event23'], self
._ec
1)
125 self
.assertEqual(self
._sc
['event17'], self
._ec
2)
127 def test_getitem_wrong_key_type(self
):
128 with self
.assertRaises(TypeError):
131 def test_getitem_wrong_key(self
):
132 with self
.assertRaises(KeyError):
136 self
.assertEqual(len(self
._sc
), 2)
139 for name
, event_class
in self
._sc
.items():
140 self
.assertIsInstance(event_class
, bt2
.EventClass
)
142 if name
== 'event23':
143 self
.assertEqual(event_class
, self
._ec
1)
144 elif name
== 'event17':
145 self
.assertEqual(event_class
, self
._ec
2)
147 def test_event_class_with_id(self
):
148 self
.assertEqual(self
._sc
.event_class_with_id(23), self
._ec
1)
150 def test_event_class_with_id_wrong_type(self
):
151 with self
.assertRaises(TypeError):
152 self
._sc
.event_class_with_id('yes')
155 ec1
, ec2
= self
._create
_event
_classes
()
156 sc1
= bt2
.StreamClass(name
='my_stream_class', id=12,
157 packet_context_field_type
=self
._packet
_context
_ft
,
158 event_header_field_type
=self
._event
_header
_ft
,
159 event_context_field_type
=self
._event
_context
_ft
,
160 event_classes
=(ec1
, ec2
))
161 ec1
, ec2
= self
._create
_event
_classes
()
162 sc2
= 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 self
.assertEqual(sc1
, sc2
)
169 def test_ne_name(self
):
170 ec1
, ec2
= self
._create
_event
_classes
()
171 sc1
= bt2
.StreamClass(name
='my_stream_class1', id=12,
172 packet_context_field_type
=self
._packet
_context
_ft
,
173 event_header_field_type
=self
._event
_header
_ft
,
174 event_context_field_type
=self
._event
_context
_ft
,
175 event_classes
=(ec1
, ec2
))
176 ec1
, ec2
= self
._create
_event
_classes
()
177 sc2
= bt2
.StreamClass(name
='my_stream_class', 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 self
.assertNotEqual(sc1
, sc2
)
184 def test_ne_id(self
):
185 ec1
, ec2
= self
._create
_event
_classes
()
186 sc1
= bt2
.StreamClass(name
='my_stream_class', id=13,
187 packet_context_field_type
=self
._packet
_context
_ft
,
188 event_header_field_type
=self
._event
_header
_ft
,
189 event_context_field_type
=self
._event
_context
_ft
,
190 event_classes
=(ec1
, ec2
))
191 ec1
, ec2
= self
._create
_event
_classes
()
192 sc2
= bt2
.StreamClass(name
='my_stream_class', id=12,
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 self
.assertNotEqual(sc1
, sc2
)
199 def test_ne_packet_context_field_type(self
):
200 ec1
, ec2
= self
._create
_event
_classes
()
201 sc1
= bt2
.StreamClass(name
='my_stream_class', id=12,
202 packet_context_field_type
=self
._event
_context
_ft
,
203 event_header_field_type
=self
._event
_header
_ft
,
204 event_context_field_type
=self
._event
_context
_ft
,
205 event_classes
=(ec1
, ec2
))
206 ec1
, ec2
= self
._create
_event
_classes
()
207 sc2
= bt2
.StreamClass(name
='my_stream_class', id=12,
208 packet_context_field_type
=self
._packet
_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 self
.assertNotEqual(sc1
, sc2
)
214 def test_ne_event_header_field_type(self
):
215 ec1
, ec2
= self
._create
_event
_classes
()
216 sc1
= bt2
.StreamClass(name
='my_stream_class', id=12,
217 packet_context_field_type
=self
._packet
_context
_ft
,
218 event_context_field_type
=self
._event
_context
_ft
,
219 event_classes
=(ec1
, ec2
))
220 ec1
, ec2
= self
._create
_event
_classes
()
221 sc2
= bt2
.StreamClass(name
='my_stream_class', id=12,
222 packet_context_field_type
=self
._packet
_context
_ft
,
223 event_header_field_type
=self
._event
_header
_ft
,
224 event_context_field_type
=self
._event
_context
_ft
,
225 event_classes
=(ec1
, ec2
))
226 self
.assertNotEqual(sc1
, sc2
)
228 def test_ne_event_context_field_type(self
):
229 ec1
, ec2
= self
._create
_event
_classes
()
230 sc1
= bt2
.StreamClass(name
='my_stream_class', id=12,
231 packet_context_field_type
=self
._packet
_context
_ft
,
232 event_header_field_type
=self
._event
_header
_ft
,
233 event_context_field_type
=self
._packet
_context
_ft
,
234 event_classes
=(ec1
, ec2
))
235 ec1
, ec2
= self
._create
_event
_classes
()
236 sc2
= 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
._event
_context
_ft
,
240 event_classes
=(ec1
, ec2
))
241 self
.assertNotEqual(sc1
, sc2
)
243 def test_ne_event_class(self
):
244 ec1
, ec2
= self
._create
_event
_classes
()
245 sc1
= bt2
.StreamClass(name
='my_stream_class', id=12,
246 packet_context_field_type
=self
._packet
_context
_ft
,
247 event_header_field_type
=self
._event
_header
_ft
,
248 event_context_field_type
=self
._event
_context
_ft
,
249 event_classes
=(ec1
,))
250 ec1
, ec2
= self
._create
_event
_classes
()
251 sc2
= 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
, ec2
))
256 self
.assertNotEqual(sc1
, sc2
)
258 def test_eq_invalid(self
):
259 self
.assertFalse(self
._sc
== 23)