[poincare] Fix tests by using the UnknownX charset

This commit is contained in:
Léa Saviot
2018-09-28 11:58:56 +02:00
committed by Émilie Feral
parent 2a6194bfec
commit 95b59ce90a
3 changed files with 13 additions and 10 deletions

View File

@@ -151,6 +151,7 @@ trace { *yylval = MatrixTrace(); return FUNCTION; }
transpose { *yylval = MatrixTranspose(); return FUNCTION; }
undef { *yylval = Undefined(); return TERM; }
inf { *yylval = Infinity(false); return TERM; }
\x1 { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* UnknownX */
\x8a { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* Pi */
\x8c { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* I complex */
\x8f { *yylval = Poincare::Symbol(yytext[0]); return FINAL_SYMBOL; } /* Exponential */

View File

@@ -40,6 +40,7 @@ void translate_in_special_chars(char * expression) {
case 'P': *c = Ion::Charset::SmallPi; break;
case '*': *c = Ion::Charset::MultiplicationSign; break;
case '>': *c = Ion::Charset::Sto; break;
case '?': *c = Poincare::Symbol::SpecialSymbols::UnknownX; break;
}
}
}
@@ -55,6 +56,7 @@ void translate_in_ASCII_chars(char * expression) {
case Ion::Charset::MultiplicationSign: *c = '*'; break;
case Ion::Charset::MiddleDot: *c = '*'; break;
case Ion::Charset::Sto: *c = '>'; break;
case Poincare::Symbol::SpecialSymbols::UnknownX: *c = '?'; break;
}
}
}

View File

@@ -66,17 +66,17 @@ void assert_parsed_expression_has_characteristic_range(const char * expression,
}
QUIZ_CASE(poincare_characteristic_range) {
assert_parsed_expression_has_characteristic_range("cos(x)", 360.0f);
assert_parsed_expression_has_characteristic_range("cos(-x)", 360.0f);
assert_parsed_expression_has_characteristic_range("cos(x)", 2.0f*M_PI, Preferences::AngleUnit::Radian);
assert_parsed_expression_has_characteristic_range("cos(-x)", 2.0f*M_PI, Preferences::AngleUnit::Radian);
assert_parsed_expression_has_characteristic_range("sin(9*x+10)", 40.0f);
assert_parsed_expression_has_characteristic_range("sin(9*x+10)+cos(x/2)", 720.0f);
assert_parsed_expression_has_characteristic_range("sin(9*x+10)+cos(x/2)", 4.0f*M_PI, Preferences::AngleUnit::Radian);
assert_parsed_expression_has_characteristic_range("x", NAN);
assert_parsed_expression_has_characteristic_range("cos(?)", 360.0f);
assert_parsed_expression_has_characteristic_range("cos(-?)", 360.0f);
assert_parsed_expression_has_characteristic_range("cos(?)", 2.0f*M_PI, Preferences::AngleUnit::Radian);
assert_parsed_expression_has_characteristic_range("cos(-?)", 2.0f*M_PI, Preferences::AngleUnit::Radian);
assert_parsed_expression_has_characteristic_range("sin(9*?+10)", 40.0f);
assert_parsed_expression_has_characteristic_range("sin(9*?+10)+cos(?/2)", 720.0f);
assert_parsed_expression_has_characteristic_range("sin(9*?+10)+cos(?/2)", 4.0f*M_PI, Preferences::AngleUnit::Radian);
assert_parsed_expression_has_characteristic_range("?", NAN);
assert_parsed_expression_has_characteristic_range("cos(3)+2", 0.0f);
assert_parsed_expression_has_characteristic_range("log(cos(40*x))", 9.0f);
assert_parsed_expression_has_characteristic_range("cos(cos(x))", 360.0f);
assert_parsed_expression_has_characteristic_range("log(cos(40*?))", 9.0f);
assert_parsed_expression_has_characteristic_range("cos(cos(?))", 360.0f);
}
void assert_parsed_expression_has_variables(const char * expression, const char * variables[]) {