import pytest from ..helpers import Suite @pytest.mark.integration_test @pytest.mark.parametrize('inp', [9, 10, 11, 12]) def test_if_simple(inp): code_py = """ @exported def testEntry(a: i32) -> i32: if a > 10: return 15 return 3 """ exp_result = 15 if inp > 10 else 3 suite = Suite(code_py) result = suite.run_code(inp) assert exp_result == result.returned_value @pytest.mark.integration_test @pytest.mark.skip('Such a return is not how things should be') def test_if_complex(): code_py = """ @exported def testEntry(a: i32) -> i32: if a > 10: return 10 elif a > 0: return a else: return 0 return -1 # Required due to function type """ suite = Suite(code_py) assert 10 == suite.run_code(20).returned_value assert 10 == suite.run_code(10).returned_value assert 8 == suite.run_code(8).returned_value assert 0 == suite.run_code(0).returned_value assert 0 == suite.run_code(-1).returned_value @pytest.mark.integration_test def test_if_nested(): code_py = """ @exported def testEntry(a: i32, b: i32) -> i32: if a > 11: if b > 11: return 3 return 2 if b > 11: return 1 return 0 """ suite = Suite(code_py) assert 3 == suite.run_code(20, 20).returned_value assert 2 == suite.run_code(20, 10).returned_value assert 1 == suite.run_code(10, 20).returned_value assert 0 == suite.run_code(10, 10).returned_value