48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
import pytest
|
|
|
|
from ..helpers import Suite
|
|
|
|
TYPE_LIST = ['f32', 'f64']
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', TYPE_LIST)
|
|
def test_division_float(type_):
|
|
code_py = f"""
|
|
@exported
|
|
def testEntry() -> {type_}:
|
|
return 10.0 / 8.0
|
|
"""
|
|
|
|
result = Suite(code_py).run_code()
|
|
|
|
assert 1.25 == result.returned_value
|
|
assert isinstance(result.returned_value, float)
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', TYPE_LIST)
|
|
def test_division_float_follow_ieee_so_inf_pos(type_):
|
|
code_py = f"""
|
|
@exported
|
|
def testEntry() -> {type_}:
|
|
return 10.0 / 0.0
|
|
"""
|
|
|
|
# WebAssembly dictates that float division follows the IEEE rules
|
|
# https://www.w3.org/TR/wasm-core-1/#-hrefop-fdivmathrmfdiv_n-z_1-z_2
|
|
result = Suite(code_py).run_code()
|
|
assert float('+inf') == result.returned_value
|
|
|
|
@pytest.mark.integration_test
|
|
@pytest.mark.parametrize('type_', TYPE_LIST)
|
|
def test_division_float_follow_ieee_so_inf_neg(type_):
|
|
code_py = f"""
|
|
@exported
|
|
def testEntry() -> {type_}:
|
|
return -10.0 / 0.0
|
|
"""
|
|
|
|
# WebAssembly dictates that float division follows the IEEE rules
|
|
# https://www.w3.org/TR/wasm-core-1/#-hrefop-fdivmathrmfdiv_n-z_1-z_2
|
|
result = Suite(code_py).run_code()
|
|
assert float('-inf') == result.returned_value
|