102 lines
1.9 KiB
Python
102 lines
1.9 KiB
Python
import pytest
|
|
|
|
from phasm.type3.entry import Type3Exception
|
|
|
|
from ..helpers import Suite
|
|
|
|
INT_TYPES = ['u8', 'u32', 'u64', 'i8', 'i32', 'i64']
|
|
FLOAT_TYPES = ['f32', 'f64']
|
|
|
|
TYPE_MAP = {
|
|
'u8': int,
|
|
'u32': int,
|
|
'u64': int,
|
|
'i8': int,
|
|
'i32': int,
|
|
'i64': int,
|
|
'f32': float,
|
|
'f64': float,
|
|
}
|
|
|
|
@pytest.mark.integration_test
|
|
def test_equals_not_implemented():
|
|
code_py = """
|
|
class Foo:
|
|
val: i32
|
|
|
|
@exported
|
|
def testEntry(x: Foo, y: Foo) -> Foo:
|
|
return x + y
|
|
"""
|
|
|
|
with pytest.raises(Type3Exception, match='Foo does not implement the Num type class'):
|
|
Suite(code_py).run_code()
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', INT_TYPES)
|
|
def test_equals_int_same(type_):
|
|
code_py = f"""
|
|
CONSTANT0: {type_} = 10
|
|
|
|
CONSTANT1: {type_} = 10
|
|
|
|
@exported
|
|
def testEntry() -> bool:
|
|
return CONSTANT0 == CONSTANT1
|
|
"""
|
|
|
|
result = Suite(code_py).run_code()
|
|
|
|
assert True is result.returned_value
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', INT_TYPES)
|
|
def test_equals_int_different(type_):
|
|
code_py = f"""
|
|
CONSTANT0: {type_} = 10
|
|
|
|
CONSTANT1: {type_} = 3
|
|
|
|
@exported
|
|
def testEntry() -> bool:
|
|
return CONSTANT0 == CONSTANT1
|
|
"""
|
|
|
|
result = Suite(code_py).run_code()
|
|
|
|
assert False is result.returned_value
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', FLOAT_TYPES)
|
|
def test_equals_float_same(type_):
|
|
code_py = f"""
|
|
CONSTANT0: {type_} = 10.125
|
|
|
|
CONSTANT1: {type_} = 10.125
|
|
|
|
@exported
|
|
def testEntry() -> bool:
|
|
return CONSTANT0 == CONSTANT1
|
|
"""
|
|
|
|
result = Suite(code_py).run_code()
|
|
|
|
assert True is result.returned_value
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', FLOAT_TYPES)
|
|
def test_equals_float_different(type_):
|
|
code_py = f"""
|
|
CONSTANT0: {type_} = 10.32
|
|
|
|
CONSTANT1: {type_} = 10.33
|
|
|
|
@exported
|
|
def testEntry() -> bool:
|
|
return CONSTANT0 == CONSTANT1
|
|
"""
|
|
|
|
result = Suite(code_py).run_code()
|
|
|
|
assert False is result.returned_value
|