1add_libc_testsuite(libc_string_unittests)
2
3add_subdirectory(memory_utils)
4
5add_libc_unittest(
6  strcat_test
7  SUITE
8    libc_string_unittests
9  SRCS
10    strcat_test.cpp
11  DEPENDS
12    libc.src.string.strcat
13)
14
15add_libc_unittest(
16  strcpy_test
17  SUITE
18    libc_string_unittests
19  SRCS
20    strcpy_test.cpp
21  DEPENDS
22    libc.src.string.strcpy
23)
24
25add_libc_unittest(
26  strlen_test
27  SUITE
28    libc_string_unittests
29  SRCS
30    strlen_test.cpp
31  DEPENDS
32    libc.src.string.strlen
33)
34
35add_libc_unittest(
36  strcmp_test
37  SUITE
38    libc_string_unittests
39  SRCS
40    strcmp_test.cpp
41  DEPENDS
42    libc.src.string.strcmp
43)
44
45add_libc_unittest(
46  strncmp_test
47  SUITE
48    libc_string_unittests
49  SRCS
50    strncmp_test.cpp
51  DEPENDS
52    libc.src.string.strncmp
53)
54
55add_libc_unittest(
56  memchr_test
57  SUITE
58    libc_string_unittests
59  SRCS
60    memchr_test.cpp
61  DEPENDS
62    libc.src.string.memchr
63)
64
65add_libc_unittest(
66  strchr_test
67  SUITE
68    libc_string_unittests
69  SRCS
70    strchr_test.cpp
71  DEPENDS
72    libc.src.string.strchr
73)
74
75add_libc_unittest(
76  strstr_test
77  SUITE
78    libc_string_unittests
79  SRCS
80    strstr_test.cpp
81  DEPENDS
82    libc.src.string.strstr
83)
84
85add_libc_unittest(
86  strncpy_test
87  SUITE
88    libc_string_unittests
89  SRCS
90    strncpy_test.cpp
91  DEPENDS
92    libc.src.string.strncpy
93)
94
95add_libc_unittest(
96  strnlen_test
97  SUITE
98    libc_string_unittests
99  SRCS
100    strnlen_test.cpp
101  DEPENDS
102    libc.src.string.strnlen
103)
104
105add_libc_unittest(
106  memrchr_test
107  SUITE
108    libc_string_unittests
109  SRCS
110    memrchr_test.cpp
111  DEPENDS
112    libc.src.string.memrchr
113)
114
115add_libc_unittest(
116  strrchr_test
117  SUITE
118    libc_string_unittests
119  SRCS
120    strrchr_test.cpp
121  DEPENDS
122    libc.src.string.strrchr
123)
124
125add_libc_unittest(
126  strcspn_test
127  SUITE
128    libc_string_unittests
129  SRCS
130    strcspn_test.cpp
131  DEPENDS
132    libc.src.string.strcspn
133)
134
135add_libc_unittest(
136  strspn_test
137  SUITE
138    libc_string_unittests
139  SRCS
140    strspn_test.cpp
141  DEPENDS
142    libc.src.string.strspn
143)
144
145add_libc_unittest(
146  strpbrk_test
147  SUITE
148    libc_string_unittests
149  SRCS
150    strpbrk_test.cpp
151  DEPENDS
152    libc.src.string.strpbrk
153)
154
155add_libc_unittest(
156  strtok_test
157  SUITE
158    libc_string_unittests
159  SRCS
160    strtok_test.cpp
161  DEPENDS
162    libc.src.string.strtok
163)
164
165add_libc_unittest(
166  strtok_r_test
167  SUITE
168    libc_string_unittests
169  SRCS
170    strtok_r_test.cpp
171  DEPENDS
172    libc.src.string.strtok_r
173)
174
175# Tests all implementations that can run on the target CPU.
176function(add_libc_multi_impl_test name)
177  get_property(fq_implementations GLOBAL PROPERTY ${name}_implementations)
178  foreach(fq_config_name IN LISTS fq_implementations)
179    get_target_property(required_cpu_features ${fq_config_name} REQUIRE_CPU_FEATURES)
180    cpu_supports(can_run "${required_cpu_features}")
181    if(can_run)
182      add_libc_unittest(
183        ${fq_config_name}_test
184        SUITE
185          libc_string_unittests
186        DEPENDS
187          ${fq_config_name}
188        COMPILE_OPTIONS
189          ${LIBC_COMPILE_OPTIONS_NATIVE}
190        ${ARGN}
191      )
192    else()
193      message(STATUS "Skipping test for '${fq_config_name}' insufficient host cpu features '${required_cpu_features}'")
194    endif()
195  endforeach()
196endfunction()
197
198add_libc_multi_impl_test(memcpy SRCS memcpy_test.cpp)
199add_libc_multi_impl_test(memset SRCS memset_test.cpp)
200add_libc_multi_impl_test(bzero SRCS bzero_test.cpp)
201add_libc_multi_impl_test(memcmp SRCS memcmp_test.cpp)
202add_libc_multi_impl_test(memmove SRCS memmove_test.cpp)
203