diff options
author | Martin Pärtel <martin.partel@gmail.com> | 2012-09-14 16:59:49 +0300 |
---|---|---|
committer | Martin Pärtel <martin.partel@gmail.com> | 2012-09-14 16:59:49 +0300 |
commit | f6161698827488cc21f3f3726d5af0cb2a89ce4b (patch) | |
tree | b7ebdfdfe8f9a70905a0878415e768f66200d953 /tests | |
parent | 66f00111c4e886e244152e460ada62164c975d4d (diff) | |
download | bindfs-f6161698827488cc21f3f3726d5af0cb2a89ce4b.tar.gz |
Implemented my_dirname and added unit tests for it.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 4 | ||||
-rw-r--r-- | tests/internals/Makefile.am | 8 | ||||
-rw-r--r-- | tests/internals/test_internals.c | 65 | ||||
-rwxr-xr-x | tests/internals/test_internals_valgrind.sh | 3 |
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 |