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  strchr_test
57  SUITE
58    libc_string_unittests
59  SRCS
60    strchr_test.cpp
61  DEPENDS
62    libc.src.string.strchr
63)
64
65# Tests all implementations that can run on the host.
66function(add_libc_multi_impl_test name)
67  get_property(fq_implementations GLOBAL PROPERTY ${name}_implementations)
68  foreach(fq_config_name IN LISTS fq_implementations)
69    get_target_property(required_cpu_features ${fq_config_name} REQUIRE_CPU_FEATURES)
70    host_supports(can_run "${required_cpu_features}")
71    if(can_run)
72      add_libc_unittest(
73        ${fq_config_name}_test
74        SUITE
75          libc_string_unittests
76        DEPENDS
77          ${fq_config_name}
78        ${ARGN}
79      )
80    else()
81      message(STATUS "Skipping test for '${fq_config_name}' insufficient host cpu features '${required_cpu_features}'")
82    endif()
83  endforeach()
84endfunction()
85
86add_libc_multi_impl_test(memcpy SRCS memcpy_test.cpp)
87add_libc_multi_impl_test(memset SRCS memset_test.cpp)
88add_libc_multi_impl_test(bzero SRCS bzero_test.cpp)
89