mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-19 05:40:38 +01:00
[poincare/test] Clean arguments of ProcessExpression
This commit is contained in:
@@ -40,7 +40,7 @@ void quiz_assert_log_if_failure(bool test, TreeHandle tree) {
|
||||
void assert_parsed_expression_process_to(const char * expression, const char * result, ExpressionNode::ReductionTarget target, Preferences::ComplexFormat complexFormat, Preferences::AngleUnit angleUnit, ExpressionNode::SymbolicComputation symbolicComputation, ProcessExpression process, int numberOfSignifiantDigits) {
|
||||
Shared::GlobalContext globalContext;
|
||||
Expression e = parse_expression(expression, &globalContext, false);
|
||||
Expression m = process(e, &globalContext, target, complexFormat, angleUnit, symbolicComputation);
|
||||
Expression m = process(e, ExpressionNode::ReductionContext(&globalContext, complexFormat, angleUnit, target, symbolicComputation));
|
||||
constexpr int bufferSize = 500;
|
||||
char buffer[bufferSize];
|
||||
m.serialize(buffer, bufferSize, DecimalMode, numberOfSignifiantDigits);
|
||||
@@ -85,12 +85,12 @@ void assert_simplify(const char * expression, Preferences::AngleUnit angleUnit,
|
||||
}
|
||||
|
||||
void assert_parsed_expression_simplify_to(const char * expression, const char * simplifiedExpression, ExpressionNode::ReductionTarget target, Preferences::AngleUnit angleUnit, Preferences::ComplexFormat complexFormat, ExpressionNode::SymbolicComputation symbolicComputation) {
|
||||
assert_parsed_expression_process_to(expression, simplifiedExpression, target, complexFormat, angleUnit, symbolicComputation, [](Expression e, Context * context, ExpressionNode::ReductionTarget target, Preferences::ComplexFormat complexFormat, Preferences::AngleUnit angleUnit, ExpressionNode::SymbolicComputation symbolicComputation) {
|
||||
assert_parsed_expression_process_to(expression, simplifiedExpression, target, complexFormat, angleUnit, symbolicComputation, [](Expression e, ExpressionNode::ReductionContext reductionContext) {
|
||||
Expression copy = e.clone();
|
||||
if (target == ExpressionNode::ReductionTarget::User) {
|
||||
copy.simplifyAndApproximate(©, nullptr, context, complexFormat, angleUnit, symbolicComputation);
|
||||
if (reductionContext.target() == ExpressionNode::ReductionTarget::User) {
|
||||
copy.simplifyAndApproximate(©, nullptr, reductionContext.context(), reductionContext.complexFormat(), reductionContext.angleUnit(), reductionContext.symbolicComputation());
|
||||
} else {
|
||||
copy = copy.simplify(ExpressionNode::ReductionContext(context, complexFormat, angleUnit, target, symbolicComputation));
|
||||
copy = copy.simplify(reductionContext);
|
||||
}
|
||||
if (copy.isUninitialized()) {
|
||||
return e;
|
||||
@@ -103,8 +103,8 @@ template<typename T>
|
||||
void assert_expression_approximates_to(const char * expression, const char * approximation, Preferences::AngleUnit angleUnit, Preferences::ComplexFormat complexFormat, int numberOfSignificantDigits) {
|
||||
int numberOfDigits = sizeof(T) == sizeof(double) ? PrintFloat::k_numberOfStoredSignificantDigits : PrintFloat::k_numberOfPrintedSignificantDigits;
|
||||
numberOfDigits = numberOfSignificantDigits > 0 ? numberOfSignificantDigits : numberOfDigits;
|
||||
assert_parsed_expression_process_to(expression, approximation, SystemForApproximation, complexFormat, angleUnit, ReplaceAllSymbolsWithDefinitionsOrUndefined, [](Expression e, Context * context, ExpressionNode::ReductionTarget target, Preferences::ComplexFormat complexFormat, Preferences::AngleUnit angleUnit, ExpressionNode::SymbolicComputation symbolicComputation) {
|
||||
return e.approximate<T>(context, complexFormat, angleUnit);
|
||||
assert_parsed_expression_process_to(expression, approximation, SystemForApproximation, complexFormat, angleUnit, ReplaceAllSymbolsWithDefinitionsOrUndefined, [](Expression e, ExpressionNode::ReductionContext reductionContext) {
|
||||
return e.approximate<T>(reductionContext.context(), reductionContext.complexFormat(), reductionContext.angleUnit());
|
||||
}, numberOfDigits);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ constexpr Poincare::Preferences::PrintFloatMode EngineeringMode = Poincare::Pref
|
||||
void quiz_assert_print_if_failure(bool test, const char * information);
|
||||
void quiz_assert_log_if_failure(bool test, Poincare::TreeHandle tree);
|
||||
|
||||
typedef Poincare::Expression (*ProcessExpression)(Poincare::Expression, Poincare::Context * context, Poincare::ExpressionNode::ReductionTarget target, Poincare::Preferences::ComplexFormat complexFormat, Poincare::Preferences::AngleUnit angleUnit, Poincare::ExpressionNode::SymbolicComputation symbolicComputation); //TODO LEA replace with reductionContext
|
||||
typedef Poincare::Expression (*ProcessExpression)(Poincare::Expression, Poincare::ExpressionNode::ReductionContext reductionContext);
|
||||
|
||||
void assert_parsed_expression_process_to(const char * expression, const char * result, Poincare::ExpressionNode::ReductionTarget target, Poincare::Preferences::ComplexFormat complexFormat, Poincare::Preferences::AngleUnit angleUnit, Poincare::ExpressionNode::SymbolicComputation symbolicComputation, ProcessExpression process, int numberOfSignifiantDigits = Poincare::PrintFloat::k_numberOfStoredSignificantDigits);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user