コード例 #1
0
    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'))