add_custom_target(libc-string-tests)
add_subdirectory(memory_utils)
add_libc_test(
bcopy_test
SUITE
libc-string-tests
SRCS
bcopy_test.cpp
DEPENDS
libc.src.string.bcopy
LINK_LIBRARIES
LibcMemoryHelpers
)
add_header_library(
strchr_test_support
HDRS
StrchrTest.h
)
add_libc_test(
index_test
SUITE
libc-string-tests
SRCS
index_test.cpp
DEPENDS
libc.src.string.index
.strchr_test_support
)
add_libc_test(
memccpy_test
SUITE
libc-string-tests
SRCS
memccpy_test.cpp
DEPENDS
libc.src.string.memccpy
)
add_libc_test(
mempcpy_test
SUITE
libc-string-tests
SRCS
mempcpy_test.cpp
DEPENDS
libc.src.string.mempcpy
)
add_libc_test(
memmem_test
SUITE
libc-string-tests
SRCS
memmem_test.cpp
DEPENDS
libc.src.string.memmem
)
add_libc_test(
memchr_test
SUITE
libc-string-tests
SRCS
memchr_test.cpp
DEPENDS
libc.src.string.memchr
)
add_libc_test(
memrchr_test
SUITE
libc-string-tests
SRCS
memrchr_test.cpp
DEPENDS
libc.src.string.memrchr
)
add_libc_test(
rindex_test
SUITE
libc-string-tests
SRCS
rindex_test.cpp
DEPENDS
libc.src.string.rindex
.strchr_test_support
)
add_libc_test(
stpcpy_test
SUITE
libc-string-tests
SRCS
stpcpy_test.cpp
DEPENDS
libc.src.string.stpcpy
)
add_libc_test(
stpncpy_test
SUITE
libc-string-tests
SRCS
stpncpy_test.cpp
DEPENDS
libc.src.string.stpncpy
)
add_libc_test(
strcat_test
SUITE
libc-string-tests
SRCS
strcat_test.cpp
DEPENDS
libc.src.string.strcat
)
add_libc_test(
strchr_test
SUITE
libc-string-tests
SRCS
strchr_test.cpp
DEPENDS
libc.src.string.strchr
.strchr_test_support
)
add_libc_test(
strchrnul_test
SUITE
libc-string-tests
SRCS
strchrnul_test.cpp
DEPENDS
libc.src.string.strchrnul
)
add_libc_test(
strcmp_test
SUITE
libc-string-tests
SRCS
strcmp_test.cpp
DEPENDS
libc.src.string.strcmp
)
add_libc_test(
strcasecmp_test
SUITE
libc-string-tests
SRCS
strcasecmp_test.cpp
DEPENDS
libc.src.string.strcasecmp
)
add_libc_test(
strcasestr_test
SUITE
libc-string-tests
SRCS
strcasestr_test.cpp
DEPENDS
libc.src.string.strcasestr
)
add_libc_test(
strcoll_test
SUITE
libc-string-tests
SRCS
strcoll_test.cpp
DEPENDS
libc.src.string.strcoll
)
add_libc_test(
strcpy_test
SUITE
libc-string-tests
SRCS
strcpy_test.cpp
DEPENDS
libc.src.string.strcpy
)
add_libc_test(
strcspn_test
SUITE
libc-string-tests
SRCS
strcspn_test.cpp
DEPENDS
libc.src.string.strcspn
)
add_libc_test(
strdup_test
SUITE
libc-string-tests
SRCS
strdup_test.cpp
DEPENDS
libc.include.stdlib
libc.src.string.strdup
libc.src.errno.errno
)
add_libc_test(
strerror_test
SUITE
libc-string-tests
SRCS
strerror_test.cpp
DEPENDS
libc.src.string.strerror
)
add_libc_test(
strerror_r_test
SUITE
libc-string-tests
SRCS
strerror_r_test.cpp
DEPENDS
libc.src.string.strerror_r
)
add_libc_test(
strlcat_test
SUITE
libc-string-tests
SRCS
strlcat_test.cpp
DEPENDS
libc.src.string.strlcat
)
add_libc_test(
strlcpy_test
SUITE
libc-string-tests
SRCS
strlcpy_test.cpp
DEPENDS
libc.src.string.strlcpy
)
add_libc_test(
strlen_test
SUITE
libc-string-tests
SRCS
strlen_test.cpp
DEPENDS
libc.src.string.strlen
)
add_libc_test(
strncat_test
SUITE
libc-string-tests
SRCS
strncat_test.cpp
DEPENDS
libc.src.string.strncat
)
add_libc_test(
strncmp_test
SUITE
libc-string-tests
SRCS
strncmp_test.cpp
DEPENDS
libc.src.string.strncmp
)
add_libc_test(
strncasecmp_test
SUITE
libc-string-tests
SRCS
strncasecmp_test.cpp
DEPENDS
libc.src.string.strncasecmp
)
add_libc_test(
strncpy_test
SUITE
libc-string-tests
SRCS
strncpy_test.cpp
DEPENDS
libc.src.string.strncpy
)
add_libc_test(
strndup_test
SUITE
libc-string-tests
SRCS
strndup_test.cpp
DEPENDS
libc.include.stdlib
libc.src.string.strndup
)
add_libc_test(
strnlen_test
SUITE
libc-string-tests
SRCS
strnlen_test.cpp
DEPENDS
libc.src.string.strnlen
)
add_libc_test(
strpbrk_test
SUITE
libc-string-tests
SRCS
strpbrk_test.cpp
DEPENDS
libc.src.string.strpbrk
)
add_libc_test(
strrchr_test
SUITE
libc-string-tests
SRCS
strrchr_test.cpp
DEPENDS
libc.src.string.strrchr
.strchr_test_support
)
add_libc_test(
strsep_test
SUITE
libc-string-tests
SRCS
strsep_test.cpp
DEPENDS
libc.src.string.strsep
)
add_libc_test(
strsignal_test
SUITE
libc-string-tests
SRCS
strsignal_test.cpp
DEPENDS
libc.src.string.strsignal
)
add_libc_test(
strspn_test
SUITE
libc-string-tests
SRCS
strspn_test.cpp
DEPENDS
libc.src.string.strspn
)
add_libc_test(
strstr_test
SUITE
libc-string-tests
SRCS
strstr_test.cpp
DEPENDS
libc.src.string.strstr
)
add_libc_test(
strtok_test
SUITE
libc-string-tests
SRCS
strtok_test.cpp
DEPENDS
libc.src.string.strtok
)
add_libc_test(
strtok_r_test
SUITE
libc-string-tests
SRCS
strtok_r_test.cpp
DEPENDS
libc.src.string.strtok_r
)
add_libc_test(
strxfrm_test
SUITE
libc-string-tests
SRCS
strxfrm_test.cpp
DEPENDS
libc.src.string.strxfrm
)
add_libc_test(
memset_explicit_test
SUITE
libc-string-tests
SRCS
memset_explicit_test.cpp
DEPENDS
libc.src.string.memset_explicit
)
# Tests all implementations that can run on the target CPU.
function(add_libc_multi_impl_test name)
get_property(fq_implementations GLOBAL PROPERTY ${name}_implementations)
foreach(fq_config_name IN LISTS fq_implementations)
get_target_property(required_cpu_features ${fq_config_name} REQUIRE_CPU_FEATURES)
cpu_supports(can_run "${required_cpu_features}")
if(can_run)
string(FIND ${fq_config_name} "." last_dot_loc REVERSE)
math(EXPR name_loc "${last_dot_loc} + 1")
string(SUBSTRING ${fq_config_name} ${name_loc} -1 target_name)
add_libc_test(
${target_name}_test
SUITE
libc-string-tests
COMPILE_OPTIONS
${LIBC_COMPILE_OPTIONS_NATIVE}
LINK_LIBRARIES
LibcMemoryHelpers
${ARGN}
DEPENDS
${fq_config_name}
libc.src.__support.macros.sanitizer
)
get_fq_target_name(${fq_config_name}_test fq_target_name)
else()
message(STATUS "Skipping test for '${fq_config_name}' insufficient host cpu features '${required_cpu_features}'")
endif()
endforeach()
endfunction()
add_libc_multi_impl_test(bcmp SRCS bcmp_test.cpp)
add_libc_multi_impl_test(bzero SRCS bzero_test.cpp)
add_libc_multi_impl_test(memcmp SRCS memcmp_test.cpp)
add_libc_multi_impl_test(memcpy SRCS memcpy_test.cpp)
add_libc_multi_impl_test(memmove SRCS memmove_test.cpp)
add_libc_multi_impl_test(memset SRCS memset_test.cpp)