3 from utils
import run_in_component_init
6 class StreamClassTestCase(unittest
.TestCase
):
9 tc
= comp_self
._create
_trace
_class
(assigns_automatic_stream_class_id
=True)
10 cc
= comp_self
._create
_clock
_class
()
13 self
._tc
, self
._cc
= run_in_component_init(f
)
14 self
._trace
= self
._tc
()
16 def test_create_default(self
):
17 sc
= self
._tc
.create_stream_class()
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 self
.assertFalse(sc
.supports_discarded_events
)
28 self
.assertFalse(sc
.discarded_events_have_default_clock_snapshots
)
29 self
.assertFalse(sc
.supports_discarded_packets
)
30 self
.assertFalse(sc
.discarded_packets_have_default_clock_snapshots
)
32 def test_create_name(self
):
33 sc
= self
._tc
.create_stream_class(name
='bozo')
34 self
.assertEqual(sc
.name
, 'bozo')
36 def test_create_invalid_name(self
):
37 with self
.assertRaises(TypeError):
38 self
._tc
.create_stream_class(name
=17)
40 def test_create_packet_context_field_class(self
):
41 fc
= self
._tc
.create_structure_field_class()
42 sc
= self
._tc
.create_stream_class(packet_context_field_class
=fc
)
43 self
.assertEqual(sc
.packet_context_field_class
, fc
)
45 def test_create_invalid_packet_context_field_class(self
):
46 with self
.assertRaises(TypeError):
47 self
._tc
.create_stream_class(packet_context_field_class
=22)
49 def test_create_event_common_context_field_class(self
):
50 fc
= self
._tc
.create_structure_field_class()
51 sc
= self
._tc
.create_stream_class(event_common_context_field_class
=fc
)
52 self
.assertEqual(sc
.event_common_context_field_class
, fc
)
54 def test_create_invalid_event_common_context_field_class(self
):
55 with self
.assertRaises(TypeError):
56 self
._tc
.create_stream_class(event_common_context_field_class
=22)
58 def test_create_default_clock_class(self
):
59 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
)
60 self
.assertEqual(sc
.default_clock_class
.addr
, self
._cc
.addr
)
62 def test_create_invalid_default_clock_class(self
):
63 with self
.assertRaises(TypeError):
64 self
._tc
.create_stream_class(default_clock_class
=12)
66 def test_automatic_stream_ids(self
):
67 sc
= self
._tc
.create_stream_class(assigns_automatic_stream_id
=True)
68 self
.assertTrue(sc
.assigns_automatic_stream_id
)
70 stream
= self
._trace
.create_stream(sc
)
71 self
.assertIsNotNone(stream
.id)
73 def test_automatic_stream_ids_raises(self
):
74 sc
= self
._tc
.create_stream_class(assigns_automatic_stream_id
=True)
75 self
.assertTrue(sc
.assigns_automatic_stream_id
)
77 with self
.assertRaises(ValueError):
78 self
._trace
.create_stream(sc
, id=123)
80 def test_no_automatic_stream_ids(self
):
81 sc
= self
._tc
.create_stream_class(assigns_automatic_stream_id
=False)
82 self
.assertFalse(sc
.assigns_automatic_stream_id
)
84 stream
= self
._trace
.create_stream(sc
, id=333)
85 self
.assertEqual(stream
.id, 333)
87 def test_no_automatic_stream_ids_raises(self
):
88 sc
= self
._tc
.create_stream_class(assigns_automatic_stream_id
=False)
89 self
.assertFalse(sc
.assigns_automatic_stream_id
)
91 with self
.assertRaises(ValueError):
92 self
._trace
.create_stream(sc
)
94 def test_automatic_event_class_ids(self
):
95 sc
= self
._tc
.create_stream_class(assigns_automatic_event_class_id
=True)
96 self
.assertTrue(sc
.assigns_automatic_event_class_id
)
98 ec
= sc
.create_event_class()
99 self
.assertIsNotNone(ec
.id)
101 def test_automatic_event_class_ids_raises(self
):
102 sc
= self
._tc
.create_stream_class(assigns_automatic_event_class_id
=True)
103 self
.assertTrue(sc
.assigns_automatic_event_class_id
)
105 with self
.assertRaises(ValueError):
106 sc
.create_event_class(id=123)
108 def test_no_automatic_event_class_ids(self
):
109 sc
= self
._tc
.create_stream_class(assigns_automatic_event_class_id
=False)
110 self
.assertFalse(sc
.assigns_automatic_event_class_id
)
112 ec
= sc
.create_event_class(id=333)
113 self
.assertEqual(ec
.id, 333)
115 def test_no_automatic_event_class_ids_raises(self
):
116 sc
= self
._tc
.create_stream_class(assigns_automatic_event_class_id
=False)
117 self
.assertFalse(sc
.assigns_automatic_event_class_id
)
119 with self
.assertRaises(ValueError):
120 sc
.create_event_class()
122 def test_packets_have_default_beginning_clock_snapshot(self
):
123 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
, packets_have_default_beginning_clock_snapshot
=True)
124 self
.assertTrue(sc
.packets_have_default_beginning_clock_snapshot
)
126 def test_packets_have_default_beginning_clock_snapshot_raises(self
):
127 with self
.assertRaises(TypeError):
128 sc
= self
._tc
.create_stream_class(packets_have_default_beginning_clock_snapshot
="something")
130 def test_packets_have_default_end_clock_snapshot(self
):
131 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
, packets_have_default_end_clock_snapshot
=True)
132 self
.assertTrue(sc
.packets_have_default_end_clock_snapshot
)
134 def test_packets_have_default_end_clock_snapshot_raises(self
):
135 with self
.assertRaises(TypeError):
136 sc
= self
._tc
.create_stream_class(packets_have_default_end_clock_snapshot
="something")
138 def test_supports_discarded_events_without_cs(self
):
139 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
140 supports_discarded_events
=True)
141 self
.assertTrue(sc
.supports_discarded_events
)
142 self
.assertFalse(sc
.discarded_events_have_default_clock_snapshots
)
144 def test_supports_discarded_events_with_cs(self
):
145 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
146 supports_discarded_events
=True,
147 discarded_events_have_default_clock_snapshots
=True)
148 self
.assertTrue(sc
.supports_discarded_events
)
149 self
.assertTrue(sc
.discarded_events_have_default_clock_snapshots
)
151 def test_supports_discarded_events_raises_type_error(self
):
152 with self
.assertRaises(TypeError):
153 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
154 supports_discarded_events
=23)
156 def test_discarded_events_have_default_cs_raises_type_error(self
):
157 with self
.assertRaises(TypeError):
158 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
159 discarded_events_have_default_clock_snapshots
=23)
161 def test_does_not_support_discarded_events_raises_with_cs(self
):
162 with self
.assertRaises(ValueError):
163 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
164 discarded_events_have_default_clock_snapshots
=True)
166 def test_supports_discarded_packets_without_cs(self
):
167 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
168 supports_discarded_packets
=True)
169 self
.assertTrue(sc
.supports_discarded_packets
)
170 self
.assertFalse(sc
.discarded_packets_have_default_clock_snapshots
)
172 def test_supports_discarded_packets_with_cs(self
):
173 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
174 supports_discarded_packets
=True,
175 discarded_packets_have_default_clock_snapshots
=True)
176 self
.assertTrue(sc
.supports_discarded_packets
)
177 self
.assertTrue(sc
.discarded_packets_have_default_clock_snapshots
)
179 def test_supports_discarded_packets_raises_type_error(self
):
180 with self
.assertRaises(TypeError):
181 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
182 supports_discarded_packets
=23)
184 def test_discarded_packets_have_default_cs_raises_type_error(self
):
185 with self
.assertRaises(TypeError):
186 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
187 discarded_packets_have_default_clock_snapshots
=23)
189 def test_does_not_support_discarded_packets_raises_with_cs(self
):
190 with self
.assertRaises(ValueError):
191 sc
= self
._tc
.create_stream_class(default_clock_class
=self
._cc
,
192 discarded_packets_have_default_clock_snapshots
=True)
194 def test_trace_class(self
):
195 sc
= self
._tc
.create_stream_class()
196 self
.assertEqual(sc
.trace_class
.addr
, self
._tc
.addr
)
198 def _create_stream_class_with_event_classes(self
):
199 sc
= self
._tc
.create_stream_class(assigns_automatic_event_class_id
=False)
200 ec1
= sc
.create_event_class(id=23)
201 ec2
= sc
.create_event_class(id=17)
204 def test_getitem(self
):
205 sc
, ec1
, ec2
= self
._create
_stream
_class
_with
_event
_classes
()
207 self
.assertEqual(sc
[23].addr
, ec1
.addr
)
208 self
.assertEqual(sc
[17].addr
, ec2
.addr
)
210 def test_getitem_wrong_key_type(self
):
211 sc
, _
, _
= self
._create
_stream
_class
_with
_event
_classes
()
213 with self
.assertRaises(TypeError):
216 def test_getitem_wrong_key(self
):
217 sc
, _
, _
= self
._create
_stream
_class
_with
_event
_classes
()
219 with self
.assertRaises(KeyError):
223 sc
, _
, _
= self
._create
_stream
_class
_with
_event
_classes
()
225 self
.assertEqual(len(sc
), 2)
228 sc
, _
, _
= self
._create
_stream
_class
_with
_event
_classes
()
231 self
.assertEqual(ec_ids
, [17, 23])