Rename C-based tests
[yaz-moved-to-github.git] / test / test_file_glob.c
diff --git a/test/test_file_glob.c b/test/test_file_glob.c
new file mode 100644 (file)
index 0000000..8cfc3c3
--- /dev/null
@@ -0,0 +1,84 @@
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2010 Index Data
+ * See the file LICENSE for details.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#include <yaz/file_glob.h>
+#include <yaz/test.h>
+#include <yaz/log.h>
+#include <yaz/wrbuf.h>
+
+void tst_with_path(const char *tpath)
+{
+    yaz_glob_res_t glob_res;
+    int ret = yaz_file_glob(tpath, &glob_res);
+    if (ret == 0)
+    {
+        size_t n = yaz_file_glob_get_num(glob_res);
+        size_t i;
+        for (i = 0; i < n; i++)
+        {
+            yaz_log(YLOG_LOG, "match %s", yaz_file_glob_get_file(glob_res, i));
+        }
+    }
+    yaz_file_globfree(&glob_res);
+}
+
+void tst(void)
+{
+    yaz_glob_res_t glob_res;
+    int ret;
+    WRBUF tpath = wrbuf_alloc();
+    const char *srcdir = getenv("srcdir");
+    
+    if (srcdir)
+    {
+        wrbuf_puts(tpath, srcdir);
+        wrbuf_puts(tpath, "/");
+    }
+    wrbuf_puts(tpath, "Make*.am");
+    ret = yaz_file_glob(wrbuf_cstr(tpath), &glob_res);
+    YAZ_CHECK_EQ(ret, 0);
+
+    YAZ_CHECK_EQ(1, yaz_file_glob_get_num(glob_res));
+    if (yaz_file_glob_get_num(glob_res) == 1)
+    {
+        const char *f = yaz_file_glob_get_file(glob_res, 0);
+        size_t l_match = strlen("Makefile.am");
+        YAZ_CHECK(f && strlen(f) >= l_match);
+        if (f && strlen(f) >= l_match)
+        {
+            YAZ_CHECK(!strcmp(f + strlen(f) - l_match, "Makefile.am"));
+        }
+    }
+    wrbuf_destroy(tpath);
+    yaz_file_globfree(&glob_res);
+}
+
+int main (int argc, char **argv)
+{
+    YAZ_CHECK_INIT(argc, argv);
+    if (argc >= 2)
+        tst_with_path(argv[1]);
+    else
+        tst();
+    YAZ_CHECK_TERM;
+}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+