from hypothesis import given from rithm.integer import Int from tests.utils import IntWithBuiltin, is_equivalent_to_builtin_int from . import strategies @given(strategies.ints, strategies.ints) def test_alternatives(minuend: Int, subtrahend: Int) -> None: assert minuend - subtrahend == minuend + (-subtrahend) @given(strategies.ints, strategies.ints_with_builtins) def test_polymorphism( minuend: Int, subtrahend_with_builtin: IntWithBuiltin ) -> None: subtrahend, subtrahend_builtin = subtrahend_with_builtin assert minuend - subtrahend == minuend - subtrahend_builtin @given(strategies.ints_with_builtins, strategies.ints_with_builtins) def test_connection_with_builtin( minuend_with_builtin: IntWithBuiltin, subtrahend_with_builtin: IntWithBuiltin, ) -> None: minuend, minuend_builtin = minuend_with_builtin subtrahend, subtrahend_builtin = subtrahend_with_builtin assert is_equivalent_to_builtin_int( minuend - subtrahend, minuend_builtin - subtrahend_builtin )