STYLE: Nightly Version update
[cmake.git] / Tests / StringFileTest / CMakeLists.txt
blob298f69439b33cee8a645410f0014e208ed7c1dcf
1 PROJECT(StringFileTest)
2 INCLUDE_DIRECTORIES(${StringFileTest_BINARY_DIR})
4 # Read file test
5 FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/InputFile.h.in" infile)
7 # String test
8 STRING(REGEX MATCH "[cC][mM][aA][kK][eE]" rmvar "CMake is great")
9 STRING(REGEX MATCHALL "[cC][mM][aA][kK][eE]" rmallvar "CMake is better than cmake or CMake")
10 STRING(REGEX REPLACE "[Aa][uU][tT][oO]([cC][oO][nN][fF]|[mM][aA][kK][eE])"
11   "CMake" rrepvar "People should use Autoconf and Automake")
12 STRING(COMPARE EQUAL "CMake" "Autoconf" nceqvar)
13 STRING(COMPARE EQUAL "CMake" "CMake" ceqvar)
14 STRING(COMPARE NOTEQUAL "CMake" "Autoconf" cneqvar)
15 STRING(COMPARE NOTEQUAL "CMake" "CMake" ncneqvar)
16 STRING(COMPARE LESS "before" "after" nclvar)
17 STRING(COMPARE LESS "max" "min" clvar)
18 STRING(COMPARE GREATER "before" "after" cgvar)
19 STRING(COMPARE GREATER "max" "min" ncgvar)
20 STRING(ASCII 67 109 97 107 101 savar)
21 STRING(TOUPPER "CMake" tuvar)
22 STRING(TOLOWER "CMake" tlvar)
24 # Escaping test
25 SET(var "\\ \" \  \t \n \r \# \( \) \0")
26 MESSAGE("Output: [${var}]")
27 SET(var \\ \" \  \t \n \r \# \( \) \0)
28 MESSAGE("Output: [${var}]")
30 # Make-style unquoted argument test
31 SET(var $(VAR1)$(VAR2)/$(VAR3))
32 MESSAGE("Output: [${var}]")
33 STRING(COMPARE EQUAL "${var}" "$(VAR1)$(VAR2)/$(VAR3)" result)
34 IF(NOT result)
35   MESSAGE(SEND_ERROR "Unquoted $(VAR) syntax is broken.")
36 ENDIF(NOT result)
38 # Make directories test
39 FILE(MAKE_DIRECTORY 
40   "${CMAKE_CURRENT_BINARY_DIR}/Includes" 
41   "${CMAKE_CURRENT_BINARY_DIR}/Directory1"
42   "${CMAKE_CURRENT_BINARY_DIR}/Directory2"
43   )
45 # Write results to the file (test write file)
46 SET(file "${CMAKE_CURRENT_BINARY_DIR}/Includes/Values.h")
47 FILE(WRITE "${file}" "/* this file is generated */\n")
48 FOREACH(var
49     rmvar
50     rmallvar
51     rrepvar
52     nceqvar
53     ceqvar
54     cneqvar
55     ncneqvar
56     nclvar
57     clvar
58     cgvar
59     ncgvar
60     savar
61     tuvar
62     tlvar)
63   FILE(APPEND "${file}" "#define ${var} \"${${var}}\"\n")
64 ENDFOREACH(var)
66 # Test configuration of the string
67 SET(TEST_DEFINED 123)
68 SET(TEST_NOT_DEFINED)
69 STRING(CONFIGURE "${infile}" infile @ONLY)
71 # Write include file to a file
72 STRING(REGEX REPLACE "includefile" "${file}" outfile "${infile}")
73 FILE(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OutputFile.h" "${outfile}")
75 # Test file glob
76 FILE(GLOB_RECURSE src_files "${CMAKE_CURRENT_SOURCE_DIR}/*")
77 MESSAGE("Files in ${CMAKE_CURRENT_SOURCE_DIR} are ${src_files}")
78 SET(expr "${CMAKE_CURRENT_SOURCE_DIR}/[sS][!a-su-zA-Z0-9][^a-qs-zA-Z0-9]ing?ile*.cxx")
79 MESSAGE("Glob expression is [${expr}].")
80 FILE(GLOB src_files "${expr}")
81 MESSAGE("Globbed files [${src_files}].")
83 ADD_EXECUTABLE(StringFileTest ${src_files})
85 # Test FOREACH range
86 MESSAGE("Cheack if FOREACH with RANGE works")
87 MACRO(TEST_RANGE ARGS CHECK)
88   SET(r)
89   FOREACH(a RANGE ${ARGS})
90     SET(r ${r} ${a})
91   ENDFOREACH(a)
92   MESSAGE("FOREACH with RANGE ${ARGS} produces ${r}")
93   IF("x${r}x" MATCHES "^x${CHECK}x$")
94   ELSE("x${r}x" MATCHES "^x${CHECK}x$")
95     MESSAGE(SEND_ERROR "The range resulted in: ${r} should be ${CHECK}")
96   ENDIF("x${r}x" MATCHES "^x${CHECK}x$")
97 ENDMACRO(TEST_RANGE)
98 TEST_RANGE("5" "0;1;2;3;4;5")
99 TEST_RANGE("3;5" "3;4;5")
100 TEST_RANGE("5;3" "5;4;3")
101 TEST_RANGE("3;10;2" "3;5;7;9")
102 TEST_RANGE("10;0;-3" "10;7;4;1")