summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tests/MathTest/CMakeLists.txt25
-rw-r--r--Tests/MathTest/MathTestExec.cxx26
-rw-r--r--Tests/MathTest/MathTestTests.h.in1
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@