You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
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)
|
|
|