summaryrefslogtreecommitdiff
path: root/src/tests/eina/eina_fnmatch_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/eina/eina_fnmatch_test.c')
-rw-r--r--src/tests/eina/eina_fnmatch_test.c174
1 files changed, 174 insertions, 0 deletions
diff --git a/src/tests/eina/eina_fnmatch_test.c b/src/tests/eina/eina_fnmatch_test.c
new file mode 100644
index 0000000000..445549aa03
--- /dev/null
+++ b/src/tests/eina/eina_fnmatch_test.c
@@ -0,0 +1,174 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "eina_fnmatch.h"
+
+// ref: http://kirste.userpage.fu-berlin.de/chemnet/use/info/libc/libc_16.html
+
+int
+test_normal_string(void)
+{
+ const char * string = "Yep. This is just a n0rmal string!";
+ const char * pattern = "*";
+ const int flags = 0;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern, string, flags);
+ printf("test normal string (T): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+test_unix_path(void)
+{
+ const char * string_valid = "~/linux/usr/include/bits/types/__fpos64_t.h";
+ const char * string_invalid = "~/linux/usr/include/bits/types/__fpos64_t_h";
+ const char * pattern = "~/linux/usr/include/bits/types/__fpos64_t.h";
+ const int flags = FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern, string_valid, flags);
+ printf("test unix path (T): %cok!\n", !ret?:'n');
+
+ ret |= !eina_fnmatch(pattern, string_invalid, flags);
+ printf("test unix path (F): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+test_win_path(void)
+{
+ const char * string_valid = "C:\\Program Files (x86)[1]<3>$4?!\\Git";
+ const char * string_invalid = "\\Program Files (x86)\\Git";
+ const char * pattern = "?:\\Program Files*\\Git";
+ const int flags = FNM_PATHNAME | FNM_NOESCAPE | FNM_PERIOD;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern, string_valid, flags);
+ printf("test win path (T): %cok!\n", !ret?:'n');
+
+ ret |= !eina_fnmatch(pattern, string_invalid, flags);
+ printf("test win path (F): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+test_flag_pathname(void)
+{
+ const char * string = "/usr/share/clang/";
+ const char * pattern_valid = "/*/*/*/";
+ const char * pattern_invalid = "*";
+ const int flags = FNM_PATHNAME;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern_valid, string, 0);
+ printf("test FNM_PATHNAME flag (T): %cok!\n", !ret?:'n');
+
+ ret |= eina_fnmatch(pattern_invalid, string, 0);
+ printf("test FNM_PATHNAME flag (T): %cok!\n", !ret?:'n');
+
+ ret |= eina_fnmatch(pattern_valid, string, flags);
+ printf("test FNM_PATHNAME flag (T): %cok!\n", !ret?:'n');
+
+ ret |= !eina_fnmatch(pattern_invalid, string, flags);
+ printf("test FNM_PATHNAME flag (F): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+test_flag_period(void)
+{
+ const char * string = ".config/.isolated-storage/d.none.FBD7";
+ const char * pattern_valid = ".*/*/*";
+ const char * pattern_invalid = "*/*/*";
+ const int flags = FNM_PERIOD;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern_valid, string, 0);
+ printf("test FNM_PERIOD flag (T): %cok!\n", !ret?:'n');
+
+ ret |= eina_fnmatch(pattern_invalid, string, 0);
+ printf("test FNM_PERIOD flag (T): %cok!\n", !ret?:'n');
+
+ ret |= eina_fnmatch(pattern_valid, string, flags);
+ printf("test FNM_PERIOD flag (T): %cok!\n", !ret?:'n');
+
+ ret |= !eina_fnmatch(pattern_invalid, string, flags);
+ printf("test FNM_PERIOD flag (F): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+test_flag_pathname_period(void)
+{
+ const char * string = ".config/.isolated-storage/d.none.FBD7";
+ const char * pattern_valid = ".*/.*/*";
+ const char * pattern_invalid = ".*/*/*";
+ const int flags = FNM_PATHNAME | FNM_PERIOD;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern_valid, string, 0);
+ printf("test FNM_PATHNAME+FNM_PERIOD flag (T): %cok!\n", !ret?:'n');
+
+ ret |= eina_fnmatch(pattern_invalid, string, 0);
+ printf("test FNM_PATHNAME+FNM_PERIOD flag (T): %cok!\n", !ret?:'n');
+
+ ret |= eina_fnmatch(pattern_valid, string, flags);
+ printf("test FNM_PATHNAME+FNM_PERIOD flag (T): %cok!\n", !ret?:'n');
+
+ ret |= !eina_fnmatch(pattern_invalid, string, flags);
+ printf("test FNM_PATHNAME+FNM_PERIOD flag (F): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+test_flag_noescape(void)
+{
+ const char * string_valid = "C:\\Program Files";
+ const char * pattern = "?:\\*";
+ const int flags = FNM_NOESCAPE;
+
+ int ret = 0;
+
+ ret |= eina_fnmatch(pattern, string_valid, flags);
+ printf("test FNM_NOESCAPE flag (T): %cok!\n", !ret?:'n');
+
+ ret |= !eina_fnmatch(pattern, string_valid, 0);
+ printf("test FNM_NOESCAPE flag (F): %cok!\n", !ret?:'n');
+
+ return ret;
+}
+
+int
+main(void)
+{
+ printf("---\n");
+ test_normal_string();
+ printf("---\n");
+ test_flag_pathname();
+ printf("---\n");
+ test_flag_period();
+ printf("---\n");
+ test_flag_pathname_period();
+ printf("---\n");
+ test_flag_noescape();
+ printf("---\n");
+ test_unix_path();
+ printf("---\n");
+ test_win_path();
+
+ return 0;
+}