Exemple #1
0
    def test_value_simple(self):
        t = HUnion(
            (uint8_t, "unsigned"),
            (int8_t, "signed"),
        )
        v = t.fromPy(None)

        v.unsigned = mask(8)
        self.assertEqual(int(v.signed), -1)

        v.signed = 0
        self.assertEqual(int(v.unsigned), 0)
Exemple #2
0
    def test_value_simple(self):
        t = HUnion(
                (uint8_t, "unsigned"),
                (int8_t, "signed"),
            )
        v = t.fromPy(None)

        v.unsigned = mask(8)
        self.assertEqual(int(v.signed), -1)

        v.signed = 0
        self.assertEqual(int(v.unsigned), 0)
Exemple #3
0
    def test_value_array_of_struct_to_bits(self):
        t = HUnion((HStruct(
            (uint16_t, "a"),
            (uint8_t, "b"),
        )[3], "arr"), (Bits(24 * 3), "bits"))

        v = t.fromPy(None)
        for i in range(len(v.arr)):
            v.arr[i] = {"a": i + 1, "b": (i + 1) * 3}

        self.assertEqual(
            int(v.bits), 1 | 3 << 16 | 2 << 24 | 6 << (24 + 16) | 3 <<
            (2 * 24) | 9 << (2 * 24 + 16))
Exemple #4
0
 def test_value_array_of_struct_to_bits(self):
     t = HUnion(
             (HStruct(
                 (uint16_t, "a"),
                 (uint8_t, "b"),
                 )[3], "arr"),
             (Bits(24 * 3), "bits")
         )
     
     v = t.fromPy(None)
     for i in range(len(v.arr)):
         v.arr[i] = {"a":i + 1, "b": (i + 1) * 3}
     
     self.assertEqual(int(v.bits), 1 | 3 << 16 | 2 << 24 | 6 << (24 + 16) | 3 << (2 * 24) | 9 << (2 * 24 + 16))
Exemple #5
0
    def test_value_array_and_bits(self):
        t = HUnion(
                (uint32_t, "bits"),
                (uint8_t[4], "arr"),
            )

        v = t.fromPy(None)

        b = (4 << (3 * 8)) | (3 << (2 * 8)) | (2 << 8) | 1
        v.bits = b

        for i, item in enumerate(v.arr):
            self.assertEqual(int(item), i + 1)
        
        self.assertEqual(int(v.bits), b)
Exemple #6
0
    def test_value_array_and_bits(self):
        t = HUnion(
            (uint32_t, "bits"),
            (uint8_t[4], "arr"),
        )

        v = t.fromPy(None)

        b = (4 << (3 * 8)) | (3 << (2 * 8)) | (2 << 8) | 1
        v.bits = b

        for i, item in enumerate(v.arr):
            self.assertEqual(int(item), i + 1)

        self.assertEqual(int(v.bits), b)
Exemple #7
0
    def test_value_array_toArray(self):
        t = HUnion(
                (uint16_t[2], "arr16b"),
                (int8_t[4], "arr8b"),
            )

        v = t.fromPy(None)

        for i in range(len(v.arr16b)):
            v.arr16b[i] = i + 1

        for i, item in enumerate(v.arr8b):
            if (i + 1) % 2 == 0:
                v = 0
            else:
                v = i // 2 + 1
            self.assertEqual(int(item), v)
Exemple #8
0
    def test_value_array_toArray(self):
        t = HUnion(
            (uint16_t[2], "arr16b"),
            (int8_t[4], "arr8b"),
        )

        v = t.fromPy(None)

        for i in range(len(v.arr16b)):
            v.arr16b[i] = i + 1

        for i, item in enumerate(v.arr8b):
            if (i + 1) % 2 == 0:
                v = 0
            else:
                v = i // 2 + 1
            self.assertEqual(int(item), v)
Exemple #9
0
    def test_value_struct_and_bits(self):
        t = HUnion(
                (uint16_t, "bits"),
                (HStruct(
                  (uint8_t, "lower"),
                  (uint8_t, "upper"),
                 ), "struct"),
            )

        v = t.fromPy(None)

        v.struct.upper = 1
        self.assertEqual(v.bits.val, 1 << 8)
        self.assertEqual(v.bits.vldMask, mask(8) << 8)
        
        v.struct.lower = 1
        self.assertEqual(v.bits.val, (1 << 8) | 1)
        self.assertEqual(v.bits.vldMask, mask(16))

        v.bits = 2

        self.assertEqual(int(v.struct.lower), 2)
        self.assertEqual(int(v.struct.upper), 0)
Exemple #10
0
    def test_value_struct_and_bits(self):
        t = HUnion(
            (uint16_t, "bits"),
            (HStruct(
                (uint8_t, "lower"),
                (uint8_t, "upper"),
            ), "struct"),
        )

        v = t.fromPy(None)

        v.struct.upper = 1
        self.assertEqual(v.bits.val, 1 << 8)
        self.assertEqual(v.bits.vldMask, mask(8) << 8)

        v.struct.lower = 1
        self.assertEqual(v.bits.val, (1 << 8) | 1)
        self.assertEqual(v.bits.vldMask, mask(16))

        v.bits = 2

        self.assertEqual(int(v.struct.lower), 2)
        self.assertEqual(int(v.struct.upper), 0)