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  memchr_test
47  SUITE
48    libc_string_unittests
49  SRCS
50    memchr_test.cpp
51  DEPENDS
52    libc.src.string.memchr
53)
54
55add_libc_unittest(
56  memcmp_test
57  SUITE
58    libc_string_unittests
59  SRCS
60    memcmp_test.cpp
61  DEPENDS
62    libc.src.string.memcmp
63)
64
65add_libc_unittest(
66  memmove_test
67  SUITE
68    libc_string_unittests
69  SRCS
70    memmove_test.cpp
71  DEPENDS
72    libc.src.string.memcmp
73    libc.src.string.memmove
74)
75
76add_libc_unittest(
77  strchr_test
78  SUITE
79    libc_string_unittests
80  SRCS
81    strchr_test.cpp
82  DEPENDS
83    libc.src.string.strchr
84)
85
86add_libc_unittest(
87  strstr_test
88  SUITE
89    libc_string_unittests
90  SRCS
91    strstr_test.cpp
92  DEPENDS
93    libc.src.string.strstr
94)
95
96add_libc_unittest(
97  strncpy_test
98  SUITE
99    libc_string_unittests
100  SRCS
101    strncpy_test.cpp
102  DEPENDS
103    libc.src.string.strncpy
104)
105
106add_libc_unittest(
107  strnlen_test
108  SUITE
109    libc_string_unittests
110  SRCS
111    strnlen_test.cpp
112  DEPENDS
113    libc.src.string.strnlen
114)
115
116add_libc_unittest(
117  memrchr_test
118  SUITE
119    libc_string_unittests
120  SRCS
121    memrchr_test.cpp
122  DEPENDS
123    libc.src.string.memrchr
124)
125
126add_libc_unittest(
127  strrchr_test
128  SUITE
129    libc_string_unittests
130  SRCS
131    strrchr_test.cpp
132  DEPENDS
133    libc.src.string.strrchr
134)
135
136add_libc_unittest(
137  strcspn_test
138  SUITE
139    libc_string_unittests
140  SRCS
141    strcspn_test.cpp
142  DEPENDS
143    libc.src.string.strcspn
144)
145
146add_libc_unittest(
147  strspn_test
148  SUITE
149    libc_string_unittests
150  SRCS
151    strspn_test.cpp
152  DEPENDS
153    libc.src.string.strspn
154)
155
156add_libc_unittest(
157  strpbrk_test
158  SUITE
159    libc_string_unittests
160  SRCS
161    strpbrk_test.cpp
162  DEPENDS
163    libc.src.string.strpbrk
164)
165
166add_libc_unittest(
167  strtok_test
168  SUITE
169    libc_string_unittests
170  SRCS
171    strtok_test.cpp
172  DEPENDS
173    libc.src.string.strtok
174)
175
176add_libc_unittest(
177  strtok_r_test
178  SUITE
179    libc_string_unittests
180  SRCS
181    strtok_r_test.cpp
182  DEPENDS
183    libc.src.string.strtok_r
184)
185
186# Tests all implementations that can run on the target CPU.
187function(add_libc_multi_impl_test name)
188  get_property(fq_implementations GLOBAL PROPERTY ${name}_implementations)
189  foreach(fq_config_name IN LISTS fq_implementations)
190    get_target_property(required_cpu_features ${fq_config_name} REQUIRE_CPU_FEATURES)
191    cpu_supports(can_run "${required_cpu_features}")
192    if(can_run)
193      add_libc_unittest(
194        ${fq_config_name}_test
195        SUITE
196          libc_string_unittests
197        DEPENDS
198          ${fq_config_name}
199        COMPILE_OPTIONS
200          ${LIBC_COMPILE_OPTIONS_NATIVE}
201        ${ARGN}
202      )
203    else()
204      message(STATUS "Skipping test for '${fq_config_name}' insufficient host cpu features '${required_cpu_features}'")
205    endif()
206  endforeach()
207endfunction()
208
209add_libc_multi_impl_test(memcpy SRCS memcpy_test.cpp)
210add_libc_multi_impl_test(memset SRCS memset_test.cpp)
211add_libc_multi_impl_test(bzero SRCS bzero_test.cpp)
212