X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/b90f122bd10bd896f2f9b0cf5676bcd436a7d42e..c6e44487b124077c23c7e95059b908c77ffdc4a3:/lib/t-filepart.c?ds=sidebyside diff --git a/lib/t-filepart.c b/lib/t-filepart.c index 1bf55f3..3eff101 100644 --- a/lib/t-filepart.c +++ b/lib/t-filepart.c @@ -1,3 +1,4 @@ + /* * This file is part of DisOrder. * Copyright (C) 2005, 2007, 2008 Richard Kettlewell @@ -19,21 +20,47 @@ */ #include "test.h" -void test_filepart(void) { - fprintf(stderr, "test_filepart\n"); - check_string(d_dirname("/"), "/"); - check_string(d_dirname("////"), "/"); - check_string(d_dirname("/spong"), "/"); - check_string(d_dirname("////spong"), "/"); - check_string(d_dirname("/foo/bar"), "/foo"); - check_string(d_dirname("////foo/////bar"), "////foo"); - check_string(d_dirname("./bar"), "."); - check_string(d_dirname(".//bar"), "."); - check_string(d_dirname("."), "."); - check_string(d_dirname(".."), "."); - check_string(d_dirname("../blat"), ".."); - check_string(d_dirname("..//blat"), ".."); - check_string(d_dirname("wibble"), "."); +#define check_filepart(PATH, DIR, BASE) do { \ + char *d = d_dirname(PATH), *b = d_basename(PATH); \ + \ + if(strcmp(d, DIR)) { \ + fprintf(stderr, "%s:%d: d_dirname failed:\n" \ + " path: %s\n" \ + " got: %s\n" \ + "expected: %s\n", \ + __FILE__, __LINE__, \ + PATH, d, DIR); \ + count_error(); \ + } \ + if(strcmp(b, BASE)) { \ + fprintf(stderr, "%s:%d: d_basename failed:\n" \ + " path: %s\n" \ + " got: %s\n" \ + "expected: %s\n", \ + __FILE__, __LINE__, \ + PATH, d, DIR); \ + count_error(); \ + } \ +} while(0) + +static void test_filepart(void) { + check_filepart("", "", ""); + check_filepart("/", "/", "/"); + check_filepart("////", "/", "/"); + check_filepart("/spong", "/", "spong"); + check_filepart("/spong/", "/", "spong"); + check_filepart("/spong//", "/", "spong"); + check_filepart("////spong", "/", "spong"); + check_filepart("/foo/bar", "/foo", "bar"); + check_filepart("/foo/bar/", "/foo", "bar"); + check_filepart("////foo/////bar", "////foo", "bar"); + check_filepart("./bar", ".", "bar"); + check_filepart(".//bar", ".", "bar"); + check_filepart(".", ".", "."); + check_filepart("..", ".", ".."); + check_filepart("../blat", "..", "blat"); + check_filepart("..//blat", "..", "blat"); + check_filepart("wibble", ".", "wibble"); check_string(extension("foo.c"), ".c"); check_string(extension(".c"), ".c"); check_string(extension("."), "."); @@ -47,6 +74,8 @@ void test_filepart(void) { check_string(strip_extension("foo.bar/wibble.spong"), "foo.bar/wibble"); } +TEST(filepart); + /* Local Variables: c-basic-offset:2