import ferro_hgvs
LEVEL = ferro_hgvs.EquivalenceLevel
def test_the_new_discriminants_are_bound() -> None:
for name in ("CrossAxisSequenceMatch", "Indeterminate"):
member = getattr(LEVEL, name)
assert isinstance(member, LEVEL), f"{name} is not an EquivalenceLevel member"
def test_indeterminate_is_the_only_undecided_level() -> None:
assert LEVEL.Indeterminate.is_decided() is False
for name in (
"Identical",
"NormalizedMatch",
"AccessionVersionDifference",
"NotEquivalent",
"SequenceMatch",
"CrossAxisSequenceMatch",
):
assert getattr(LEVEL, name).is_decided() is True, f"{name} should be decided"
def test_indeterminate_is_not_a_positive_verdict() -> None:
assert LEVEL.Indeterminate.is_equivalent() is False
def test_the_denotational_order_holds_across_the_binding() -> None:
assert LEVEL.Identical.is_at_least(LEVEL.CrossAxisSequenceMatch) is True
assert LEVEL.Identical.is_at_least(LEVEL.SequenceMatch) is True
assert LEVEL.CrossAxisSequenceMatch.is_at_least(LEVEL.SequenceMatch) is True
assert LEVEL.SequenceMatch.is_at_least(LEVEL.SequenceMatch) is True
assert LEVEL.SequenceMatch.is_at_least(LEVEL.CrossAxisSequenceMatch) is False
assert LEVEL.CrossAxisSequenceMatch.is_at_least(LEVEL.Identical) is False
def test_normalized_match_can_neither_satisfy_nor_be_a_gate() -> None:
assert LEVEL.NormalizedMatch.is_at_least(LEVEL.SequenceMatch) is False
assert LEVEL.NormalizedMatch.is_at_least(LEVEL.NormalizedMatch) is False
assert LEVEL.Identical.is_at_least(LEVEL.NormalizedMatch) is False
assert LEVEL.CrossAxisSequenceMatch.is_at_least(LEVEL.NormalizedMatch) is False
def test_the_accession_version_rung_is_off_the_order_but_decided() -> None:
assert LEVEL.AccessionVersionDifference.is_decided() is True
assert LEVEL.AccessionVersionDifference.is_at_least(LEVEL.SequenceMatch) is False
assert LEVEL.Identical.is_at_least(LEVEL.AccessionVersionDifference) is False