test_rarray.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """Unit tests for RArray types."""
  2. from __future__ import annotations
  3. import unittest
  4. from mypyc.common import PLATFORM_SIZE
  5. from mypyc.ir.rtypes import (
  6. RArray,
  7. bool_rprimitive,
  8. compute_rtype_alignment,
  9. compute_rtype_size,
  10. int_rprimitive,
  11. )
  12. class TestRArray(unittest.TestCase):
  13. def test_basics(self) -> None:
  14. a = RArray(int_rprimitive, 10)
  15. assert a.item_type == int_rprimitive
  16. assert a.length == 10
  17. def test_str_conversion(self) -> None:
  18. a = RArray(int_rprimitive, 10)
  19. assert str(a) == "int[10]"
  20. assert repr(a) == "<RArray <RPrimitive builtins.int>[10]>"
  21. def test_eq(self) -> None:
  22. a = RArray(int_rprimitive, 10)
  23. assert a == RArray(int_rprimitive, 10)
  24. assert a != RArray(bool_rprimitive, 10)
  25. assert a != RArray(int_rprimitive, 9)
  26. def test_hash(self) -> None:
  27. assert hash(RArray(int_rprimitive, 10)) == hash(RArray(int_rprimitive, 10))
  28. assert hash(RArray(bool_rprimitive, 5)) == hash(RArray(bool_rprimitive, 5))
  29. def test_alignment(self) -> None:
  30. a = RArray(int_rprimitive, 10)
  31. assert compute_rtype_alignment(a) == PLATFORM_SIZE
  32. b = RArray(bool_rprimitive, 55)
  33. assert compute_rtype_alignment(b) == 1
  34. def test_size(self) -> None:
  35. a = RArray(int_rprimitive, 9)
  36. assert compute_rtype_size(a) == 9 * PLATFORM_SIZE
  37. b = RArray(bool_rprimitive, 3)
  38. assert compute_rtype_size(b) == 3