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())
示例#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)
示例#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"])
示例#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")
示例#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")
示例#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()
示例#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()
示例#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"])')
示例#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")
示例#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]))
示例#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")
示例#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")
示例#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)
示例#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")
示例#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()
示例#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)
示例#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()
示例#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")
示例#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())
示例#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)
示例#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")
示例#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')
示例#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())
示例#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))
示例#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"])
示例#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()
示例#27
0
def test_test_function_print(stu, passes):
    s = setup_state(stu, "print(1)")
    with helper.verify_sct(passes):
        s.test_function("print")
示例#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()
示例#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'))