def test_named_vs_positional(stu):
    s = setup_state(sol_code='round(1.23, 2)', stu_code=stu)
    passes(s.check_function('round').check_args(0).has_equal_value())
    passes(s.check_function('round').check_args("number").has_equal_value())
    passes(s.check_function('round').check_args(1).has_equal_value())
    passes(s.check_function('round').check_args("ndigits").has_equal_value())
Exemple #2
0
def test_test_function_do_eval(stu, do_eval, passes):
    s = setup_state(stu, "round(a)", pec="a,b = 1,2")
    with helper.verify_sct(passes):
        s.test_function("round", do_eval=do_eval)
Exemple #3
0
def test_test_function_v2_params(stu, passes):
    s = setup_state(stu, "my_fun(1, b = 2)", pec="def my_fun(a, b): pass")
    with helper.verify_sct(passes):
        s.test_function_v2("my_fun", params=["a"])
Exemple #4
0
def test_check_function_parser_mappings_2():
    code = "import numpy as np\nfor x in range(0): np.random.randint(1, 7)"
    s = setup_state(code, code)
    s.check_for_loop().check_body().check_function("numpy.random.randint")
Exemple #5
0
def test_test_function_basic(stu, passes):
    s = setup_state(stu, "my_fun(a = 1, b = 2)", pec="def my_fun(a, b): pass")
    with helper.verify_sct(passes):
        s.test_function("my_fun")
Exemple #6
0
def test_builtins(name, params, arguments):
    code = "%s(%s)" % (name, arguments)
    s = setup_state(code, code)
    fun_state = s.check_function(name)
    for param in params:
        fun_state.check_args(param).has_equal_value()
Exemple #7
0
def test_sig_from_params(stu, passes):
    s = setup_state(stu, "max([1, 2, 3, 4])")
    with helper.verify_sct(passes):
        sig = sig_from_params(param("iterable", param.POSITIONAL_ONLY))
        s.check_function("max", signature=sig).check_args(0).has_equal_value()
Exemple #8
0
def test_has_equal_output_basic(stu, passes):
    s = setup_state(stu, 'x = {"a":1, "b":2, "c": 3}')
    with helper.verify_sct(passes):
        s.test_expression_output(expr_code='print(x["a"])')
Exemple #9
0
def test_has_equal_value_basic(stu, passes):
    s = setup_state(stu, "a = 2")
    with helper.verify_sct(passes):
        s.has_equal_value(expr_code="a")
Exemple #10
0
def test_has_expr_override_pass_2():
    stu = "x = [1, 2, 3]"
    sol = "x = [1, 2, 5]"
    s = setup_state(stu_code=stu, sol_code=sol)
    helper.passes(s.check_object("x").has_equal_value(override=[1, 2, 3]))
Exemple #11
0
def test_has_equal_value_name(stu, passes):
    s = setup_state(stu, "a = 0\nfor i in range(0): a = 1")
    with helper.verify_sct(passes):
        s.check_for_loop().check_body().has_equal_value(name="a")
Exemple #12
0
def test_chaining(stu, correct):
    s = setup_state(stu_code=stu, sol_code="import numpy.random as rand")
    with helper.verify_sct(correct):
        s.has_import("numpy.random")
Exemple #13
0
def test_same_as(stu, same_as, correct):
    s = setup_state(stu_code=stu, sol_code="import pandas as pd")
    with helper.verify_sct(correct):
        s.has_import("pandas", same_as=same_as)
Exemple #14
0
def test_basic(stu, correct):
    s = setup_state(stu_code=stu, sol_code="import pandas as pd")
    with helper.verify_sct(correct):
        s.has_import("pandas")
Exemple #15
0
def test_list_methods(fun, argument):
    code = "x.%s(2)" % fun
    s = setup_state(code, code, "x = [1, 2, 3]")
    s.check_function("x.%s" % fun).check_args(argument).has_equal_value()
