CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkListToString.cmake
Go to the documentation of this file.
1 ###########################################################################
2 #
3 # Library: CTK
4 #
5 # Copyright (c) Kitware Inc.
6 #
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
10 #
11 # http://www.apache.org/licenses/LICENSE-2.0.txt
12 #
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 #
19 ###########################################################################
20 
21 function(ctk_list_to_string separator input_list output_string_var)
22  set(_string "")
23  cmake_policy(PUSH)
24  cmake_policy(SET CMP0007 OLD)
25  # Get list length
26  list(LENGTH input_list list_length)
27  # If the list has 0 or 1 element, there is no need to loop over.
28  if(list_length LESS 2)
29  set(_string "${input_list}")
30  else()
31  math(EXPR last_element_index "${list_length} - 1")
32  foreach(index RANGE ${last_element_index})
33  # Get current item_value
34  list(GET input_list ${index} item_value)
35  # .. and append to output string
36  set(_string "${_string}${item_value}")
37  # Append separator if current element is NOT the last one.
38  if(NOT index EQUAL last_element_index)
39  set(_string "${_string}${separator}")
40  endif()
41  endforeach()
42  endif()
43  set(${output_string_var} ${_string} PARENT_SCOPE)
44  cmake_policy(POP)
45 endfunction()
46 
47 
48 #
49 # cmake -DTEST_ctk_list_to_string_test:BOOL=ON -P ListToString.cmake
50 #
51 function(ctk_list_to_string_test)
52 
53  function(ctk_list_to_string_test_check id current_output expected_output)
54  if(NOT "${current_output}" STREQUAL "${expected_output}")
55  message(FATAL_ERROR "Problem with ctk_list_to_string() - See testcase: ${id}\n"
56  "current_output:${current_output}\n"
57  "expected_output:${expected_output}")
58  endif()
59  endfunction()
60 
61  set(id 1)
62  set(case${id}_input "")
63  set(case${id}_expected_output "")
64  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
65  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
66 
67  set(id 2)
68  set(case${id}_input item1)
69  set(case${id}_expected_output "item1")
70  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
71  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
72 
73  set(id 3)
74  set(case${id}_input item1 item2)
75  set(case${id}_expected_output "item1^^item2")
76  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
77  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
78 
79  set(id 4)
80  set(case${id}_input item1 item2 item3)
81  set(case${id}_expected_output "item1^^item2^^item3")
82  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
83  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
84 
85  set(id 5)
86  set(case${id}_input item1 item2 item3 item4)
87  set(case${id}_expected_output "item1^^item2^^item3^^item4")
88  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
89  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
90 
91  set(id 6)
92  set(case${id}_input item1 "" item3 item4)
93  set(case${id}_expected_output "item1^^item3^^item4")
94  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
95  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
96 
97  set(id 7)
98  set(case${id}_input item1 ^^item2 item3 item4)
99  set(case${id}_expected_output "item1^^^^item2^^item3^^item4")
100  ctk_list_to_string("^^" "${case${id}_input}" case${id}_current_output)
101  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
102 
103  set(id 8)
104  set(case${id}_input item1 item2 item3 item4)
105  set(case${id}_expected_output "item1item2item3item4")
106  ctk_list_to_string("" "${case${id}_input}" case${id}_current_output)
107  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
108 
109  set(id 9)
110  set(case${id}_input item1 item2 item3 item4)
111  set(case${id}_expected_output "item1 item2 item3 item4")
112  ctk_list_to_string(" " "${case${id}_input}" case${id}_current_output)
113  ctk_list_to_string_test_check(${id} "${case${id}_current_output}" "${case${id}_expected_output}")
114 
115  message("SUCCESS")
116 endfunction()
117 if(TEST_ctk_list_to_string_test)
118  ctk_list_to_string_test()
119 endif()