rustpy 0.3.0

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

from hypothesis import given

from tests.utils import Float
from . import strategies


@given(strategies.floats)
def test_basic(float_: Float) -> None:
    result = -float_

    assert isinstance(result, type(float_))


@given(strategies.floats)
def test_involution(float_: Float) -> None:
    assert -(-float_) == float_ or float_.is_nan()


@given(strategies.finite_floats_pairs)
def test___add___operand(pair: Tuple[Float, Float]) -> None:
    first, second = pair

    assert -(first + second) == (-first) + (-second)


@given(strategies.finite_floats_pairs)
def test___sub___operand(pair: Tuple[Float, Float]) -> None:
    first, second = pair

    assert -(first - second) == (-first) - (-second)


@given(strategies.finite_floats_pairs)
def test___mul___operand(pair: Tuple[Float, Float]) -> None:
    first, second = pair

    result = -(first * second)

    assert result == (-first) * second == first * (-second)


@given(strategies.finite_floats_pairs)
def test___truediv___operand(pair: Tuple[Float, Float]) -> None:
    first, second = pair

    result = -(first / second)

    assert result.is_nan() or result == (-first) / second == first / (-second)