Exemplo n.º 1
0
def test_impart_taxons():

    # Imparting a knowledge decreases the learning cost of the corresponding taxons, but has no
    # effect whatsoever on the selected programs.
    dbf = ProgramFilter(db)
    dbf.impart_taxons({"flow/conditional"})
    print(set(dbf.selected_programs.keys()))
    assert set(dbf.selected_programs.keys()) == {
        "assignment.py",
        "collatz_print.py",
        "fizzbuzz.py",
        "is_even.py",
    }
Exemplo n.º 2
0
def test_impart_taxons():
    dbf = ProgramFilter(db)
    taxons = ["O/J", "X/S/M/L", "non/existing/taxon"]
    dbf.impart_taxons(taxons)
    print(sorted(dbf.imparted_knowledge))
    assert dbf.imparted_knowledge == {
        "O",
        "O/J",
        "X",
        "X/S",
        "X/S/M",
        "X/S/M/L",
        "non",
        "non/existing",
        "non/existing/taxon",
    }
def test_impart_taxons():

    # Imparting a triple doesn't make much sense. Currently, it comes down to imparting the two
    # taxons, and ignoring the predicate.
    dbf = ProgramFilter(db)
    dbf.impart_taxons({("equals", "operator/arithmetic/modulo", "type/number/integer")})
    print(set(dbf.selected_programs.keys()))
    assert set(dbf.selected_programs.keys()) == {
        "assignment.py",
        "collatz_print.py",
        "fizzbuzz.py",
        "is_even.py",
    }
    print(dbf.imparted_knowledge)
    assert dbf.imparted_knowledge == {
        "operator",
        "operator/arithmetic",
        "operator/arithmetic/modulo",
        "type",
        "type/number",
        "type/number/integer",
    }