42 lines
879 B
Python
42 lines
879 B
Python
import pytest
|
|
|
|
from phasm.type3.entry import Type3Exception
|
|
|
|
from ..helpers import Suite
|
|
|
|
|
|
@pytest.mark.integration_test
|
|
def test_foldable_sum():
|
|
code_py = """
|
|
@exported
|
|
def testEntry(x: i32[5]) -> i32:
|
|
return sum(x)
|
|
"""
|
|
|
|
result = Suite(code_py).run_code((4, 5, 6, 7, 8, ))
|
|
|
|
assert 30 == result.returned_value
|
|
|
|
|
|
@pytest.mark.integration_test
|
|
def test_foldable_invalid_return_type():
|
|
code_py = """
|
|
@exported
|
|
def testEntry(x: i32[5]) -> f64:
|
|
return sum(x)
|
|
"""
|
|
|
|
with pytest.raises(Type3Exception, match='f64 must be i32 instead'):
|
|
Suite(code_py).run_code((4, 5, 6, 7, 8, ))
|
|
|
|
@pytest.mark.integration_test
|
|
def test_foldable_not_foldable():
|
|
code_py = """
|
|
@exported
|
|
def testEntry(x: u8) -> u8:
|
|
return sum(x)
|
|
"""
|
|
|
|
with pytest.raises(Type3Exception, match='Missing type class instantation: Foldable u8'):
|
|
Suite(code_py).run_code()
|