def test_div_by_zero(): try: _ = p.parse("2/0") except (ZeroDivisionError, VisitError): # Program fails correctly assert True else: assert False
def test_to_real_addition(x, y): assert p.parse("re({}+{})".format(x, y)) == p.parse("{}".format(x + y))
def test_integrate_polyn(): assert p.parse("integrate(2*x^2+x+2)") == p.parse("2*x^3/3+x^2/2+2*x")
def test_integrate_exp(): assert p.parse("integrate(e^(x+5))") == p.parse("e^(x+5)")
def test_u_sub_int_cos(): assert p.parse("integrate(x*cos(x^2))") == p.parse("sin(x^2)/2")
def test_int_sin(): assert p.parse("integrate(sin(x))") == p.parse("-cos(x)")
def test_integrate_const_wrt_y(x): assert p.parse("integrate({},y)".format(x)) == p.parse("{}*y".format(x))
def test_get_variables_in_polyn(): num = p.parse("(x+y)^2") assert num.get_variables_in() == {"x", "y"}
def test_brackets_and_term_expansion(): assert p.parse("expand(x*(x+2+y))") == p.parse("x^2+2*x+y*x")
def test_log_of_exp_pow(x): assert p.parse("ln(e^({}))".format(x)) == p.parse(str(x))
def test_subs_using_mults(): tst_num = p.parse("1/x^4") replace = p.parse("x^2") var_obj = caspy.numeric.numeric.Numeric("u", "sym") replaced_obj = tst_num.try_replace_numeric_with_var(replace, var_obj) assert replaced_obj == p.parse("1/u^2")
def test_try_replace_numeric(): tst_sym = p.parse("x^4") replace = p.parse("x^2") var_obj = caspy.numeric.numeric.Numeric("u", "sym") replaced_obj = tst_sym.try_replace_numeric_with_var(replace, var_obj) assert replaced_obj == p.parse("u^2")
def test_subs_linear_combination(): tst_num = p.parse("sin(x)+sin(x)^2") replace = p.parse("sin(x)") var_obj = caspy.numeric.numeric.Numeric("u", "sym") replaced_obj = tst_num.try_replace_numeric_with_var(replace, var_obj) assert replaced_obj == p.parse("u+u^2")
def test_try_replace_numeric_polyn(): tst_num = p.parse("(x+1)^3") replace = p.parse("x+1") var_obj = caspy.numeric.numeric.Numeric("u", "sym") replaced_obj = tst_num.try_replace_numeric_with_var(replace, var_obj) assert replaced_obj == p.parse("u^3")
def test_try_replace_numeric_with_func(): tst_sym = p.parse("x^4*sin(x^2)").val[0] replace = p.parse("x^2") var_obj = caspy.numeric.numeric.Numeric("u", "sym") replaced_obj = tst_sym.try_replace_numeric_with_var(replace, var_obj) assert replaced_obj == p.parse("sin(u)*u^2")
def test_expand_trig_sin(): assert p.parse("expand_trig(sin(3*x))") == p.parse( "3*cos(x)^2 * sin(x) - sin(x)^3")
def test_get_variables_in_func(): num = p.parse("x*sin(u)") assert num.get_variables_in() == {"x", "u"}
def test_expand_trig_cos(): assert p.parse("expand_trig(cos(2*x))") == p.parse("cos(x)^2-sin(x)^2")
def test_integrate_const(x): assert p.parse("integrate({})".format(x)) == p.parse("{}*x".format(x))
def test_square_expansion(): assert p.parse("expand((x+1)^2)") == p.parse("1+x^2+2*x")
def test_integrate_recip(): assert p.parse("integrate(1/x)") == p.parse("ln(x)")
def test_brackets_expansion(): assert p.parse("expand((y+2)*(y+3))") == p.parse("y^2+5*y+6")
def test_int_cos(): assert p.parse("integrate(cos(x))") == p.parse("sin(x)")
def test_get_variables_in_exp(): num = p.parse("2^a") assert num.get_variables_in() == {"a"}
def test_expand_then_int(): assert p.parse("integrate((x+1)^2)") == p.parse("x^3/3+x^2+x")
def test_get_variables_in_linear(): num = p.parse("a+b+x*y") assert num.get_variables_in() == {"a", "b", "x", "y"}
def test_int_by_parts(): assert p.parse("integrate(x*ln(x^2))") == p.parse("x^2 * ln(x^2)/2-x^2/2")
def test_is_zero(): num = p.parse("1-1") assert num.is_zero()
def test_expand_then_by_parts(): assert p.parse("integrate((x+1)*sin(x))") == p.parse( "integrate(expand((x+1)*sin(x)))")
def test_to_real_log(x): assert p.parse("re(ln({}))".format(x)) == p.parse("{}".format(math.log(x)))