fix(string_view): cleanup memmcpy line artifacts
This commit is contained in:
@@ -19,7 +19,8 @@ if(BUILD_TESTING)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
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)
|
||||
|
||||
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
|
||||
///be freed
|
||||
/// be freed
|
||||
///
|
||||
///@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);
|
||||
|
||||
@@ -340,7 +340,7 @@ char *sv_concat_with_sep(const StringView *svs, size_t n, StringView sep) {
|
||||
}
|
||||
|
||||
size_t l = sv_len(svs[i]);
|
||||
memcpy(wri
|
||||
memcpy(write_head, svs[i].data, 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