diff options
author | Ken Martin <ken.martin@kitware.com> | 2008-01-23 15:29:21 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2008-01-23 15:29:21 (GMT) |
commit | f4b7ba9c4260f905bb9d88c292565d957b79fe96 (patch) | |
tree | 80763bd35e67215d47570c575b247f43f586568b /Tests/ReturnTest | |
parent | 0e69d38004787f1d55eb7188cde4cf45e0a3957d (diff) | |
download | CMake-f4b7ba9c4260f905bb9d88c292565d957b79fe96.zip CMake-f4b7ba9c4260f905bb9d88c292565d957b79fe96.tar.gz CMake-f4b7ba9c4260f905bb9d88c292565d957b79fe96.tar.bz2 |
ENH: add testing for return and break commands
Diffstat (limited to 'Tests/ReturnTest')
-rw-r--r-- | Tests/ReturnTest/CMakeLists.txt | 140 | ||||
-rw-r--r-- | Tests/ReturnTest/returnTest.c | 7 | ||||
-rw-r--r-- | Tests/ReturnTest/subdir/CMakeLists.txt | 3 |
3 files changed, 150 insertions, 0 deletions
diff --git a/Tests/ReturnTest/CMakeLists.txt b/Tests/ReturnTest/CMakeLists.txt new file mode 100644 index 0000000..e48c88d --- /dev/null +++ b/Tests/ReturnTest/CMakeLists.txt @@ -0,0 +1,140 @@ +# a simple C only test case +project (ReturnTest) + +set (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}") + +function (FAILED testname) + message (SEND_ERROR "${testname} failed ${ARGN}") +endfunction (FAILED) + +function (PASS testname) + message ("${testname} passed ${ARGN}") +endfunction (PASS) + +# test simple return +function (simple) + set(simpleResult 1 PARENT_SCOPE) + return() + set(simpleResult 0 PARENT_SCOPE) +endfunction (simple) +simple() +if ("${simpleResult}") + pass ("simple") +else ("${simpleResult}") + failed ("simple got: ${simpleResult}") +endif ("${simpleResult}") + +#test return in an if statement +set (simple2IF 1) +function (simple2) + set(simple2Result 1 PARENT_SCOPE) + if (simple2IF) + return() + endif (simple2IF) + set(simple2Result 0 PARENT_SCOPE) +endfunction (simple2) +simple2() +if ("${simple2Result}") + pass ("simple2") +else ("${simple2Result}") + failed ("simple2 got: ${simple2Result}") +endif ("${simple2Result}") + +#test return in a foreach loop +function (looptest) + foreach (iter RANGE 1 5) + set (looptestResult "${iter}" PARENT_SCOPE) + if ("${iter}" EQUAL 3) + return () + endif ("${iter}" EQUAL 3) + endforeach (iter) +endfunction (looptest) +looptest() +if ("${looptestResult}" EQUAL 3) + pass ("looptest") +else ("${looptestResult}" EQUAL 3) + failed ("looptest got: ${looptestResult}") +endif ("${looptestResult}" EQUAL 3) + +#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 ("${iter}" STREQUAL "aaa") + set (iter "${iter}a") + endwhile(NOT "${iter}" STREQUAL "aaaaa") +endfunction (whiletest) +whiletest() +if ("${whiletestResult}" STREQUAL "aaa") + pass ("whiletest") +else ("${whiletestResult}" STREQUAL "aaa") + failed ("whiletest got: ${whiletestResult}") +endif ("${whiletestResult}" STREQUAL "aaa") + +# check subdir return +add_subdirectory(subdir) +get_directory_property(subdirResult DIRECTORY subdir DEFINITION subdirreturn) +if ("${subdirResult}" EQUAL 1) + pass ("subdir") +else ("${subdirResult}" EQUAL 1) + failed ("subdir got: ${subdirResult}") +endif ("${subdirResult}" EQUAL 1) + +# check return from within a macro +macro (mymacro) + set (foo 1) + if (foo) + return() + endif (foo) +endmacro(mymacro) + +# test simple return +function (simple3) + set (bar 0) + set(simple3Result 1 PARENT_SCOPE) + if (bar) + else (bar) + mymacro() + endif(bar) + set(simple3Result 0 PARENT_SCOPE) +endfunction (simple3) +simple3() +if ("${simple3Result}") + pass ("macrotest") +else ("${simple3Result}") + failed ("macrotest got: ${simple3Result}") +endif ("${simple3Result}") + + +# test break command now in a foreach +foreach (iter RANGE 1 5) + set (break1 "${iter}") + if ("${iter}" EQUAL 3) + break () + endif ("${iter}" EQUAL 3) +endforeach (iter) +if ("${break1}" EQUAL 3) + pass ("break in foreach") +else ("${break1}" EQUAL 3) + failed ("break in foreach got: ${break1}") +endif ("${break1}" EQUAL 3) + +# test break in a while loop +set (iter "a") +while(NOT "${iter}" STREQUAL "aaaaa") + if ("${iter}" STREQUAL "aaa") + break () + endif ("${iter}" STREQUAL "aaa") + set (iter "${iter}a") +endwhile(NOT "${iter}" STREQUAL "aaaaa") +if ("${iter}" STREQUAL "aaa") + pass ("break in a while") +else ("${iter}" STREQUAL "aaa") + failed ("break in a whi;e got: ${whiletestResult}") +endif ("${iter}" STREQUAL "aaa") + + +add_executable (ReturnTest returnTest.c) diff --git a/Tests/ReturnTest/returnTest.c b/Tests/ReturnTest/returnTest.c new file mode 100644 index 0000000..e0ced6a --- /dev/null +++ b/Tests/ReturnTest/returnTest.c @@ -0,0 +1,7 @@ +#include <stdio.h> + +int main(int argc, char* argv[]) +{ + printf("Running command: %s with %d arguments\n", argv[0], argc); + return 0; +} diff --git a/Tests/ReturnTest/subdir/CMakeLists.txt b/Tests/ReturnTest/subdir/CMakeLists.txt new file mode 100644 index 0000000..b951092 --- /dev/null +++ b/Tests/ReturnTest/subdir/CMakeLists.txt @@ -0,0 +1,3 @@ +set (subdirreturn 1) +return() +set (subdirreturn 0) |