summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2008-01-23 15:29:21 (GMT)
committerKen Martin <ken.martin@kitware.com>2008-01-23 15:29:21 (GMT)
commitf4b7ba9c4260f905bb9d88c292565d957b79fe96 (patch)
tree80763bd35e67215d47570c575b247f43f586568b /Tests
parent0e69d38004787f1d55eb7188cde4cf45e0a3957d (diff)
downloadCMake-f4b7ba9c4260f905bb9d88c292565d957b79fe96.zip
CMake-f4b7ba9c4260f905bb9d88c292565d957b79fe96.tar.gz
CMake-f4b7ba9c4260f905bb9d88c292565d957b79fe96.tar.bz2
ENH: add testing for return and break commands
Diffstat (limited to 'Tests')
-rw-r--r--Tests/CMakeLists.txt1
-rw-r--r--Tests/ReturnTest/CMakeLists.txt140
-rw-r--r--Tests/ReturnTest/returnTest.c7
-rw-r--r--Tests/ReturnTest/subdir/CMakeLists.txt3
4 files changed, 151 insertions, 0 deletions
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 3c5d051..d4281ff 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -46,6 +46,7 @@ IF(BUILD_TESTING)
ADD_TEST_MACRO(LinkLine LinkLine)
ADD_TEST_MACRO(MacroTest miniMacroTest)
ADD_TEST_MACRO(FunctionTest miniFunctionTest)
+ ADD_TEST_MACRO(ReturnTest ReturnTest)
ADD_TEST_MACRO(Properties Properties)
ADD_TEST_MACRO(Assembler HelloAsm)
ADD_TEST_MACRO(SourceGroups SourceGroups)
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)