rustpy 0.3.0

Bindings of Rust programming language primitives.
Documentation
from contextlib import suppress
from typing import Tuple

from hypothesis import given

from tests.utils import (Integer,
                         equivalence)
from . import strategies


@given(strategies.integers_pairs)
def test_basic(pair: Tuple[Integer, Integer]) -> None:
    first, second = pair

    with suppress(OverflowError):
        result = first - second

        assert isinstance(result, type(first))


@given(strategies.integers_with_zeros)
def test_diagonal(integer_with_zero: Tuple[Integer, Integer]) -> None:
    integer, zero = integer_with_zero

    assert integer - integer == zero


@given(strategies.integers_pairs)
def test_commutative_case(pair: Tuple[Integer, Integer]) -> None:
    first, second = pair

    with suppress(OverflowError):
        assert equivalence(first - second == second - first, first == second)


@given(strategies.integers_with_zeros)
def test_right_neutral_element(
        integer_with_zero: Tuple[Integer, Integer]
) -> None:
    integer, zero = integer_with_zero

    assert integer - zero == integer