def test_valid_pack(self): """Test packing valid fixed point values.""" precision = 8 field = ('a', 'F', 'i', precision) self.assertTrue(ElementFixedPoint.valid(field)) elem = ElementFixedPoint(field, Mode.Big) test_values = [ ({'a': '4'}, 4), ({'a': 13.5}, 13.5), ({'a': '13.5'}, '13.5'), ({'a': '13.500'}, '13.500'), ({'a': Decimal('13.500')}, '13.500'), ({'a': 1.1 + 2.2}, '3.3'), ] multiplier = 2 ** precision for (in_val, out_val) in test_values: ret = elem.pack(in_val) if not isinstance(out_val, Decimal): out_val = Decimal(out_val) self.assertEqual(ret, int((out_val * multiplier)).to_bytes(4, 'big'))