From 550b094b93eb13031f01ff40390aaa3b1d370901 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Wed, 25 Aug 2010 11:25:38 +0900 Subject: [PATCH] Unit testing for QFS_CompressPath --- libs/util/Makefile.am | 7 +++++++ libs/util/test-qfs.c | 47 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 libs/util/test-qfs.c diff --git a/libs/util/Makefile.am b/libs/util/Makefile.am index aacffc4a4..572c74835 100644 --- a/libs/util/Makefile.am +++ b/libs/util/Makefile.am @@ -41,4 +41,11 @@ libQFutil_la_SOURCES= \ qfplist.c quakefs.c quakeio.c riff.c script.c sizebuf.c string.c sys.c \ va.c ver_check.c wad.c wadfile.c zone.c $(fnmatch) $(getopt) +check_PROGRAMS=test-qfs + +test_qfs_SOURCES=test-qfs.c +test_qfs_LDADD=$(builddir)/libQFutil.la +test_qfs_DEPENDENCIES=$(builddir)/libQFutil.la + EXTRA_DIST= $(fnmatch_src) $(getopt_src) +TESTS=$(check_PROGRAMS) diff --git a/libs/util/test-qfs.c b/libs/util/test-qfs.c new file mode 100644 index 000000000..e778e8150 --- /dev/null +++ b/libs/util/test-qfs.c @@ -0,0 +1,47 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif +#ifdef HAVE_STRING_H +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif + +#include "QF/quakefs.h" + +struct { + const char *path; + const char *expect; +} path_tests [] = { + {"", ""}, + {"/", "/"}, + {"\\", "/"}, + {".", ""}, + {"./", ""}, + {"/.", "/"}, + {"..", ".."}, + {"/..", "/"}, + {"foo/..", ""}, + {"foo/bar/..", "foo"}, + {"../foo/..", ".."}, + {"\\blah\\../foo/..\\baz/.\\x", "/baz/x"}, +}; +#define num_path_tests (sizeof (path_tests) / sizeof (path_tests[0])) + +int +main (int argc, const char **argv) +{ + size_t i; + int res = 0; + + for (i = 0; i < num_path_tests; i++) { + char *cpath = QFS_CompressPath (path_tests[i].path); + if (strcmp (cpath, path_tests[i].expect)) { + fprintf (stderr, "FAIL: (%zd) \"%s\" -> \"%s\", got \"%s\"\n", i, + path_tests[i].path, path_tests[i].expect, cpath); + res = 1; + } + } + return res; +}