def test_impart_programs(): dbf = ProgramFilter(db) programs = {"prg1.py", "prg2.py", "non_existing_program"} dbf.impart_programs(programs) print(sorted(dbf.selected_programs)) assert dbf.selected_programs.keys() == set(db["programs"]) - set(programs) print(sorted(dbf.imparted_knowledge)) assert set(db["taxons"]) - dbf.imparted_knowledge == { "O/C/F", "O/C/F/U", "X/S/M/L/R/D/A", "Y/E", }
def test_impart_programs(): # The program collatz_print.py is self-contained. Imparting it excludes it from the selection, # but has no other effect. dbf = ProgramFilter(db) dbf.impart_programs({"collatz_print.py"}) print(set(dbf.selected_programs.keys())) assert set(dbf.selected_programs.keys()) == { "assignment.py", "fizzbuzz.py", "is_even.py", } # The program fizzbuzz.py imports collatz_print.py. Imparting the former implies that the # latter has already been studied, and must be excluded from the selection. dbf = ProgramFilter(db) dbf.impart_programs({"fizzbuzz.py"}) print(set(dbf.selected_programs.keys())) assert set(dbf.selected_programs.keys()) == {"assignment.py", "is_even.py"} # The program is_even.py imports collatz_print.py, which imports collatz_print.py. Imparting # the former excludes the three of them from the selection. dbf = ProgramFilter(db) dbf.impart_programs({"is_even.py"}) print(set(dbf.selected_programs.keys())) assert set(dbf.selected_programs.keys()) == {"assignment.py"}