aboutsummaryrefslogtreecommitdiffstats
path: root/tests
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
parent66f00111c4e886e244152e460ada62164c975d4d (diff)
downloadbindfs-f6161698827488cc21f3f3726d5af0cb2a89ce4b.tar.gz
Implemented my_dirname and added unit tests for it.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/internals/Makefile.am8
-rw-r--r--tests/internals/test_internals.c65
-rwxr-xr-xtests/internals/test_internals_valgrind.sh3
4 files changed, 80 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ce11f95..8210f2b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -2,4 +2,8 @@
noinst_PROGRAMS = readdir_inode
readdir_inode_SOURCES = readdir_inode.c
+test_internals_CPPFLAGS = ${my_CPPFLAGS} ${fuse_CFLAGS}
+test_internals_CFLAGS = ${my_CFLAGS}
+
TESTS = test_bindfs.rb
+SUBDIRS = internals
diff --git a/tests/internals/Makefile.am b/tests/internals/Makefile.am
new file mode 100644
index 0000000..7f1568b
--- /dev/null
+++ b/tests/internals/Makefile.am
@@ -0,0 +1,8 @@
+
+noinst_PROGRAMS = test_internals
+test_internals_SOURCES = test_internals.c $(top_builddir)/src/misc.c
+
+test_internals_CPPFLAGS = ${my_CPPFLAGS} ${fuse_CFLAGS} -I$(top_builddir)/src
+test_internals_CFLAGS = ${my_CFLAGS}
+
+TESTS = test_internals_valgrind.sh
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;
+}
+
diff --git a/tests/internals/test_internals_valgrind.sh b/tests/internals/test_internals_valgrind.sh
new file mode 100755
index 0000000..a84c664
--- /dev/null
+++ b/tests/internals/test_internals_valgrind.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd `dirname "$0"`
+valgrind --error-exitcode=100 ./test_internals