[poincare] Complete matrix hiding (tests)

Change-Id: I470784110e098a96cc288ab2dad584bb8b3555bd
This commit is contained in:
Émilie Feral
2017-05-03 11:07:03 +02:00
parent 3c9e835110
commit 28bf496e9e
8 changed files with 30 additions and 0 deletions

View File

@@ -11,8 +11,10 @@ const ToolboxNode calculChildren[4] = {ToolboxNode(I18n::Message::DiffCommand, I
const ToolboxNode complexChildren[5] = {ToolboxNode(I18n::Message::AbsCommand, I18n::Message::ComplexAbsoluteValue), ToolboxNode(I18n::Message::ArgCommand, I18n::Message::Agument), ToolboxNode(I18n::Message::ReCommand, I18n::Message::ReelPart), ToolboxNode(I18n::Message::ImCommand, I18n::Message::ImaginaryPart), ToolboxNode(I18n::Message::ConjCommand, I18n::Message::Conjugate)};
const ToolboxNode probabilityChildren[2] = {ToolboxNode(I18n::Message::BinomialCommand, I18n::Message::Combination), ToolboxNode(I18n::Message::PermuteCommand, I18n::Message::Permutation)};
const ToolboxNode arithmeticChildren[4] = {ToolboxNode(I18n::Message::GcdCommand, I18n::Message::GreatCommonDivisor),ToolboxNode(I18n::Message::LcmCommand, I18n::Message::LeastCommonMultiple), ToolboxNode(I18n::Message::RemCommand, I18n::Message::Remainder), ToolboxNode(I18n::Message::QuoCommand, I18n::Message::Quotient)};
#if MATRICES_ARE_DEFINED
const ToolboxNode matricesChildren[5] = {ToolboxNode(I18n::Message::InverseCommand, I18n::Message::Inverse), ToolboxNode(I18n::Message::DeterminantCommand, I18n::Message::Determinant), ToolboxNode(I18n::Message::TransposeCommand, I18n::Message::Transpose), ToolboxNode(I18n::Message::TraceCommand, I18n::Message::Trace), ToolboxNode(I18n::Message::DimensionCommand, I18n::Message::Dimension)};
const ToolboxNode listesChildren[5] = {ToolboxNode(I18n::Message::SortCommand, I18n::Message::Sort), ToolboxNode(I18n::Message::InvSortCommand, I18n::Message::InvSort), ToolboxNode(I18n::Message::MaxCommand, I18n::Message::Maximum), ToolboxNode(I18n::Message::MinCommand, I18n::Message::Minimum), ToolboxNode(I18n::Message::DimensionCommand, I18n::Message::Dimension)};
#endif
const ToolboxNode approximationChildren[4] = {ToolboxNode(I18n::Message::FloorCommand, I18n::Message::Floor), ToolboxNode(I18n::Message::FracCommand, I18n::Message::FracPart), ToolboxNode(I18n::Message::CeilCommand, I18n::Message::Ceiling), ToolboxNode(I18n::Message::RoundCommand, I18n::Message::Rounding)};
const ToolboxNode trigonometryChildren[6] = {ToolboxNode(I18n::Message::CoshCommand, I18n::Message::Cosh), ToolboxNode(I18n::Message::SinhCommand, I18n::Message::Sinh), ToolboxNode(I18n::Message::TanhCommand, I18n::Message::Tanh), ToolboxNode(I18n::Message::AcoshCommand, I18n::Message::Acosh), ToolboxNode(I18n::Message::AsinhCommand, I18n::Message::Asinh), ToolboxNode(I18n::Message::AtanhCommand, I18n::Message::Atanh)};
const ToolboxNode predictionChildren[3] = {ToolboxNode(I18n::Message::Prediction95Command, I18n::Message::Prediction95), ToolboxNode(I18n::Message::PredictionCommand, I18n::Message::Prediction), ToolboxNode(I18n::Message::ConfidenceCommand, I18n::Message::Confidence)};

View File

@@ -27,6 +27,7 @@ QUIZ_CASE(poincare_addition_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("[[1,2][3,4][5,6]]+3");
e = a->evaluate(globalContext);
assert(e->operand(0)->approximate(globalContext) == 4.0f);
@@ -96,4 +97,5 @@ QUIZ_CASE(poincare_addition_evaluate) {
assert(((Complex *)e->operand(5))->a() == 12.0f && ((Complex *)e->operand(5))->b() == 1.0f);
delete a;
delete e;
#endif
}

View File

@@ -28,6 +28,7 @@ QUIZ_CASE(poincare_fraction_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("[[1,2][3,4][5,6]]/2");
e = a->evaluate(globalContext);
assert(e->operand(0)->approximate(globalContext) == 0.5f);
@@ -59,4 +60,5 @@ QUIZ_CASE(poincare_fraction_evaluate) {
assert(fabsf(e->operand(3)->approximate(globalContext) - 0.0f) < 0.000001f);
delete a;
delete e;
#endif
}

View File

@@ -28,6 +28,7 @@ QUIZ_CASE(poincare_parse_function) {
assert(e->type() == Expression::Type::Derivative);
delete e;
#if MATRICES_ARE_DEFINED
e = Expression::parse("dim([[2]])");
assert(e->type() == Expression::Type::MatrixDimension);
delete e;
@@ -35,6 +36,7 @@ QUIZ_CASE(poincare_parse_function) {
e = Expression::parse("det([[1,2,3][4,5,6][7,8,9]])");
assert(e->type() == Expression::Type::Determinant);
delete e;
#endif
e = Expression::parse("confidence(0.1, 100)");
assert(e->type() == Expression::Type::ConfidenceInterval);
@@ -65,9 +67,11 @@ QUIZ_CASE(poincare_parse_function) {
assert(e->type() == Expression::Type::Integral);
delete e;
#if MATRICES_ARE_DEFINED
e = Expression::parse("inverse([[1,2,3][4,5,6][7,8,9]])");
assert(e->type() == Expression::Type::MatrixInverse);
delete e;
#endif
e = Expression::parse("lcm(2,3)");
assert(e->type() == Expression::Type::LeastCommonMultiple);
@@ -127,6 +131,7 @@ QUIZ_CASE(poincare_parse_function) {
assert(e->type() == Expression::Type::Sum);
delete e;
#if MATRICES_ARE_DEFINED
e = Expression::parse("trace([[1,2,3][4,5,6][7,8,9]])");
assert(e->type() == Expression::Type::MatrixTrace);
delete e;
@@ -134,6 +139,7 @@ QUIZ_CASE(poincare_parse_function) {
e = Expression::parse("transpose([[1,2,3][4,5,6][7,8,9]])");
assert(e->type() == Expression::Type::MatrixTranspose);
delete e;
#endif
}
@@ -160,9 +166,11 @@ QUIZ_CASE(poincare_function_approximate) {
assert(e->approximate(globalContext) == 2.0f);
delete e;
#if MATRICES_ARE_DEFINED
e = Expression::parse("det([[1,23,3][4,5,6][7,8,9]])");
assert(fabsf(e->approximate(globalContext)-126.0f) <= 0.0001f);
delete e;
#endif
e = Expression::parse("floor(2.3)");
assert(e->approximate(globalContext) == 2.0f);
@@ -235,9 +243,11 @@ QUIZ_CASE(poincare_function_approximate) {
assert(e->approximate(globalContext) == 49.0f);
delete e;
#if MATRICES_ARE_DEFINED
e = Expression::parse("trace([[1,2,3][4,5,6][7,8,9]])");
assert(e->approximate(globalContext) == 15.0f);
delete e;
#endif
}
QUIZ_CASE(poincare_function_evaluate) {
@@ -257,12 +267,14 @@ QUIZ_CASE(poincare_function_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("dim([[1,2,3][4,5,-6]])");
e = a->evaluate(globalContext);
assert(fabsf(e->operand(0)->approximate(globalContext)-2.0f) <= 0.00001f);
assert(fabsf(e->operand(1)->approximate(globalContext) -3.0f) <= 0.00001f);
delete a;
delete e;
#endif
char conjText[20] ={'c','o', 'n','j', '(', '3', '+', '2', '*', Ion::Charset::IComplex, ')', 0};
a = Expression::parse(conjText);
@@ -272,6 +284,7 @@ QUIZ_CASE(poincare_function_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("inverse([[1,2,3][4,5,-6][7,8,9]])");
e = a->evaluate(globalContext);
assert(fabsf(e->operand(0)->approximate(globalContext)-(-31.0f/24.0f)) <= 0.00001f);
@@ -285,6 +298,7 @@ QUIZ_CASE(poincare_function_evaluate) {
assert(fabsf(e->operand(8)->approximate(globalContext) -(1.0f/24.0f)) <= 0.00001f);
delete a;
delete e;
#endif
a = Expression::parse("prediction(0.1, 100)");
e = a->evaluate(globalContext);
@@ -341,6 +355,7 @@ QUIZ_CASE(poincare_function_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("transpose([[1,2,3][4,5,-6][7,8,9]])");
e = a->evaluate(globalContext);
assert(fabsf(e->operand(0)->approximate(globalContext)-1.0f) <= 0.00001f);
@@ -354,4 +369,5 @@ QUIZ_CASE(poincare_function_evaluate) {
assert(fabsf(e->operand(8)->approximate(globalContext) -9.0f) <= 0.00001f);
delete a;
delete e;
#endif
}

View File

@@ -5,6 +5,7 @@
using namespace Poincare;
QUIZ_CASE(poincare_matrix_evaluate) {
#if MATRICES_ARE_DEFINED
GlobalContext globalContext;
Expression * f = Expression::parse("[[1,2,3][4,5,6]]");
assert(f->operand(0)->approximate(globalContext) == 1.0f);
@@ -14,4 +15,5 @@ QUIZ_CASE(poincare_matrix_evaluate) {
assert(f->operand(4)->approximate(globalContext) == 5.0f);
assert(f->operand(5)->approximate(globalContext) == 6.0f);
delete f;
#endif
}

View File

@@ -35,6 +35,7 @@ QUIZ_CASE(poincare_power_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("[[1,2][3,4]]^3");
e = a->evaluate(globalContext);
assert(e->operand(0)->approximate(globalContext) == 37.0f);
@@ -43,4 +44,5 @@ QUIZ_CASE(poincare_power_evaluate) {
assert(e->operand(3)->approximate(globalContext) == 118.0f);
delete a;
delete e;
#endif
}

View File

@@ -27,6 +27,7 @@ QUIZ_CASE(poincare_product_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("[[1,2][3,4][5,6]]*2");
e = a->evaluate(globalContext);
assert(e->operand(0)->approximate(globalContext) == 2.0f);
@@ -109,4 +110,5 @@ QUIZ_CASE(poincare_product_evaluate) {
assert(((Complex *)e->operand(11))->a() == 68.0f && ((Complex *)e->operand(11))->b() == 0.0f);
delete a;
delete e;
#endif
}

View File

@@ -27,6 +27,7 @@ QUIZ_CASE(poincare_substraction_evaluate) {
delete a;
delete e;
#if MATRICES_ARE_DEFINED
a = Expression::parse("[[1,2][3,4][5,6]]-3");
e = a->evaluate(globalContext);
assert(e->operand(0)->approximate(globalContext) == -2.0f);
@@ -96,4 +97,5 @@ QUIZ_CASE(poincare_substraction_evaluate) {
assert(((Complex *)e->operand(5))->a() == 0.0f && ((Complex *)e->operand(5))->b() == -1.0f);
delete a;
delete e;
#endif
}