import pytest from prototyping.sorting_algo import Rule, is_rule_satisfied, sort_by_rules @pytest.fixture def in_list(): return ["a", "b", "c", "d", "e", "f", "g"] @pytest.fixture def rules() -> list[Rule]: return [ # X depends on Y Rule("a", "e"), Rule("b", "e"), Rule("b", "f"), Rule("c", "e"), Rule("d", "e"), Rule("f", "e"), ] def has_unique_elements(in_list): return len(set(in_list)) == len(in_list) def has_rules_satisfied(in_list, rules): rule_satisfied: list[bool] = [] for rule in rules: if is_rule_satisfied(in_list, rule): rule_satisfied.append(True) else: rule_satisfied.append(False) return all(rule_satisfied) def test_stuff(in_list, rules): sort_by_rules(in_list, rules) assert has_unique_elements(in_list) assert has_rules_satisfied(in_list, rules)