File: CMakeLists.txt

package info (click to toggle)
cmake 4.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 152,344 kB
  • sloc: ansic: 403,894; cpp: 303,807; sh: 4,097; python: 3,582; yacc: 3,106; lex: 1,279; f90: 538; asm: 471; lisp: 375; cs: 270; java: 266; fortran: 239; objc: 215; perl: 213; xml: 198; makefile: 108; javascript: 83; pascal: 63; tcl: 55; php: 25; ruby: 22
file content (54 lines) | stat: -rw-r--r-- 1,255 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
cmake_minimum_required(VERSION 3.10)
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)