| """Unit tests for RArray types.""" |
| |
| from __future__ import annotations |
| |
| import unittest |
| |
| from mypyc.common import PLATFORM_SIZE |
| from mypyc.ir.rtypes import ( |
| RArray, |
| bool_rprimitive, |
| compute_rtype_alignment, |
| compute_rtype_size, |
| int_rprimitive, |
| ) |
| |
| |
| class TestRArray(unittest.TestCase): |
| def test_basics(self) -> None: |
| a = RArray(int_rprimitive, 10) |
| assert a.item_type == int_rprimitive |
| assert a.length == 10 |
| |
| def test_str_conversion(self) -> None: |
| a = RArray(int_rprimitive, 10) |
| assert str(a) == "int[10]" |
| assert repr(a) == "<RArray <RPrimitive builtins.int>[10]>" |
| |
| def test_eq(self) -> None: |
| a = RArray(int_rprimitive, 10) |
| assert a == RArray(int_rprimitive, 10) |
| assert a != RArray(bool_rprimitive, 10) |
| assert a != RArray(int_rprimitive, 9) |
| |
| def test_hash(self) -> None: |
| assert hash(RArray(int_rprimitive, 10)) == hash(RArray(int_rprimitive, 10)) |
| assert hash(RArray(bool_rprimitive, 5)) == hash(RArray(bool_rprimitive, 5)) |
| |
| def test_alignment(self) -> None: |
| a = RArray(int_rprimitive, 10) |
| assert compute_rtype_alignment(a) == PLATFORM_SIZE |
| b = RArray(bool_rprimitive, 55) |
| assert compute_rtype_alignment(b) == 1 |
| |
| def test_size(self) -> None: |
| a = RArray(int_rprimitive, 9) |
| assert compute_rtype_size(a) == 9 * PLATFORM_SIZE |
| b = RArray(bool_rprimitive, 3) |
| assert compute_rtype_size(b) == 3 |