diff --git a/apps/calculation/test/calculation_store.cpp b/apps/calculation/test/calculation_store.cpp index 15d3f0588..7d17876e4 100644 --- a/apps/calculation/test/calculation_store.cpp +++ b/apps/calculation/test/calculation_store.cpp @@ -96,7 +96,7 @@ QUIZ_CASE(calculation_display_exact_approximate) { assertCalculationDisplay("1/0", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, "undef", "undef", &globalContext, &store); assertCalculationDisplay("2x-x", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, "undef", "undef", &globalContext, &store); assertCalculationDisplay("[[1,2,3]]", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, nullptr, &globalContext, &store); - assertCalculationDisplay("[[1,x,3]]", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "[[1,undef,3]]", &globalContext, &store); + assertCalculationDisplay("[[1,x,3]]", ::Calculation::Calculation::DisplayOutput::ApproximateOnly, ::Calculation::Calculation::EqualSign::Unknown, nullptr, "undef", &globalContext, &store); assertCalculationDisplay("28^7", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Unknown, nullptr, nullptr, &globalContext, &store); assertCalculationDisplay("3+√(2)→a", ::Calculation::Calculation::DisplayOutput::ExactAndApproximate, ::Calculation::Calculation::EqualSign::Approximation, "√(2)+3", nullptr, &globalContext, &store); Ion::Storage::sharedStorage()->recordNamed("a.exp").destroy(); diff --git a/poincare/test/addition.cpp b/poincare/test/addition.cpp index 7772a34f1..648c26965 100644 --- a/poincare/test/addition.cpp +++ b/poincare/test/addition.cpp @@ -50,10 +50,10 @@ QUIZ_CASE(poincare_addition_evaluate) { assert_parsed_expression_evaluates_to("𝐢", "𝐢"); assert_parsed_expression_evaluates_to("𝐢+𝐢", "2×𝐢"); assert_parsed_expression_evaluates_to("2+𝐢+4+𝐢", "6+2×𝐢"); - assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]+3", "[[4,5][6,7][8,9]]"); - assert_parsed_expression_evaluates_to("[[1,2+𝐢][3,4][5,6]]+3+𝐢", "[[4+𝐢,5+2×𝐢][6+𝐢,7+𝐢][8+𝐢,9+𝐢]]"); - assert_parsed_expression_evaluates_to("3+[[1,2][3,4][5,6]]", "[[4,5][6,7][8,9]]"); - assert_parsed_expression_evaluates_to("3+𝐢+[[1,2+𝐢][3,4][5,6]]", "[[4+𝐢,5+2×𝐢][6+𝐢,7+𝐢][8+𝐢,9+𝐢]]"); + assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]+3", "undef"); + assert_parsed_expression_evaluates_to("[[1,2+𝐢][3,4][5,6]]+3+𝐢", "undef"); + assert_parsed_expression_evaluates_to("3+[[1,2][3,4][5,6]]", "undef"); + assert_parsed_expression_evaluates_to("3+𝐢+[[1,2+𝐢][3,4][5,6]]", "undef"); assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]+[[1,2][3,4][5,6]]", "[[2,4][6,8][10,12]]"); assert_parsed_expression_evaluates_to("[[1,2+𝐢][3,4][5,6]]+[[1,2+𝐢][3,4][5,6]]", "[[2,4+2×𝐢][6,8][10,12]]"); } diff --git a/poincare/test/simplify.cpp b/poincare/test/simplify.cpp index 52f1f77f2..142f893a2 100644 --- a/poincare/test/simplify.cpp +++ b/poincare/test/simplify.cpp @@ -86,5 +86,75 @@ QUIZ_CASE(poincare_simplify_mix) { //assert_parsed_expression_simplify_to("log(cos(9)^ln(6), 9)", "ln(6)×log(cos(9), 9)"); // TODO: for this to work, we must know the sign of cos(9) assert_parsed_expression_simplify_to("(((√(6)-√(2))/4)/((√(6)+√(2))/4))+1", "-√(3)+3"); //assert_parsed_expression_simplify_to("1/√(𝐢) × (√(2)-𝐢×√(2))", "-2𝐢"); // TODO: get rid of complex at denominator? - +} + +QUIZ_CASE(poincare_simplify_matrix) { + assert_parsed_expression_simplify_to("abs([[1,-1][2,-3]])", "[[1,1][2,3]]"); + assert_parsed_expression_simplify_to("acos([[1,0]])", "[[0,π/2]]"); + assert_parsed_expression_simplify_to("asin([[1,0]])", "[[π/2,0]]"); + assert_parsed_expression_simplify_to("atan([[1,0]])", "[[π/4,0]]"); + assert_parsed_expression_simplify_to("binomial([[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("binomial(1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("binomial([[0,180]],[[1]])", "undef"); + assert_parsed_expression_simplify_to("ceil([[0.3,180]])", "[[1,180]]"); + assert_parsed_expression_simplify_to("arg([[1,1+𝐢]])", "[[0,π/4]]"); + assert_parsed_expression_simplify_to("confidence([[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("confidence(1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("confidence([[0,180]],[[1]])", "undef"); + assert_parsed_expression_simplify_to("conj([[1,1+𝐢]])", "[[1,1-𝐢]]"); + assert_parsed_expression_simplify_to("cos([[0,π]])", "[[1,-1]]"); + assert_parsed_expression_simplify_to("diff([[0,180]],x,1)", "undef"); + assert_parsed_expression_simplify_to("diff(1,x,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("quo([[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("quo(1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("quo([[0,180]],[[1]])", "undef"); + assert_parsed_expression_simplify_to("rem([[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("rem(1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("rem([[0,180]],[[1]])", "undef"); + assert_parsed_expression_simplify_to("factor([[0,180]])", "undef"); + assert_parsed_expression_simplify_to("[[1,3]]!", "[[1,6]]"); + assert_parsed_expression_simplify_to("floor([[0.3,180]])", "[[0,180]]"); + assert_parsed_expression_simplify_to("frac([[0.3,180]])", "[[3/10,0]]"); + assert_parsed_expression_simplify_to("gcd([[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("gcd(1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("gcd([[0,180]],[[1]])", "undef"); + assert_parsed_expression_simplify_to("acosh([[0,π]])", "[[acosh(0),acosh(π)]]"); + assert_parsed_expression_simplify_to("asinh([[0,π]])", "[[asinh(0),asinh(π)]]"); + assert_parsed_expression_simplify_to("atanh([[0,π]])", "[[atanh(0),atanh(π)]]"); + assert_parsed_expression_simplify_to("cosh([[0,π]])", "[[cosh(0),cosh(π)]]"); + assert_parsed_expression_simplify_to("sinh([[0,π]])", "[[sinh(0),sinh(π)]]"); + assert_parsed_expression_simplify_to("tanh([[0,π]])", "[[tanh(0),tanh(π)]]"); + assert_parsed_expression_simplify_to("im([[1,1+𝐢]])", "[[0,1]]"); + assert_parsed_expression_simplify_to("int([[0,180]],x,1,2)", "undef"); + assert_parsed_expression_simplify_to("int(1,x,[[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("int(1,x,1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("log([[2,3]])", "[[log(2),log(3)]]"); + assert_parsed_expression_simplify_to("log([[2,3]],5)", "[[log(2,5),log(3,5)]]"); + assert_parsed_expression_simplify_to("log(5,[[2,3]])", "undef"); + assert_parsed_expression_simplify_to("ln([[2,3]])", "[[ln(2),ln(3)]]"); + assert_parsed_expression_simplify_to("root([[2,3]],5)", "undef"); + assert_parsed_expression_simplify_to("root(5,[[2,3]])", "undef"); + assert_parsed_expression_simplify_to("permute([[2,3]],5)", "undef"); + assert_parsed_expression_simplify_to("permute(5,[[2,3]])", "undef"); + assert_parsed_expression_simplify_to("prediction([[2,3]],5)", "undef"); + assert_parsed_expression_simplify_to("prediction(5,[[2,3]])", "undef"); + assert_parsed_expression_simplify_to("prediction95([[2,3]],5)", "undef"); + assert_parsed_expression_simplify_to("prediction95(5,[[2,3]])", "undef"); + assert_parsed_expression_simplify_to("product(1,x,[[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("product(1,x,1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("randint([[2,3]],5)", "undef"); + assert_parsed_expression_simplify_to("randint(5,[[2,3]])", "undef"); + assert_parsed_expression_simplify_to("re([[1,𝐢]])", "[[1,0]]"); + assert_parsed_expression_simplify_to("round([[2.12,3.42]], 1)", "[[21/10,17/5]]"); + assert_parsed_expression_simplify_to("round(1.3, [[2.1,3.4]])", "undef"); + assert_parsed_expression_simplify_to("round(1.3, [[2.1,3.4]])", "undef"); + assert_parsed_expression_simplify_to("sign([[2.1,3.4]])", "undef"); + assert_parsed_expression_simplify_to("sin([[0,π]])", "[[0,0]]"); + assert_parsed_expression_simplify_to("sum(1,x,[[0,180]],1)", "undef"); + assert_parsed_expression_simplify_to("sum(1,x,1,[[0,180]])", "undef"); + assert_parsed_expression_simplify_to("√([[2.1,3.4]])", "undef"); + assert_parsed_expression_simplify_to("[[2,3.4]]-[[0.1,3.1]]", "[[19/10,3/10]]"); + assert_parsed_expression_simplify_to("[[2,3.4]]-1", "undef"); + assert_parsed_expression_simplify_to("1-[[0.1,3.1]]", "undef"); + assert_parsed_expression_simplify_to("tan([[0,π/4]])", "[[0,1]]"); } diff --git a/poincare/test/subtraction.cpp b/poincare/test/subtraction.cpp index 186e675ac..f6822c1af 100644 --- a/poincare/test/subtraction.cpp +++ b/poincare/test/subtraction.cpp @@ -8,10 +8,10 @@ using namespace Poincare; QUIZ_CASE(poincare_subtraction_evaluate) { assert_parsed_expression_evaluates_to("1-2", "-1"); assert_parsed_expression_evaluates_to("3+𝐢-(4+𝐢)", "-1"); - assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]-3", "[[-2,-1][0,1][2,3]]"); - assert_parsed_expression_evaluates_to("[[1,2+𝐢][3,4][5,6]]-(4+𝐢)", "[[-3-𝐢,-2][-1-𝐢,-𝐢][1-𝐢,2-𝐢]]"); - assert_parsed_expression_evaluates_to("3-[[1,2][3,4][5,6]]", "[[2,1][0,-1][-2,-3]]"); - assert_parsed_expression_evaluates_to("3+𝐢-[[1,2+𝐢][3,4][5,6]]", "[[2+𝐢,1][𝐢,-1+𝐢][-2+𝐢,-3+𝐢]]"); + assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]-3", "undef"); + assert_parsed_expression_evaluates_to("[[1,2+𝐢][3,4][5,6]]-(4+𝐢)", "undef"); + assert_parsed_expression_evaluates_to("3-[[1,2][3,4][5,6]]", "undef"); + assert_parsed_expression_evaluates_to("3+𝐢-[[1,2+𝐢][3,4][5,6]]", "undef"); assert_parsed_expression_evaluates_to("[[1,2][3,4][5,6]]-[[6,5][4,3][2,1]]", "[[-5,-3][-1,1][3,5]]"); assert_parsed_expression_evaluates_to("[[1,2+𝐢][3,4][5,6]]-[[1,2+𝐢][3,4][5,6]]", "[[0,0][0,0][0,0]]"); } diff --git a/poincare/test/user_variable.cpp b/poincare/test/user_variable.cpp index 19786c56c..bf3e2e603 100644 --- a/poincare/test/user_variable.cpp +++ b/poincare/test/user_variable.cpp @@ -138,15 +138,15 @@ QUIZ_CASE(poincare_user_variable_composed_functions) { // g: x→f(x-2)+f(x+1) assert_simplify("f(x-2)+f(x+1)→g(x)"); - // Add a matrix to bypass simplification - assert_parsed_expression_evaluates_to("g(3)+[[1]]", "[[18]]"); + // Add a sum to bypass simplification + assert_parsed_expression_evaluates_to("g(3)+sum(1, n, 2, 4)", "20"); assert_parsed_expression_evaluates_to("g(5)", "45"); // g: x→x+1 assert_simplify("x+1→g(x)"); assert_parsed_expression_evaluates_to("f(g(4))", "25"); - // Add a matrix to bypass simplification - assert_parsed_expression_evaluates_to("f(g(4))+[[1]]", "[[26]]"); + // Add a sum to bypass simplification + assert_parsed_expression_evaluates_to("f(g(4))+sum(1, n, 2, 4)", "28"); // Clean the storage for other tests Ion::Storage::sharedStorage()->recordNamed("f.func").destroy();