From f6161698827488cc21f3f3726d5af0cb2a89ce4b Mon Sep 17 00:00:00 2001 From: Martin Pärtel Date: Fri, 14 Sep 2012 16:59:49 +0300 Subject: Implemented my_dirname and added unit tests for it. --- tests/internals/test_internals.c | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tests/internals/test_internals.c (limited to 'tests/internals/test_internals.c') 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 +#include +#include + +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; +} + -- cgit v1.2.3