Files
Upsilon/poincare/test/simplify_utils.cpp
Felix Raimundo ad33e7ffa4 Make the tests more verbose if needed.
Change-Id: I37f2456f5c31ea4e1057b58774bc70f7728508a6
2016-04-22 16:52:45 +02:00

113 lines
3.0 KiB
C++

#include <poincare.h>
#include <assert.h>
#if POINCARE_TESTS_PRINT_EXPRESSIONS
#include "../src/expression_debug.h"
#include <iostream>
using namespace std;
#endif
bool simplifies_to(const char * input_string, const char * expected_string) {
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "---- Simplification Run ----" << endl;
cout << input_string << " -> " << expected_string << endl;
#endif
Expression * input = Expression::parse(input_string);
assert(input != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Input = " << endl;
print_expression(input);
#endif
Expression * simplified = input->simplify();
assert(simplified != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Simplified = " << endl;
print_expression(simplified);
#endif
Expression * expected = Expression::parse(expected_string);
assert(expected != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Expected = " << endl;
print_expression(expected);
#endif
bool isIdentical = simplified->isIdenticalTo(expected);
delete expected;
delete simplified;
delete input;
return isIdentical;
}
bool identical_to(const char * input_string, const char * expected_string) {
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "---- Identical Run ----" << endl;
cout << input_string << " -> " << expected_string << endl;
#endif
Expression * input = Expression::parse(input_string);
assert(input != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Input = " << endl;
print_expression(input);
#endif
Expression * expected = Expression::parse(expected_string);
assert(expected != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Expected = " << endl;
print_expression(expected);
#endif
bool isIdentical = input->isIdenticalTo(expected);
delete expected;
delete input;
return isIdentical;
}
bool equivalent_to(const char * input_string, const char * expected_string) {
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "---- Equivalence Run ----" << endl;
cout << input_string << " -> " << expected_string << endl;
#endif
Expression * input = Expression::parse(input_string);
assert(input != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Input = " << endl;
print_expression(input);
#endif
Expression * expected = Expression::parse(expected_string);
assert(expected != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Expected = " << endl;
print_expression(expected);
#endif
Expression * simplified_input = input->simplify();
assert(simplified_input != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Simplified Input = " << endl;
print_expression(simplified_input);
#endif
Expression * simplified_expected = Expression::parse(expected_string);
assert(simplified_expected != nullptr);
#if POINCARE_TESTS_PRINT_EXPRESSIONS
cout << "Simplified Expected = " << endl;
print_expression(simplified_expected);
#endif
bool isEquivalent = simplified_input->isIdenticalTo(simplified_expected);
delete expected;
delete input;
delete simplified_expected;
delete simplified_input;
return isEquivalent;
}