efl

Форк
0
/
eina_test_vpath.c 
112 строк · 3.3 Кб
1
#ifdef HAVE_CONFIG_H
2
# include <config.h>
3
#endif
4

5
#include <Eina.h>
6
#include <check.h>
7
#include "eina_suite.h"
8
#ifndef _WIN32
9
# include <pwd.h>
10
#endif
11

12
EFL_START_TEST(eina_test_vpath_valid)
13
{
14
   char test[PATH_MAX];
15

16
   ck_assert_str_eq(eina_vpath_resolve("/"), "/");
17
   ck_assert_str_eq(eina_vpath_resolve("./"), "./");
18
   ck_assert_str_eq(eina_vpath_resolve("..bla"), "..bla");
19
   ck_assert_str_eq(eina_vpath_resolve(".bla"), ".bla");
20

21
   snprintf(test, sizeof(test), "%s/", eina_environment_home_get());
22
   ck_assert_str_eq(eina_vpath_resolve("~/"), test);
23

24
   snprintf(test, sizeof(test), "%s/bla", eina_environment_home_get());
25
   ck_assert_str_eq(eina_vpath_resolve("(:home:)/bla"), test);
26
   ck_assert_str_eq(eina_vpath_resolve("${home}/bla"), test);
27
   ck_assert_str_eq(eina_vpath_resolve("/test/for/the/last/case"), "/test/for/the/last/case");
28
}
29
EFL_END_TEST
30

31
EFL_START_TEST(eina_test_vpath_invalid)
32
{
33
   EXPECT_ERROR_START;
34
   ck_assert_ptr_eq(eina_vpath_resolve("(:asdfasdfafasdf"), NULL);
35
   EXPECT_ERROR_END;
36
   EXPECT_ERROR_START;
37
   ck_assert_ptr_eq(eina_vpath_resolve("(:missing_slash:)"), NULL);
38
   EXPECT_ERROR_END;
39
   EXPECT_ERROR_START;
40
   ck_assert_ptr_eq(eina_vpath_resolve("(:"), NULL);
41
   EXPECT_ERROR_END;
42
   EXPECT_ERROR_START;
43
   ck_assert_ptr_eq(eina_vpath_resolve("(:home:)"), NULL);
44
   EXPECT_ERROR_END;
45
   EXPECT_ERROR_START;
46
   ck_assert_ptr_eq(eina_vpath_resolve("(:wrong_meta_key:)/"), NULL);
47
   EXPECT_ERROR_END;
48
   EXPECT_ERROR_START;
49
   ck_assert_ptr_eq(eina_vpath_resolve("${asdfasdfafasdf"), NULL);
50
   EXPECT_ERROR_END;
51
   EXPECT_ERROR_START;
52
   ck_assert_ptr_eq(eina_vpath_resolve("${missing_slash}"), NULL);
53
   EXPECT_ERROR_END;
54
   EXPECT_ERROR_START;
55
   ck_assert_ptr_eq(eina_vpath_resolve("${"), NULL);
56
   EXPECT_ERROR_END;
57
   EXPECT_ERROR_START;
58
   ck_assert_ptr_eq(eina_vpath_resolve("${home}"), NULL);
59
   EXPECT_ERROR_END;
60
   EXPECT_ERROR_START;
61
   ck_assert_ptr_eq(eina_vpath_resolve("${wrong_meta_key}/"), NULL);
62
   EXPECT_ERROR_END;
63
   EXPECT_ERROR_START;
64
   ck_assert_ptr_eq(eina_vpath_resolve("${home:)"), NULL);
65
   EXPECT_ERROR_END;
66
   EXPECT_ERROR_START;
67
   ck_assert_ptr_eq(eina_vpath_resolve("${wrong_meta_key:)/"), NULL);
68
   EXPECT_ERROR_END;
69
}
70
EFL_END_TEST
71

72

73
EFL_START_TEST(eina_test_vpath_snprintf)
74
{
75
   char *string = "blablabla";
76
   int x = 1337;
77
   char buf[PATH_MAX];
78
   char cmp[PATH_MAX];
79

80
   eina_vpath_resolve_snprintf(buf, sizeof(buf), "(:home:)/%s/%d/", string, x);
81
   snprintf(cmp, sizeof(cmp), "%s/%s/%d/", eina_environment_home_get(), string, x);
82
   ck_assert_str_eq(buf, cmp);
83

84
   eina_vpath_resolve_snprintf(buf, sizeof(buf), "${home}/%s/%d/", string, x);
85
   snprintf(cmp, sizeof(cmp), "%s/%s/%d/", eina_environment_home_get(), string, x);
86
   ck_assert_str_eq(buf, cmp);
87
}
88
EFL_END_TEST
89

90
EFL_START_TEST(eina_test_vpath_user)
91
{
92
#ifdef HAVE_GETPWENT
93
   char buf[PATH_MAX];
94
   char cmp[PATH_MAX];
95
   struct passwd *pwent;
96

97
   pwent = getpwuid(getuid());
98

99
   eina_vpath_resolve_snprintf(buf, sizeof(buf), "~%s/foo/bar/king/kong/", pwent->pw_name);
100
   snprintf(cmp, sizeof(cmp), "%s/foo/bar/king/kong/", pwent->pw_dir);
101
   ck_assert_str_eq(buf, cmp);
102
#endif
103
}
104
EFL_END_TEST
105

106
void eina_test_vpath(TCase *tc)
107
{
108
   tcase_add_test(tc, eina_test_vpath_invalid);
109
   tcase_add_test(tc, eina_test_vpath_valid);
110
   tcase_add_test(tc, eina_test_vpath_snprintf);
111
   tcase_add_test(tc, eina_test_vpath_user);
112
}
113

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.