From 7e481c9efd8ae221418561c14867807c9e534747 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 15 Oct 2019 18:29:05 -0400 Subject: [PATCH] tests: test eq and ne operators of fields and values against arbitrary objects and None 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 Reviewed-on: https://review.lttng.org/c/babeltrace/+/2206 Tested-by: jenkins Reviewed-by: Francis Deslauriers --- tests/bindings/python/bt2/test_field.py | 43 +++++++++++++++---------- tests/bindings/python/bt2/test_value.py | 38 ++++++++++++---------- 2 files changed, 47 insertions(+), 34 deletions(-) diff --git a/tests/bindings/python/bt2/test_field.py b/tests/bindings/python/bt2/test_field.py index 99532e10..8252d5eb 100644 --- a/tests/bindings/python/bt2/test_field.py +++ b/tests/bindings/python/bt2/test_field.py @@ -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, diff --git a/tests/bindings/python/bt2/test_value.py b/tests/bindings/python/bt2/test_value.py index c7cfe014..82383762 100644 --- a/tests/bindings/python/bt2/test_value.py +++ b/tests/bindings/python/bt2/test_value.py @@ -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, -- 2.34.1