summaryrefslogtreecommitdiff
path: root/test/utils_str.c
diff options
context:
space:
mode:
authorRob Barnes <robbarnes@google.com>2021-07-27 15:29:51 -0600
committerCommit Bot <commit-bot@chromium.org>2021-08-09 16:43:13 +0000
commitb82517a459d8e9394a1ea4a2a0148232c61f45e5 (patch)
tree9d37d20245dae1e41e074c80ae064c5823d12003 /test/utils_str.c
parent48f83b8b045e4105c4811bf8982cc109e7408b9e (diff)
downloadchrome-ec-b82517a459d8e9394a1ea4a2a0148232c61f45e5.tar.gz
util: Add strcspn
Add the standard string function strcspn. strcspn calculates the length of the initial segment of s which consists entirely of bytes not in reject. BUG=None TEST=make run-utils_str BRANCH=None Signed-off-by: Rob Barnes <robbarnes@google.com> Change-Id: I3eb9a4fff42cb0fdcdb288d00f8070e0f22b2179 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3057730 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'test/utils_str.c')
-rw-r--r--test/utils_str.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/utils_str.c b/test/utils_str.c
index c592f6100a..f184abffa6 100644
--- a/test/utils_str.c
+++ b/test/utils_str.c
@@ -260,6 +260,33 @@ static int test_snprintf(void)
TEST_CHECK(strncmp(buffer, "1234", sizeof(buffer)));
}
+static int test_strcspn(void)
+{
+ const char str1[] = "abc";
+ const char str2[] = "This is a string\nwith newlines!";
+
+ TEST_EQ(strcspn(str1, "a"), (size_t)0, "%zu");
+ TEST_EQ(strcspn(str1, "b"), (size_t)1, "%zu");
+ TEST_EQ(strcspn(str1, "c"), (size_t)2, "%zu");
+ TEST_EQ(strcspn(str1, "ccc"), (size_t)2, "%zu");
+ TEST_EQ(strcspn(str1, "cba"), (size_t)0, "%zu");
+ TEST_EQ(strcspn(str1, "cb"), (size_t)1, "%zu");
+ TEST_EQ(strcspn(str1, "bc"), (size_t)1, "%zu");
+ TEST_EQ(strcspn(str1, "cbc"), (size_t)1, "%zu");
+ TEST_EQ(strcspn(str1, "z"), strlen(str1), "%zu");
+ TEST_EQ(strcspn(str1, "xyz"), strlen(str1), "%zu");
+ TEST_EQ(strcspn(str1, ""), strlen(str1), "%zu");
+
+ TEST_EQ(strcspn(str2, " "), (size_t)4, "%zu");
+ TEST_EQ(strcspn(str2, "\n"), (size_t)16, "%zu");
+ TEST_EQ(strcspn(str2, "\n "), (size_t)4, "%zu");
+ TEST_EQ(strcspn(str2, "!"), strlen(str2) - 1, "%zu");
+ TEST_EQ(strcspn(str2, "z"), strlen(str2), "%zu");
+ TEST_EQ(strcspn(str2, "z!"), strlen(str2) - 1, "%zu");
+
+ return EC_SUCCESS;
+}
+
void run_test(int argc, char **argv)
{
test_reset();
@@ -279,6 +306,7 @@ void run_test(int argc, char **argv)
RUN_TEST(test_strncasecmp);
RUN_TEST(test_atoi);
RUN_TEST(test_snprintf);
+ RUN_TEST(test_strcspn);
test_print_result();
}