1add_libc_testsuite(libc_string_unittests) 2 3add_subdirectory(memory_utils) 4 5add_libc_unittest( 6 memccpy_test 7 SUITE 8 libc_string_unittests 9 SRCS 10 memccpy_test.cpp 11 DEPENDS 12 libc.src.string.memccpy 13) 14 15add_libc_unittest( 16 mempcpy_test 17 SUITE 18 libc_string_unittests 19 SRCS 20 mempcpy_test.cpp 21 DEPENDS 22 libc.src.string.mempcpy 23) 24 25add_libc_unittest( 26 memchr_test 27 SUITE 28 libc_string_unittests 29 SRCS 30 memchr_test.cpp 31 DEPENDS 32 libc.src.string.memchr 33) 34 35add_libc_unittest( 36 memrchr_test 37 SUITE 38 libc_string_unittests 39 SRCS 40 memrchr_test.cpp 41 DEPENDS 42 libc.src.string.memrchr 43) 44 45add_libc_unittest( 46 stpcpy_test 47 SUITE 48 libc_string_unittests 49 SRCS 50 stpcpy_test.cpp 51 DEPENDS 52 libc.src.string.stpcpy 53) 54 55add_libc_unittest( 56 stpncpy_test 57 SUITE 58 libc_string_unittests 59 SRCS 60 stpncpy_test.cpp 61 DEPENDS 62 libc.src.string.stpncpy 63) 64 65add_libc_unittest( 66 strcat_test 67 SUITE 68 libc_string_unittests 69 SRCS 70 strcat_test.cpp 71 DEPENDS 72 libc.src.string.strcat 73) 74 75add_libc_unittest( 76 strchr_test 77 SUITE 78 libc_string_unittests 79 SRCS 80 strchr_test.cpp 81 DEPENDS 82 libc.src.string.strchr 83) 84 85add_libc_unittest( 86 strcmp_test 87 SUITE 88 libc_string_unittests 89 SRCS 90 strcmp_test.cpp 91 DEPENDS 92 libc.src.string.strcmp 93) 94 95add_libc_unittest( 96 strcpy_test 97 SUITE 98 libc_string_unittests 99 SRCS 100 strcpy_test.cpp 101 DEPENDS 102 libc.src.string.strcpy 103) 104 105add_libc_unittest( 106 strcspn_test 107 SUITE 108 libc_string_unittests 109 SRCS 110 strcspn_test.cpp 111 DEPENDS 112 libc.src.string.strcspn 113) 114 115add_libc_unittest( 116 strdup_test 117 SUITE 118 libc_string_unittests 119 SRCS 120 strdup_test.cpp 121 DEPENDS 122 libc.include.stdlib 123 libc.src.string.strdup 124) 125 126add_libc_unittest( 127 strlcat_test 128 SUITE 129 libc_string_unittests 130 SRCS 131 strlcat_test.cpp 132 DEPENDS 133 libc.src.string.strlcat 134) 135 136add_libc_unittest( 137 strlcpy_test 138 SUITE 139 libc_string_unittests 140 SRCS 141 strlcpy_test.cpp 142 DEPENDS 143 libc.src.string.strlcpy 144) 145 146add_libc_unittest( 147 strlen_test 148 SUITE 149 libc_string_unittests 150 SRCS 151 strlen_test.cpp 152 DEPENDS 153 libc.src.string.strlen 154) 155 156add_libc_unittest( 157 strncat_test 158 SUITE 159 libc_string_unittests 160 SRCS 161 strncat_test.cpp 162 DEPENDS 163 libc.src.string.strncat 164) 165 166add_libc_unittest( 167 strncmp_test 168 SUITE 169 libc_string_unittests 170 SRCS 171 strncmp_test.cpp 172 DEPENDS 173 libc.src.string.strncmp 174) 175 176add_libc_unittest( 177 strncpy_test 178 SUITE 179 libc_string_unittests 180 SRCS 181 strncpy_test.cpp 182 DEPENDS 183 libc.src.string.strncpy 184) 185 186add_libc_unittest( 187 strndup_test 188 SUITE 189 libc_string_unittests 190 SRCS 191 strndup_test.cpp 192 DEPENDS 193 libc.include.stdlib 194 libc.src.string.strndup 195) 196 197add_libc_unittest( 198 strnlen_test 199 SUITE 200 libc_string_unittests 201 SRCS 202 strnlen_test.cpp 203 DEPENDS 204 libc.src.string.strnlen 205) 206 207add_libc_unittest( 208 strpbrk_test 209 SUITE 210 libc_string_unittests 211 SRCS 212 strpbrk_test.cpp 213 DEPENDS 214 libc.src.string.strpbrk 215) 216 217add_libc_unittest( 218 strrchr_test 219 SUITE 220 libc_string_unittests 221 SRCS 222 strrchr_test.cpp 223 DEPENDS 224 libc.src.string.strrchr 225) 226 227add_libc_unittest( 228 strspn_test 229 SUITE 230 libc_string_unittests 231 SRCS 232 strspn_test.cpp 233 DEPENDS 234 libc.src.string.strspn 235) 236 237add_libc_unittest( 238 strstr_test 239 SUITE 240 libc_string_unittests 241 SRCS 242 strstr_test.cpp 243 DEPENDS 244 libc.src.string.strstr 245) 246 247add_libc_unittest( 248 strtok_test 249 SUITE 250 libc_string_unittests 251 SRCS 252 strtok_test.cpp 253 DEPENDS 254 libc.src.string.strtok 255) 256 257add_libc_unittest( 258 strtok_r_test 259 SUITE 260 libc_string_unittests 261 SRCS 262 strtok_r_test.cpp 263 DEPENDS 264 libc.src.string.strtok_r 265) 266 267# Tests all implementations that can run on the target CPU. 268function(add_libc_multi_impl_test name) 269 get_property(fq_implementations GLOBAL PROPERTY ${name}_implementations) 270 foreach(fq_config_name IN LISTS fq_implementations) 271 get_target_property(required_cpu_features ${fq_config_name} REQUIRE_CPU_FEATURES) 272 cpu_supports(can_run "${required_cpu_features}") 273 if(can_run) 274 add_libc_unittest( 275 ${fq_config_name}_test 276 SUITE 277 libc_string_unittests 278 COMPILE_OPTIONS 279 ${LIBC_COMPILE_OPTIONS_NATIVE} 280 LINK_LIBRARIES 281 LibcMemoryHelpers 282 ${ARGN} 283 DEPENDS 284 ${fq_config_name} 285 ) 286 get_fq_target_name(${fq_config_name}_test fq_target_name) 287 else() 288 message(STATUS "Skipping test for '${fq_config_name}' insufficient host cpu features '${required_cpu_features}'") 289 endif() 290 endforeach() 291endfunction() 292 293add_libc_multi_impl_test(bcmp SRCS bcmp_test.cpp) 294add_libc_multi_impl_test(bzero SRCS bzero_test.cpp) 295add_libc_multi_impl_test(memcmp SRCS memcmp_test.cpp) 296add_libc_multi_impl_test(memcpy SRCS memcpy_test.cpp) 297add_libc_multi_impl_test(memmove SRCS memmove_test.cpp) 298add_libc_multi_impl_test(memset SRCS memset_test.cpp) 299