Exemple #16
0
def test_has_equal_output_for(stu, passes, context_vals):
    s = setup_state(stu, "for i in range(10):\n    print(i)")
    with helper.verify_sct(passes):
        s.check_for_loop().check_body().has_equal_output(
            context_vals=context_vals)
Exemple #17
0
def test_center():
    code = "x.center(10, 's')"
    s = setup_state(code, code, "x = 'test'")
    fun_state = s.check_function("x.center")
    fun_state.check_args("width").has_equal_value()
    fun_state.check_args("fillchar").has_equal_value()
Exemple #18
0
def test_copy_functionality(copy, passes):
    s = setup_state("a = [1]", "a = [2]")
    with helper.verify_sct(passes):
        s.has_equal_value(expr_code="a[0] = 3", name="a",
                          copy=copy).has_equal_value(expr_code="a", name="a")
Exemple #19
0
def test_check_function_with_has_equal_value():
    code = "import numpy as np\narr = np.array([1, 2, 3, 4, 5])\nnp.mean(arr)"
    s = setup_state(stu_code=code, sol_code=code)
    helper.passes(s.check_function("numpy.mean").has_equal_value())
Exemple #20
0
def test_basic_has_printout(stu, correct):
    sol = 'print(1, 2, 3)'
    s = setup_state(stu_code=stu, sol_code=sol)
    with helper.verify_sct(correct):
        s.has_printout(0)
Exemple #21
0
def test_check_function_parser_mappings_1():
    code = "import numpy as np\nnp.random.randint(1, 7)"
    s = setup_state(code, code)
    s.check_function("numpy.random.randint")
Exemple #22
0
def test_basic_has_printout_failing_custom():
    sol = 'print(1, 2, 3)'
    stu = 'print(1, 2)'
    s = setup_state(stu_code=stu, sol_code=sol)
    with pytest.raises(TF, match='wrong'):
        s.has_printout(0, not_printed_msg='wrong')
Exemple #23
0
def test_check_function_basic(stu, passes, a_arg, b_arg):
    s = setup_state(stu, "my_fun(1, 2)", pec="def my_fun(a, b): pass")
    with helper.verify_sct(passes):
        s.check_function("my_fun").multi(
            check_args(a_arg).has_equal_value(),
            check_args(b_arg).has_equal_value())
Exemple #24
0
def test_has_printout_multiple(stu):
    sol = 'print("randomness")\nprint(1, 2, 3)'
    s = setup_state(stu_code=stu, sol_code=sol)
    helper.passes(s.has_printout(1))
Exemple #25
0
def test_test_function_keywords(stu, passes):
    s = setup_state(stu, "my_fun(1, b = 2)", pec="def my_fun(a, b): pass")
    with helper.verify_sct(passes):
        s.test_function("my_fun", args=[], keywords=["b"])
Exemple #26
0
def test_numpy_builtins(name, values, arguments):
    code = "%s(%s)" % (name, values)
    s = setup_state(code, code, pec="import numpy")
    fun_state = s.check_function(name)
    for arg in arguments:
        fun_state.check_args(arg).has_equal_value()
Exemple #27
0
def test_test_function_print(stu, passes):
    s = setup_state(stu, "print(1)")
    with helper.verify_sct(passes):
        s.test_function("print")
Exemple #28
0
def test_math_builtins():
    code = "m.radians(100)"
    s = setup_state(code, code, pec="import math as m")
    s.check_function("math.radians").check_args("x").has_equal_value()
Exemple #29
0
def test_test_function_v2_do_eval(stu, do_eval, passes):
    s = setup_state(stu, "round(a)", pec="a,b = 1,2")
    with helper.verify_sct(passes):
        s.test_function_v2("round", params=["number"], do_eval=[do_eval])
def check_function_multiple_times():
    from pythonwhat.local import setup_state
    s = setup_state(sol_code="print('test')", stu_code="print('test')")
    passes(s.check_function('print'))
    passes(s.check_function('print').check_args(0))
    passes(s.check_function('print').check_args('value'))