| # a simple C only test case |
| cmake_minimum_required (VERSION 2.8.12) |
| 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) |