rustpy 0.3.0

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

from hypothesis import given

from rustpy.result import Result
from rustpy.primitive import bool_
from tests.utils import (equivalence,
                         implication)
from . import strategies


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

    result = first >= second

    assert isinstance(result, bool_)


@given(strategies.comparable_results)
def test_reflexivity(result: Result) -> None:
    assert result >= result


@given(strategies.comparable_results_pairs)
def test_antisymmetry(pair: Tuple[Result, Result]) -> None:
    first, second = pair

    assert equivalence(first >= second >= first, first == second)


@given(strategies.comparable_results_triplets)
def test_transitivity(triplet: Tuple[Result, Result, Result]) -> None:
    first, second, third = triplet

    assert implication(first >= second >= third, first >= third)


@given(strategies.comparable_results_pairs)
def test_equivalents(pair: Tuple[Result, Result]) -> None:
    first, second = pair

    result = first >= second

    assert equivalence(result, second <= first)
    assert equivalence(result, first > second or first == second)
    assert equivalence(result, second < first or first == second)