summaryrefslogtreecommitdiff
path: root/Tests/FunctionTest/CMakeLists.txt
blob: 2f62c27afdd8d6b960c830f00a12471e9bd22a29 (plain)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# a simple C only test case
cmake_minimum_required (VERSION 2.6)
PROJECT (FunctionTest)

FUNCTION(FAILED testname)
  MESSAGE(SEND_ERROR "${testname} failed ${ARGN}")
ENDFUNCTION(FAILED)

FUNCTION(PASS testname)
  MESSAGE("${testname} passed ${ARGN}")
ENDFUNCTION(PASS)


# test scope
SET(COUNT 3)
FUNCTION(scope_test)
  SET(COUNT 4)
ENDFUNCTION(scope_test)
scope_test()
IF(COUNT EQUAL "3")
  PASS("scope")
ELSE(COUNT EQUAL "3")
  FAILED("COUNT Got: ${COUNT}")
ENDIF(COUNT EQUAL "3")

# test ARGC
FUNCTION(weird_name)
  IF("${ARGC}" EQUAL "3")
    PASS("ARGC")
  ELSE("${ARGC}" EQUAL "3")
    FAILED("ARGC" "Got: ${ARGC}")
  ENDIF("${ARGC}" EQUAL "3")
ENDFUNCTION(weird_name)
WeIrD_nAmE(a1 a2 a3)

# test ARGN
FUNCTION(test_argn_function argument)
  IF("${ARGN}" EQUAL "3")
    PASS("ARGN")
  ELSE("${ARGN}" EQUAL "3")
    FAILED("ARGN" "Got: ${ARGN}")
  ENDIF("${ARGN}" EQUAL "3")
ENDFUNCTION(test_argn_function)
Test_Argn_Function(ignored 3)

# test argument naming and raise scope
function(track_find_variable cache_variable is_changed)
 set("${is_changed}" changed PARENT_SCOPE)
endfunction(track_find_variable)
track_find_variable(testvar is_changed)
if ("${is_changed}" STREQUAL changed)
  pass("same argument name test")
else ("${is_changed}" STREQUAL changed)
  pass("same argument name test")
endif ("${is_changed}" STREQUAL changed)

include("Util.cmake")
tester()
if (tester_res STREQUAL "${CMAKE_CURRENT_LIST_FILE}")
  pass("CMAKE_CURRENT_LIST_FILE test")
else (tester_res STREQUAL "${CMAKE_CURRENT_LIST_FILE}")
  pass("CMAKE_CURRENT_LIST_FILE test")
endif (tester_res STREQUAL "${CMAKE_CURRENT_LIST_FILE}")



# test recursion and return via set(... PARENT_SCOPE)
function (factorial argument result)
  if (argument LESS 2)
    set (lresult 1)
  else (argument LESS 2)
    math (EXPR temp "${argument} - 1")
    factorial (${temp} tresult)
    math (EXPR lresult "${argument}*${tresult}")
  endif (argument LESS 2)
  set ("${result}" "${lresult}" PARENT_SCOPE)
endfunction (factorial)

factorial (5 fresult)
if (fresult EQUAL 120)
  pass("factorial")
else (fresult EQUAL 120)
  failed ("factorial, computed ${fresult} instead of 120")
endif (fresult EQUAL 120)



# case test
FUNCTION(strange_function m)
  SET("${m}" strange_function PARENT_SCOPE)
ENDFUNCTION(strange_function m)

STRANGE_FUNCTION(var)
set(second_var "second_var")
IF("${var}" STREQUAL "strange_function" AND "${second_var}" STREQUAL "second_var")
  PASS("Case Test" "(${var} ${second_var})")
ELSE("${var}" STREQUAL "strange_function" AND "${second_var}" STREQUAL "second_var")
  FAILED("Case test" "(${var} ${second_var})")
ENDIF("${var}" STREQUAL "strange_function" AND "${second_var}" STREQUAL "second_var")

# test backing up command
FUNCTION(ADD_EXECUTABLE exec)
  _ADD_EXECUTABLE(mini${exec} ${ARGN})
ENDFUNCTION(ADD_EXECUTABLE)

# var undef case
FUNCTION(undef_var m)
  SET("${m}" PARENT_SCOPE)
ENDFUNCTION(undef_var)

SET(FUNCTION_UNDEFINED 1)
undef_var(FUNCTION_UNDEFINED)
IF(DEFINED FUNCTION_UNDEFINED)
  FAILED("Function Undefine Test" "(${FUNCTION_UNDEFINED})")
ELSE(DEFINED FUNCTION_UNDEFINED)
  PASS("Function Undefine Test" "(${FUNCTION_UNDEFINED})")
ENDIF(DEFINED FUNCTION_UNDEFINED)

# Subdirectory scope raise.
SET(SUBDIR_UNDEFINED 1)
ADD_SUBDIRECTORY(SubDirScope)
IF(DEFINED SUBDIR_UNDEFINED)
  FAILED("Subdir Undefine Test" "(${SUBDIR_UNDEFINED})")
ELSE(DEFINED SUBDIR_UNDEFINED)
  PASS("Subdir Undefine Test" "(${SUBDIR_UNDEFINED})")
ENDIF(DEFINED SUBDIR_UNDEFINED)
IF(DEFINED SUBDIR_DEFINED)
  PASS("Subdir Define Test" "(${SUBDIR_DEFINED})")
ELSE(DEFINED SUBDIR_DEFINED)
  FAILED("Subdir Define Test" "(${SUBDIR_DEFINED})")
ENDIF(DEFINED SUBDIR_DEFINED)

ADD_EXECUTABLE(FunctionTest functionTest.c)