148 lines
3.0 KiB
CMake
148 lines
3.0 KiB
CMake
# a simple C only test case
|
|
cmake_minimum_required (VERSION 2.6)
|
|
project (ReturnTest)
|
|
|
|
function (FAILED testname)
|
|
message (SEND_ERROR "${testname} failed ${ARGN}")
|
|
endfunction ()
|
|
|
|
function (PASS testname)
|
|
message ("${testname} passed ${ARGN}")
|
|
endfunction ()
|
|
|
|
# test simple return
|
|
function (simple)
|
|
set(simpleResult 1 PARENT_SCOPE)
|
|
return()
|
|
set(simpleResult 0 PARENT_SCOPE)
|
|
endfunction ()
|
|
simple()
|
|
if ("${simpleResult}")
|
|
pass ("simple")
|
|
else ()
|
|
failed ("simple got: ${simpleResult}")
|
|
endif ()
|
|
|
|
#test return in an if statement
|
|
set (simple2IF 1)
|
|
function (simple2)
|
|
set(simple2Result 1 PARENT_SCOPE)
|
|
if (simple2IF)
|
|
return()
|
|
endif ()
|
|
set(simple2Result 0 PARENT_SCOPE)
|
|
endfunction ()
|
|
simple2()
|
|
if ("${simple2Result}")
|
|
pass ("simple2")
|
|
else ()
|
|
failed ("simple2 got: ${simple2Result}")
|
|
endif ()
|
|
|
|
#test return in a foreach loop
|
|
function (looptest)
|
|
foreach (iter RANGE 1 5)
|
|
set (looptestResult "${iter}" PARENT_SCOPE)
|
|
if ("${iter}" EQUAL 3)
|
|
return ()
|
|
endif ()
|
|
endforeach ()
|
|
endfunction ()
|
|
looptest()
|
|
if ("${looptestResult}" EQUAL 3)
|
|
pass ("looptest")
|
|
else ()
|
|
failed ("looptest got: ${looptestResult}")
|
|
endif ()
|
|
|
|
#test return in a while loop
|
|
function (whiletest)
|
|
set (iter "a")
|
|
while(NOT "${iter}" STREQUAL "aaaaa")
|
|
set (whiletestResult "${iter}" PARENT_SCOPE)
|
|
if ("${iter}" STREQUAL "aaa")
|
|
return ()
|
|
endif ()
|
|
set (iter "${iter}a")
|
|
endwhile()
|
|
endfunction ()
|
|
whiletest()
|
|
if ("${whiletestResult}" STREQUAL "aaa")
|
|
pass ("whiletest")
|
|
else ()
|
|
failed ("whiletest got: ${whiletestResult}")
|
|
endif ()
|
|
|
|
# check subdir return
|
|
add_subdirectory(subdir)
|
|
get_directory_property(subdirResult DIRECTORY subdir DEFINITION subdirreturn)
|
|
if ("${subdirResult}" EQUAL 1)
|
|
pass ("subdir")
|
|
else ()
|
|
failed ("subdir got: ${subdirResult}")
|
|
endif ()
|
|
|
|
# check return from a file
|
|
include(include_return.cmake)
|
|
if ("${include_returnResult}" EQUAL 1)
|
|
pass ("include_return")
|
|
else ()
|
|
failed ("include_return got: ${include_returnResult}")
|
|
endif ()
|
|
|
|
# check return from within a macro
|
|
macro (mymacro)
|
|
set (foo 1)
|
|
if (foo)
|
|
return()
|
|
endif ()
|
|
endmacro()
|
|
|
|
# test simple return
|
|
function (simple3)
|
|
set (bar 0)
|
|
set(simple3Result 1 PARENT_SCOPE)
|
|
if (bar)
|
|
else ()
|
|
mymacro()
|
|
endif()
|
|
set(simple3Result 0 PARENT_SCOPE)
|
|
endfunction ()
|
|
simple3()
|
|
if ("${simple3Result}")
|
|
pass ("macrotest")
|
|
else ()
|
|
failed ("macrotest got: ${simple3Result}")
|
|
endif ()
|
|
|
|
|
|
# test break command now in a foreach
|
|
foreach (iter RANGE 1 5)
|
|
set (break1 "${iter}")
|
|
if ("${iter}" EQUAL 3)
|
|
break ()
|
|
endif ()
|
|
endforeach ()
|
|
if ("${break1}" EQUAL 3)
|
|
pass ("break in foreach")
|
|
else ()
|
|
failed ("break in foreach got: ${break1}")
|
|
endif ()
|
|
|
|
# test break in a while loop
|
|
set (iter "a")
|
|
while(NOT "${iter}" STREQUAL "aaaaa")
|
|
if ("${iter}" STREQUAL "aaa")
|
|
break ()
|
|
endif ()
|
|
set (iter "${iter}a")
|
|
endwhile()
|
|
if ("${iter}" STREQUAL "aaa")
|
|
pass ("break in a while")
|
|
else ()
|
|
failed ("break in a while got: ${whiletestResult}")
|
|
endif ()
|
|
|
|
|
|
add_executable (ReturnTest returnTest.c)
|