fix(string_view): cleanup memmcpy line artifacts
This commit is contained in:
@@ -19,7 +19,8 @@ if(BUILD_TESTING)
|
|||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(CRITERION REQUIRED IMPORTED_TARGET GLOBAL criterion)
|
pkg_check_modules(CRITERION REQUIRED IMPORTED_TARGET GLOBAL criterion)
|
||||||
|
|
||||||
add_executable(tests ${CMAKE_CURRENT_SOURCE_DIR}/test/darr.c)
|
add_executable(tests ${CMAKE_CURRENT_SOURCE_DIR}/test/darr.c
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/test/string-view.c)
|
||||||
target_link_libraries(tests c-libs PkgConfig::CRITERION)
|
target_link_libraries(tests c-libs PkgConfig::CRITERION)
|
||||||
|
|
||||||
add_test(NAME all_tests COMMAND tests)
|
add_test(NAME all_tests COMMAND tests)
|
||||||
|
|||||||
@@ -175,10 +175,10 @@ char *sv_clone(StringView sv);
|
|||||||
|
|
||||||
///
|
///
|
||||||
///@brief Concatenate a list of string views with a separator. The result must
|
///@brief Concatenate a list of string views with a separator. The result must
|
||||||
///be freed
|
/// be freed
|
||||||
///
|
///
|
||||||
///@return char a null-terminated string containing all svs separated with sep.
|
///@return char a null-terminated string containing all svs separated with sep.
|
||||||
///Must be freed
|
/// Must be freed
|
||||||
///
|
///
|
||||||
char *sv_concat_with_sep(const StringView *svs, size_t n, StringView sep);
|
char *sv_concat_with_sep(const StringView *svs, size_t n, StringView sep);
|
||||||
|
|
||||||
@@ -340,7 +340,7 @@ char *sv_concat_with_sep(const StringView *svs, size_t n, StringView sep) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t l = sv_len(svs[i]);
|
size_t l = sv_len(svs[i]);
|
||||||
memcpy(wri
|
memcpy(write_head, svs[i].data, l);
|
||||||
write_head += l;
|
write_head += l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
test/string-view.c
Normal file
30
test/string-view.c
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#include "c-libs/string-view.h"
|
||||||
|
#include <criterion/criterion.h>
|
||||||
|
|
||||||
|
Test(sv, construction) {
|
||||||
|
const char *data = "abcdefg";
|
||||||
|
size_t len = strlen(data);
|
||||||
|
|
||||||
|
StringView sv1 = sv_new(data);
|
||||||
|
StringView sv2 = sv_new_sized(data, 2);
|
||||||
|
|
||||||
|
cr_assert(sv1.data == data);
|
||||||
|
cr_assert(sv1.end == data + len);
|
||||||
|
cr_assert(sv2.data == data);
|
||||||
|
cr_assert(sv2.end == data + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
Test(sv, inspection) {
|
||||||
|
const char *data = "abcdefg";
|
||||||
|
size_t len = strlen(data);
|
||||||
|
|
||||||
|
StringView sv1 = sv_new(data);
|
||||||
|
char *clone = sv_clone(sv1);
|
||||||
|
|
||||||
|
cr_assert(sv_len(sv1) == len);
|
||||||
|
cr_assert_str_eq(data, clone);
|
||||||
|
cr_assert(sv_eq(sv1, sv1));
|
||||||
|
cr_assert_not(sv_eq(sv1, sv_drop(sv1, 1)));
|
||||||
|
|
||||||
|
free(clone);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user