tests: test eq and ne operators of fields and values against arbitrary objects and...
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 15 Oct 2019 22:29:05 +0000 (18:29 -0400)
committerFrancis Deslauriers <francis.deslauriers@efficios.com>
Wed, 16 Oct 2019 18:31:16 +0000 (14:31 -0400)
The binary operator tests that test comparing fields and values against
arbitrary objects and None are skipped for the eq and ne operators.
This patch modifies the tests to test those operators too.  Unlike other
operators, we don't expect them to raise an Exception.

Change-Id: Ia5f3c64d8223addc436ac23909e36f81814befee
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2206
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
tests/bindings/python/bt2/test_field.py
tests/bindings/python/bt2/test_value.py

index 99532e1005ba537ede48ec63d2a1ac70f1dcb18c..8252d5eb1c2e1f496bb9cf159e2ca82a100f2968 100644 (file)
@@ -343,22 +343,31 @@ class _TestNumericField:
     # `vint` and `vfloat` mean a signed integer value object and a real
     # value object.
 
-    def _test_binop_invalid_unknown(self, op):
-        if op in _COMP_BINOPS:
-            self.skipTest('not testing')
-
+    def _test_binop_unknown(self, op):
         class A:
             pass
 
-        with self.assertRaises(TypeError):
-            op(self._def, A())
-
-    def _test_binop_invalid_none(self, op):
-        if op in _COMP_BINOPS:
-            self.skipTest('not testing')
-
-        with self.assertRaises(TypeError):
-            op(self._def, None)
+        # Operators == and != are defined when comparing the field to an
+        # arbitrary object.
+        if op is operator.eq:
+            self.assertIs(op(self._def, A()), False)
+        elif op is operator.ne:
+            self.assertIs(op(self._def, A()), True)
+        else:
+            # But not other operators.
+            with self.assertRaises(TypeError):
+                op(self._def, A())
+
+    def _test_binop_none(self, op):
+        # Operators == and != are defined when comparing the field to None.
+        if op is operator.eq:
+            self.assertIs(op(self._def, None), False)
+        elif op is operator.ne:
+            self.assertIs(op(self._def, None), True)
+        else:
+            # But not other operators.
+            with self.assertRaises(TypeError):
+                op(self._def, None)
 
     def _test_binop_rhs_false(self, test_cb, op):
         test_cb(op, False)
@@ -725,13 +734,13 @@ def _inject_numeric_testing_methods(cls):
     for name, binop in _BINOPS:
         setattr(
             cls,
-            test_binop_name('invalid_unknown'),
-            partialmethod(_TestNumericField._test_binop_invalid_unknown, op=binop),
+            test_binop_name('unknown'),
+            partialmethod(_TestNumericField._test_binop_unknown, op=binop),
         )
         setattr(
             cls,
-            test_binop_name('invalid_none'),
-            partialmethod(_TestNumericField._test_binop_invalid_none, op=binop),
+            test_binop_name('none'),
+            partialmethod(_TestNumericField._test_binop_none, op=binop),
         )
         setattr(
             cls,
index c7cfe0142ba4f929eec5dcd9800e0a2d11adcac4..82383762dbfda1a25726a0a43db93ef2a7d31216 100644 (file)
@@ -212,19 +212,23 @@ class _TestNumericValue(_TestCopySimple):
     # `vint` and `vfloat` mean a signed integer value object and a real
     # value object.
 
-    def _test_binop_invalid_unknown(self, op):
-        if op in _COMP_BINOPS:
-            self.skipTest('not testing')
-
-        with self.assertRaises(TypeError):
-            op(self._def, object())
-
-    def _test_binop_invalid_none(self, op):
-        if op in _COMP_BINOPS:
-            self.skipTest('not testing')
-
-        with self.assertRaises(TypeError):
-            op(self._def, None)
+    def _test_binop_unknown(self, op):
+        if op is operator.eq:
+            self.assertIs(op(self._def, object()), False)
+        elif op is operator.ne:
+            self.assertIs(op(self._def, object()), True)
+        else:
+            with self.assertRaises(TypeError):
+                op(self._def, object())
+
+    def _test_binop_none(self, op):
+        if op is operator.eq:
+            self.assertIs(op(self._def, None), False)
+        elif op is operator.ne:
+            self.assertIs(op(self._def, None), True)
+        else:
+            with self.assertRaises(TypeError):
+                op(self._def, None)
 
     def _test_binop_rhs_false(self, test_cb, op):
         test_cb(op, False)
@@ -577,13 +581,13 @@ def _inject_numeric_testing_methods(cls):
     for name, binop in _BINOPS:
         setattr(
             cls,
-            test_binop_name('invalid_unknown'),
-            partialmethod(_TestNumericValue._test_binop_invalid_unknown, op=binop),
+            test_binop_name('unknown'),
+            partialmethod(_TestNumericValue._test_binop_unknown, op=binop),
         )
         setattr(
             cls,
-            test_binop_name('invalid_none'),
-            partialmethod(_TestNumericValue._test_binop_invalid_none, op=binop),
+            test_binop_name('none'),
+            partialmethod(_TestNumericValue._test_binop_none, op=binop),
         )
         setattr(
             cls,
This page took 0.027369 seconds and 4 git commands to generate.