summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Williams <andy@andywilliams.me>2017-12-31 19:57:48 +0000
committerAndy Williams <andy@andywilliams.me>2017-12-31 19:57:48 +0000
commit763942d8c7243db84afd59ba13f2e396ceb93b07 (patch)
tree53a6f152bb4a5082cbe4876c51e87062b73baa04
parentd234458dfcd9202c33f75049da6ebdad7888f4c5 (diff)
downloadefl-763942d8c7243db84afd59ba13f2e396ceb93b07.tar.gz
Fix and simpligy windows behaviour.
Author: Vincent Torri
-rw-r--r--src/tests/evil/evil_test_libgen.c308
1 files changed, 308 insertions, 0 deletions
diff --git a/src/tests/evil/evil_test_libgen.c b/src/tests/evil/evil_test_libgen.c
new file mode 100644
index 0000000000..eb8c17f18b
--- /dev/null
+++ b/src/tests/evil/evil_test_libgen.c
@@ -0,0 +1,308 @@
+/* EVIL - EFL library for Windows port
+ * Copyright (C) 2017 Vincent Torri
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library;
+ * if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+#include <libgen.h>
+
+#include "evil_suite.h"
+
+START_TEST(evil_libgen_null)
+{
+ char *dname;
+ char *bname;
+
+ dname = dirname(NULL);
+ fail_if(strcmp(dname, ".") != 0);
+ bname = basename(NULL);
+ fail_if(strcmp(bname, ".") != 0);
+}
+END_TEST
+
+START_TEST(evil_libgen_empty)
+{
+ const char *path = "";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, ".") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, ".") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_path)
+{
+ const char *path = "/usr/lib";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "/usr") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "lib") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_path_with_slash)
+{
+ const char *path = "/usr/";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "/") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "usr") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_folder)
+{
+ const char *path = "usr";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, ".") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "usr") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_slash)
+{
+ const char *path = "/";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "/") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "/") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_dot)
+{
+ const char *path = ".";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, ".") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, ".") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_dot_dot)
+{
+ const char *path = "..";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, ".") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "..") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_win_dir_1)
+{
+ const char *path = "c:/foo/bar";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "c:/foo") != 0);
+ bname = basename(basec);
+fail_if(strcmp(bname, "bar") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_win_dir_2)
+{
+ const char *path = "c:/foo\\bar";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "c:/foo") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "bar") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_win_dir_3)
+{
+ const char *path = "c:\\foo/bar";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "c:\\foo") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "bar") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+START_TEST(evil_libgen_win_dir_4)
+{
+ const char *path = "c:\\foo\\bar";
+ char *dirc;
+ char *basec;
+ char *dname;
+ char *bname;
+
+ dirc = strdup(path);
+ fail_if(dirc == NULL);
+ basec = strdup(path);
+ fail_if(basec == NULL);
+
+ dname = dirname(dirc);
+ fail_if(strcmp(dname, "c:\\foo") != 0);
+ bname = basename(basec);
+ fail_if(strcmp(bname, "bar") != 0);
+
+ free(dirc);
+ free(basec);
+}
+END_TEST
+
+void evil_test_libgen(TCase *tc)
+{
+ tcase_add_test(tc, evil_libgen_null);
+ tcase_add_test(tc, evil_libgen_empty);
+ tcase_add_test(tc, evil_libgen_path);
+ tcase_add_test(tc, evil_libgen_path_with_slash);
+ tcase_add_test(tc, evil_libgen_folder);
+ tcase_add_test(tc, evil_libgen_slash);
+ tcase_add_test(tc, evil_libgen_dot);
+ tcase_add_test(tc, evil_libgen_dot_dot);
+ tcase_add_test(tc, evil_libgen_win_dir_1);
+ tcase_add_test(tc, evil_libgen_win_dir_2);
+ tcase_add_test(tc, evil_libgen_win_dir_3);
+ tcase_add_test(tc, evil_libgen_win_dir_4);
+}