Add Babeltrace 2 Python bindings tests
[babeltrace.git] / tests / bindings / python / bt2 / test_event_class.py
diff --git a/tests/bindings/python/bt2/test_event_class.py b/tests/bindings/python/bt2/test_event_class.py
new file mode 100644 (file)
index 0000000..8d21b84
--- /dev/null
@@ -0,0 +1,184 @@
+from bt2 import values
+import unittest
+import copy
+import bt2
+
+
+class EventClassTestCase(unittest.TestCase):
+    def setUp(self):
+        self._context_ft = bt2.StructureFieldType()
+        self._context_ft.append_field('allo', bt2.StringFieldType())
+        self._context_ft.append_field('zola', bt2.IntegerFieldType(18))
+        self._payload_ft = bt2.StructureFieldType()
+        self._payload_ft.append_field('zoom', bt2.StringFieldType())
+        self._ec = bt2.EventClass('my_event')
+        self._ec.id = 18
+        self._ec.context_field_type = self._context_ft
+        self._ec.payload_field_type = self._payload_ft
+
+    def test_create(self):
+        self.assertEqual(self._ec.name, 'my_event')
+        self.assertEqual(self._ec.id, 18)
+        self.assertEqual(self._ec.context_field_type, self._context_ft)
+        self.assertEqual(self._ec.payload_field_type, self._payload_ft)
+
+    def test_create_invalid_no_name(self):
+        with self.assertRaises(TypeError):
+            bt2.EventClass()
+
+    def test_create_full(self):
+        ec = bt2.EventClass(name='name', id=23,
+                            context_field_type=self._context_ft,
+                            payload_field_type=self._payload_ft,
+                            attributes={'model.emf.uri': 'my URI'})
+        self.assertEqual(ec.name, 'name')
+        self.assertEqual(ec.id, 23)
+        self.assertEqual(ec.context_field_type, self._context_ft)
+        self.assertEqual(ec.payload_field_type, self._payload_ft)
+        self.assertEqual(ec.attributes['model.emf.uri'], 'my URI')
+
+    def test_assign_id(self):
+        self._ec.id = 1717
+        self.assertEqual(self._ec.id, 1717)
+
+    def test_assign_invalid_id(self):
+        with self.assertRaises(TypeError):
+            self._ec.id = 'lel'
+
+    def test_assign_context_field_type(self):
+        self._ec.context_field_type = self._payload_ft
+        self.assertEqual(self._ec.context_field_type, self._payload_ft)
+
+    def test_assign_no_context_field_type(self):
+        self._ec.context_field_type = None
+        self.assertIsNone(self._ec.context_field_type)
+
+    def test_assign_invalid_context_field_type(self):
+        with self.assertRaises(TypeError):
+            self._ec.context_field_type = 'lel'
+
+    def test_assign_payload_field_type(self):
+        self._ec.payload_field_type = self._payload_ft
+        self.assertEqual(self._ec.payload_field_type, self._payload_ft)
+
+    def test_assign_no_payload_field_type(self):
+        self._ec.payload_field_type = None
+        self.assertIsNone(self._ec.payload_field_type)
+
+    def test_assign_invalid_payload_field_type(self):
+        with self.assertRaises(TypeError):
+            self._ec.payload_field_type = 'lel'
+
+    def test_stream_class_prop_no_sc(self):
+        self.assertIsNone(self._ec.stream_class)
+
+    def test_stream_class_prop(self):
+        sc = bt2.StreamClass()
+        sc.add_event_class(self._ec)
+        self.assertEqual(self._ec.stream_class.addr, sc.addr)
+
+    def _test_copy(self, cpy):
+        self.assertIsNot(cpy, self._ec)
+        self.assertNotEqual(cpy.addr, self._ec.addr)
+        self.assertEqual(cpy, self._ec)
+
+    def test_copy(self):
+        cpy = copy.copy(self._ec)
+        self._test_copy(cpy)
+        self.assertEqual(self._ec.context_field_type.addr, cpy.context_field_type.addr)
+        self.assertEqual(self._ec.payload_field_type.addr, cpy.payload_field_type.addr)
+
+    def test_deepcopy(self):
+        cpy = copy.deepcopy(self._ec)
+        self._test_copy(cpy)
+        self.assertNotEqual(self._ec.context_field_type.addr, cpy.context_field_type.addr)
+        self.assertNotEqual(self._ec.payload_field_type.addr, cpy.payload_field_type.addr)
+
+    def test_attr_getitem(self):
+        self.assertEqual(self._ec.attributes['id'], 18)
+        self.assertEqual(self._ec.attributes['name'], 'my_event')
+
+    def test_attr_setitem(self):
+        self._ec.attributes['model.emf.uri'] = 'my url'
+        self.assertEqual(self._ec.attributes['model.emf.uri'], 'my url')
+
+    def test_attr_len(self):
+        self.assertTrue(len(self._ec.attributes) != 0)
+
+    def test_attr_iter(self):
+        for name, value in self._ec.attributes.items():
+            self.assertIsInstance(value, values._Value)
+
+            if name == 'name':
+                self.assertEqual(value, 'my_event')
+            elif name == 'id':
+                self.assertEqual(value, 18)
+
+    def test_eq(self):
+        ec1 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        ec2 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        self.assertEqual(ec1, ec2)
+
+    def test_ne_name(self):
+        ec1 = bt2.EventClass(name='name1', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        ec2 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        self.assertNotEqual(ec1, ec2)
+
+    def test_ne_id(self):
+        ec1 = bt2.EventClass(name='name', id=24,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        ec2 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        self.assertNotEqual(ec1, ec2)
+
+    def test_ne_context_field_type(self):
+        ec1 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._payload_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        ec2 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        self.assertNotEqual(ec1, ec2)
+
+    def test_ne_payload_field_type(self):
+        ec1 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._context_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        ec2 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        self.assertNotEqual(ec1, ec2)
+
+    def test_ne_attribute(self):
+        ec1 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my URI'})
+        ec2 = bt2.EventClass(name='name', id=23,
+                             context_field_type=self._context_ft,
+                             payload_field_type=self._payload_ft,
+                             attributes={'model.emf.uri': 'my UR'})
+        self.assertNotEqual(ec1, ec2)
+
+    def test_eq_invalid(self):
+        self.assertFalse(self._ec == 23)
This page took 0.024721 seconds and 4 git commands to generate.