From 763942d8c7243db84afd59ba13f2e396ceb93b07 Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sun, 31 Dec 2017 19:57:48 +0000 Subject: [PATCH] Fix and simpligy windows behaviour. Author: Vincent Torri --- src/tests/evil/evil_test_libgen.c | 308 ++++++++++++++++++++++++++++++ 1 file changed, 308 insertions(+) create mode 100644 src/tests/evil/evil_test_libgen.c 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 . + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#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); +}