summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kernel/tests/util.c13
-rw-r--r--src/kernel/util.h4
2 files changed, 17 insertions, 0 deletions
diff --git a/src/kernel/tests/util.c b/src/kernel/tests/util.c
index 5bc8656..81c36d6 100644
--- a/src/kernel/tests/util.c
+++ b/src/kernel/tests/util.c
@@ -21,6 +21,19 @@ TEST(memcmp) {
TEST_IF(0 < memcmp("654", "555", 3));
}
+TEST(static_strcmp) {
+ TEST_IF(0 == static_strcmp("", ""));
+ TEST_IF(0 == static_strcmp("same", "same"));
+
+ TEST_IF(0 != static_strcmp("same", "diff"));
+ TEST_IF(0 != static_strcmp("same!", "same"));
+ TEST_IF(0 != static_strcmp("same", "same!"));
+
+ TEST_IF(0 > static_strcmp("555", "654"));
+ TEST_IF(0 < static_strcmp("654", "555"));
+}
+
void tests_utils() {
TEST_RUN(memcmp);
+ TEST_RUN(static_strcmp);
}
diff --git a/src/kernel/util.h b/src/kernel/util.h
index b50810d..0aa2c4c 100644
--- a/src/kernel/util.h
+++ b/src/kernel/util.h
@@ -8,3 +8,7 @@ void *memcpy(void *dest, const void *src, size_t n);
void *memset(void *s, int c, size_t n);
int memcmp(const void *s1, const void *s2, size_t n);
+
+// s1 MUST be a string known at compiletime
+#define static_strcmp(s1, s2) \
+ memcmp(s1, s2, sizeof(s1))