Browse Source

ENH: Add math test

Andy Cedilnik 20 years ago
parent
commit
427ed70363
3 changed files with 52 additions and 0 deletions
  1. 25 0
      Tests/MathTest/CMakeLists.txt
  2. 26 0
      Tests/MathTest/MathTestExec.cxx
  3. 1 0
      Tests/MathTest/MathTestTests.h.in

+ 25 - 0
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)
+

+ 26 - 0
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;
+}

+ 1 - 0
Tests/MathTest/MathTestTests.h.in

@@ -0,0 +1 @@
+@FILE_EXPRESSIONS@