コード例 #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'))
コード例 #2
0
    def test_valid(self):
        """Test field formats that are valid fixedpoint elements."""

        test_fields = [
            ('a', 'F', 'i', 8),
            ('b', 'F', 'h', 4),
            ('c', 'F', 'h', 7),
        ]

        for field in test_fields:
            with self.subTest(field):  # pylint: disable=no-member
                out = ElementFixedPoint.valid(field)
                self.assertTrue(out)
コード例 #3
0
    def test_valid(self):
        """Test field formats that are valid fixedpoint elements."""

        test_fields = [
            ('a', 'F', 'i', 8),
            ('b', 'F', 'h', 4),
            ('c', 'F', 'h', 7),
        ]

        for field in test_fields:
            with self.subTest(field):  # pylint: disable=no-member
                out = ElementFixedPoint.valid(field)
                self.assertTrue(out)
コード例 #4
0
    def test_not_valid(self):
        """Test field formats that are not valid fixedpoint elements."""

        test_fields = [
            ('a', 'PF', 16, 8),  # Must have numbers preceding the F
            ('b', '3D', 8, 8),  # D is not a valid prefix. Must be F for fixedpoint
            ('c', 'D', 8.0, 8),  # Must be int, not float
            ('d', 'D', 8, 16),  # bytes must be larger than precision.
            ('e', 'D', 8),  # Must be of length four
        ]

        for field in test_fields:
            with self.subTest(field):  # pylint: disable=no-member
                out = ElementFixedPoint.valid(field)
                self.assertFalse(out)