macro(math_test expression expected)
    math(EXPR evaluated ${expression} ${ARGN})
    if (NOT evaluated STREQUAL ${expected})
        message(FATAL_ERROR "wrong math result: ${evaluated} != ${expected}")
    endif ()
endmacro()


math_test("100 * 10" 1000)
math_test("100 * 10" 1000 OUTPUT_FORMAT DECIMAL)
math_test("100 * 0xA" 1000 OUTPUT_FORMAT DECIMAL)
math_test("100 * 0xA" 0x3e8 OUTPUT_FORMAT HEXADECIMAL)