Commit | Line | Data |
---|---|---|
9cf643d1 | 1 | import unittest |
8c2367b8 | 2 | from utils import get_default_trace_class |
9cf643d1 PP |
3 | |
4 | ||
5 | class 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) |