import sys import os # Add backend to path sys.path.append(os.path.abspath("/Users/hissin/测试/25-cxsj-final/backend")) from problems.interval_scheduling.generator import generate_interval_scheduling_case from problems.interval_scheduling.solvers import solve_greedy, solve_brute_force from problems.interval_scheduling.problem import IntervalSchedulingProblem def test_generator(): print("Testing Generator...") intervals = generate_interval_scheduling_case(size=10, min_time=0, max_time=100) print(f"Generated {len(intervals)} intervals: {intervals}") assert len(intervals) == 10 for start, end in intervals: assert start < end assert start >= 0 assert end <= 100 print("Generator Passed!") def test_solvers(): print("\nTesting Solvers...") # Known case intervals = [(1, 3), (2, 4), (3, 5)] # Greedy should pick (1,3) and (3,5) -> count 2 greedy_res = solve_greedy(intervals) print(f"Greedy result: {greedy_res}") assert len(greedy_res) == 2 brute_res = solve_brute_force(intervals) print(f"Brute Force result: {brute_res}") assert len(brute_res) == 2 # Complex case intervals = [(1, 4), (3, 5), (0, 6), (5, 7), (3, 9), (5, 9), (6, 10), (8, 11), (8, 12), (2, 14), (12, 16)] greedy_res = solve_greedy(intervals) brute_res = solve_brute_force(intervals) print(f"Complex Greedy: {len(greedy_res)}") print(f"Complex Brute: {len(brute_res)}") assert len(greedy_res) == len(brute_res) print("Solvers Passed!") def test_problem_class(): print("\nTesting Problem Class...") prob = IntervalSchedulingProblem() case = prob.generate_case(size=5) res_greedy = prob.solve(case, "greedy") res_brute = prob.solve(case, "brute_force") print(f"Class Greedy: {res_greedy}") print(f"Class Brute: {res_brute}") assert prob.verify(case, res_greedy) assert res_greedy["result_count"] == res_brute["result_count"] print("Problem Class Passed!") if __name__ == "__main__": test_generator() test_solvers() test_problem_class()