bt2: rename object's own BT class property to `cls`
[babeltrace.git] / tests / bindings / python / bt2 / test_trace.py
CommitLineData
9cf643d1 1import unittest
8c2367b8 2from utils import get_default_trace_class
9cf643d1
PP
3
4
5class TraceTestCase(unittest.TestCase):
6 def setUp(self):
8c2367b8 7 self._tc = get_default_trace_class()
9cf643d1
PP
8
9 def test_create_default(self):
8c2367b8
SM
10 trace = self._tc()
11 self.assertEqual(trace.name, None)
811644b8
PP
12
13 def test_create_full(self):
8c2367b8
SM
14 trace = self._tc(name='my name')
15 self.assertEqual(trace.name, 'my name')
9cf643d1 16
8c2367b8 17 def test_create_invalid_name(self):
9cf643d1 18 with self.assertRaises(TypeError):
8c2367b8 19 self._tc(name=17)
9cf643d1 20
8c2367b8
SM
21 def test_len(self):
22 trace = self._tc()
23 sc = self._tc.create_stream_class()
24 self.assertEqual(len(trace), 0)
9cf643d1 25
8c2367b8
SM
26 trace.create_stream(sc)
27 self.assertEqual(len(trace), 1)
9cf643d1 28
8c2367b8
SM
29 def _create_trace_with_some_streams(self):
30 sc = self._tc.create_stream_class(assigns_automatic_stream_id=False)
31 trace = self._tc()
32 trace.create_stream(sc, id=12)
33 trace.create_stream(sc, id=15)
34 trace.create_stream(sc, id=17)
9cf643d1 35
8c2367b8 36 return trace
9cf643d1
PP
37
38 def test_iter(self):
8c2367b8
SM
39 trace = self._create_trace_with_some_streams()
40 stream_ids = set(trace)
41 self.assertEqual(stream_ids, {12, 15, 17})
9cf643d1 42
8c2367b8
SM
43 def test_getitem(self):
44 trace = self._create_trace_with_some_streams()
9cf643d1 45
8c2367b8 46 self.assertEqual(trace[12].id, 12)
9cf643d1 47
8c2367b8
SM
48 def test_getitem_invalid_key(self):
49 trace = self._create_trace_with_some_streams()
9cf643d1 50 with self.assertRaises(KeyError):
8c2367b8 51 trace[18]
9cf643d1 52
8c2367b8
SM
53 def test_destruction_listener(self):
54 def on_trace_class_destruction(trace_class):
55 nonlocal trace_class_destroyed
56 trace_class_destroyed = True
811644b8 57
8c2367b8
SM
58 def on_trace_destruction(trace):
59 nonlocal trace_destroyed
60 trace_destroyed = True
811644b8 61
8c2367b8
SM
62 trace_destroyed = False
63 trace_class_destroyed = False
811644b8 64
8c2367b8
SM
65 trace_class = get_default_trace_class()
66 stream_class = trace_class.create_stream_class()
67 trace = trace_class()
68 stream = trace.create_stream(stream_class)
811644b8 69
8c2367b8
SM
70 trace_class.add_destruction_listener(on_trace_class_destruction)
71 trace.add_destruction_listener(on_trace_destruction)
811644b8 72
8c2367b8
SM
73 self.assertFalse(trace_class_destroyed)
74 self.assertFalse(trace_destroyed)
9cf643d1 75
8c2367b8 76 del trace
9cf643d1 77
8c2367b8
SM
78 self.assertFalse(trace_class_destroyed)
79 self.assertFalse(trace_destroyed)
9cf643d1 80
8c2367b8 81 del stream
9cf643d1 82
8c2367b8
SM
83 self.assertFalse(trace_class_destroyed)
84 self.assertTrue(trace_destroyed)
9cf643d1 85
8c2367b8 86 del trace_class
9cf643d1 87
8c2367b8
SM
88 self.assertFalse(trace_class_destroyed)
89 self.assertTrue(trace_destroyed)
9cf643d1 90
8c2367b8 91 del stream_class
9cf643d1 92
8c2367b8
SM
93 self.assertTrue(trace_class_destroyed)
94 self.assertTrue(trace_destroyed)
This page took 0.042195 seconds and 4 git commands to generate.