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",
    }
Exemple #2
0
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"}