aboutsummaryrefslogtreecommitdiffstats
path: root/tests/internals/test_internals.c
diff options
context:
space:
mode:
authorMartin Pärtel <martin.partel@gmail.com>2012-09-14 16:59:49 +0300
committerMartin Pärtel <martin.partel@gmail.com>2012-09-14 16:59:49 +0300
commitf6161698827488cc21f3f3726d5af0cb2a89ce4b (patch)
treeb7ebdfdfe8f9a70905a0878415e768f66200d953 /tests/internals/test_internals.c
parent66f00111c4e886e244152e460ada62164c975d4d (diff)
downloadbindfs-f6161698827488cc21f3f3726d5af0cb2a89ce4b.tar.gz
Implemented my_dirname and added unit tests for it.
Diffstat (limited to 'tests/internals/test_internals.c')
-rw-r--r--tests/internals/test_internals.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/internals/test_internals.c b/tests/internals/test_internals.c
new file mode 100644
index 0000000..b388ddb
--- /dev/null
+++ b/tests/internals/test_internals.c
@@ -0,0 +1,65 @@
+
+#include "misc.h"
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int failures = 0;
+
+#define TEST_ASSERT(expr) do { if (!(expr)) { printf("Assertion failed: `%s'\n", #expr); failures++; } } while (0);
+
+void test_my_dirname(char *arg, const char *expected)
+{
+ char *orig = strdup(arg);
+
+ const char *ret = my_dirname(arg);
+ if (strcmp(ret, expected) != 0) {
+ printf("Expected my_dirname(`%s') to return `%s' but got `%s'\n", orig, expected, ret);
+ failures++;
+ }
+
+ free(orig);
+}
+
+void my_dirname_suite()
+{
+ char buf[256];
+
+ strcpy(buf, "/foo/bar/baz");
+ test_my_dirname(buf, "/foo/bar");
+
+ strcpy(buf, "/foo/bar");
+ test_my_dirname(buf, "/foo");
+
+ strcpy(buf, "/foo");
+ test_my_dirname(buf, "/");
+
+ strcpy(buf, "/foo/");
+ test_my_dirname(buf, "/foo");
+
+ strcpy(buf, "/");
+ test_my_dirname(buf, "/");
+
+ strcpy(buf, "foo");
+ test_my_dirname(buf, ".");
+
+ strcpy(buf, "foo/bar");
+ test_my_dirname(buf, "foo");
+
+ strcpy(buf, "./foo/bar");
+ test_my_dirname(buf, "./foo");
+
+ strcpy(buf, "./foo");
+ test_my_dirname(buf, ".");
+
+ strcpy(buf, ".");
+ test_my_dirname(buf, "..");
+}
+
+int main()
+{
+ my_dirname_suite();
+
+ return (failures > 0) ? 1 : 0;
+}
+