Be more strict in the _value_to_int() functions: require that the
parameter's type is an instance of `numbers.Integral` instead of
`numbers.Real` to make the following raise a type error:
my_int_field.value = 17.5
I believe it's better to be strict here than to arbitrarily choose to
use the parameter's value's floor.
RealValue._value_to_float() already requires a real value, so this is
just analogous.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: I3b981e90f7e2c133fa4d56e79333c4fe600eca8b
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1569
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Reviewed-by: Simon Marchi <simon.marchi@efficios.com>
_NAME = 'Unsigned integer'
def _value_to_int(self, value):
_NAME = 'Unsigned integer'
def _value_to_int(self, value):
- if not isinstance(value, numbers.Real):
- raise TypeError('expecting a real number object')
+ if not isinstance(value, numbers.Integral):
+ raise TypeError('expecting an integral number object')
value = int(value)
utils._check_uint64(value)
value = int(value)
utils._check_uint64(value)
_NAME = 'Signed integer'
def _value_to_int(self, value):
_NAME = 'Signed integer'
def _value_to_int(self, value):
- if not isinstance(value, numbers.Real):
- raise TypeError('expecting a real number object')
+ if not isinstance(value, numbers.Integral):
+ raise TypeError('expecting an integral number object')
value = int(value)
utils._check_int64(value)
value = int(value)
utils._check_int64(value)
self._def.value = field
self.assertEqual(self._def, raw)
self._def.value = field
self.assertEqual(self._def, raw)
- def test_assign_float(self):
- raw = 123.456
- self._def.value = raw
- self.assertEqual(self._def, int(raw))
-
def test_assign_invalid_type(self):
with self.assertRaises(TypeError):
self._def.value = 'yes'
def test_assign_invalid_type(self):
with self.assertRaises(TypeError):
self._def.value = 'yes'