| cmake_minimum_required (VERSION 2.6) |
| project(MathTest) |
| |
| |
| # Expression test |
| |
| set(expressions |
| "5 * ( 3 + 4)" |
| "(1 | 2 | 4 | 8) & 16" |
| "1 +(3*4) + 10 >> 2" |
| "10000 / 20 / 4" |
| "10000 / (20 / 4)" |
| "-1 + +1" |
| "+1 - -1" |
| "+1 - - + + -(-3 + - - +1)" |
| "1000 -12*5" |
| "1000 +12*-5" |
| "1000 -12*-5" |
| "~~1" |
| "1000 & ~0" |
| ) |
| |
| set(FILE_EXPRESSIONS "extern void test_expression(int x, int y, const char * text);\n") |
| |
| |
| macro(add_math_test expression) |
| math(EXPR result ${expression} ${ARGV1} ${ARGV2}) |
| set(CODE "test_expression(${expression}, ${result}, \"${expression}\");") |
| string(APPEND FILE_EXPRESSIONS "${CODE}\n") |
| endmacro() |
| |
| macro(add_math_tests) |
| foreach (expression ${expressions}) |
| add_math_test(${expression} ${ARGV0} ${ARGV1}) |
| endforeach () |
| endmacro() |
| |
| add_math_tests() |
| add_math_tests("OUTPUT_FORMAT" "DECIMAL") |
| add_math_tests("OUTPUT_FORMAT" "HEXADECIMAL") |
| |
| # Avoid the test with negative result and hexadecimal formatting |
| # therefore more tests with a negative result |
| add_math_test("-12*5") |
| add_math_test("12*-5") |
| |
| |
| configure_file( |
| "${CMAKE_CURRENT_SOURCE_DIR}/MathTestTests.h.in" |
| "${CMAKE_CURRENT_BINARY_DIR}/MathTestTests.h" |
| @ONLY) |
| |
| include_directories("${CMAKE_CURRENT_BINARY_DIR}") |
| add_executable(MathTest MathTestExec.cxx) |
| |