diff options
Diffstat (limited to 'Tests/MathTest')
-rw-r--r-- | Tests/MathTest/CMakeLists.txt | 25 | ||||
-rw-r--r-- | Tests/MathTest/MathTestExec.cxx | 26 | ||||
-rw-r--r-- | Tests/MathTest/MathTestTests.h.in | 1 |
3 files changed, 52 insertions, 0 deletions
diff --git a/Tests/MathTest/CMakeLists.txt b/Tests/MathTest/CMakeLists.txt new file mode 100644 index 0000000..6f7a60c --- /dev/null +++ b/Tests/MathTest/CMakeLists.txt @@ -0,0 +1,25 @@ +PROJECT(MathTest) + + +# Expression test + +SET(expressions + "5 * ( 3 + 4)" + "(1 | 2 | 4 | 8) & 16" + ) + +SET(FILE_EXPRESSIONS "") +FOREACH(expression + ${expressions}) + MATH(EXPR expr "${expression}") + SET(FILE_EXPRESSIONS "${FILE_EXPRESSIONS}TEST_EXPRESSION(${expression}, ${expr})\n") +ENDFOREACH(expression) + +CONFIGURE_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/MathTestTests.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/MathTestTests.h" + @ONLY) + +INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}") +ADD_EXECUTABLE(MathTestExec MathTestExec.cxx) + diff --git a/Tests/MathTest/MathTestExec.cxx b/Tests/MathTest/MathTestExec.cxx new file mode 100644 index 0000000..5b94602 --- /dev/null +++ b/Tests/MathTest/MathTestExec.cxx @@ -0,0 +1,26 @@ +#include <stdio.h> + +#define TEST_EXPRESSION(x, y) \ + if ( (x) != (y) ) \ + { \ + printf("Problem with EXPR: Expression: \"%s\" in C returns %d while in CMake returns: %d\n", \ + #x, (x), (y)); \ + res ++; \ + } + +int main(int argc, char* argv[]) +{ + if ( argc > 1 ) + { + printf("Usage: %s\n", argv[0]); + return 1; + } + int res = 0; +#include "MathTestTests.h" + if ( res != 0 ) + { + printf("%s: %d math tests failed\n", argv[0], res); + return 1; + } + return 0; +} diff --git a/Tests/MathTest/MathTestTests.h.in b/Tests/MathTest/MathTestTests.h.in new file mode 100644 index 0000000..39c6861 --- /dev/null +++ b/Tests/MathTest/MathTestTests.h.in @@ -0,0 +1 @@ +@FILE_EXPRESSIONS@ |