X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/3c35e8a0720481f5c235fe32d7f128642661bc41..2257512d31e410938ae2f7f7f511830989c58f7f:/lib/t-filepart.c?ds=inline diff --git a/lib/t-filepart.c b/lib/t-filepart.c index d2e741b..3eff101 100644 --- a/lib/t-filepart.c +++ b/lib/t-filepart.c @@ -20,20 +20,47 @@ */ #include "test.h" +#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_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"), "."); + 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("."), ".");