From 7d5b3c1e9ae35cc2f33c05c1f24f8c9a262eb618 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Mon, 18 Apr 2022 00:03:19 +0200 Subject: string_view: Implement string_view_eq function --- string_view.c | 6 ++++++ string_view.h | 3 ++- test/string_view_test.c | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/string_view.c b/string_view.c index d9d6632..d730627 100644 --- a/string_view.c +++ b/string_view.c @@ -18,6 +18,7 @@ #include "string_view.h" #include +#include #include string_view_t @@ -37,6 +38,11 @@ string_view_from_cstr(const char *cstr) return string_view_new(cstr, strlen(cstr)); } +bool +string_view_eq(string_view_t a, string_view_t b) +{ + return a.size == b.size && memcmp(a.data, b.data, a.size) == 0; +} string_view_t string_view_chop_by_delim(string_view_t *sv, char delim) diff --git a/string_view.h b/string_view.h index 2aa4402..2ac6684 100644 --- a/string_view.h +++ b/string_view.h @@ -32,12 +32,13 @@ string_view_t string_view_new(const char *cstr, size_t size); string_view_t string_view_from_cstr(const char *cstr); +bool string_view_eq(string_view_t a, string_view_t b); + string_view_t string_view_chop_by_delim(string_view_t *sv, char delim); /* bool string_view_index_of(string_view_t sv, char c, size_t *index); -bool string_view_eq(string_view_t a, string_view_t b); bool string_view_eqi(string_view_t a, string_view_t b); diff --git a/test/string_view_test.c b/test/string_view_test.c index d4ecf9e..a050239 100644 --- a/test/string_view_test.c +++ b/test/string_view_test.c @@ -48,6 +48,22 @@ test_from_cstr(const MunitParameter params[], return MUNIT_OK; } +static MunitResult +test_eq(const MunitParameter params[], + void *user_data_or_fixture) +{ + string_view_t a = string_view_from_cstr("hello"); + string_view_t b = string_view_from_cstr("world"); + + assert_false(string_view_eq(a, b)); + + b = string_view_from_cstr("hello"); + + assert_true(string_view_eq(a, b)); + + return MUNIT_OK; +} + static MunitResult test_chop_by_delim_when_has_delim(const MunitParameter params[], void *user_data_or_fixture) @@ -85,6 +101,7 @@ test_chop_by_delim_when_has_no_delim(const MunitParameter params[], static MunitTest tests[] = { { "/test_create_new", test_create_new, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_from_cstr", test_from_cstr, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, + { "/test_eq", test_eq, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_chop_by_delim_when_has_delim", test_chop_by_delim_when_has_delim, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/test_chop_by_delim_when_has_no_delim", test_chop_by_delim_when_has_no_delim, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } -- cgit v1.2.3