EFL 1.7 svn doobies
[profile/ivi/efreet.git] / src / tests / ef_ini.c
1 #include "Efreet.h"
2 #include "config.h"
3 #include <stdio.h>
4 #include <string.h>
5 #include <stdlib.h>
6
7 int
8 ef_cb_ini_parse(void)
9 {
10     int ret = 1;
11     Efreet_Ini *ini;
12
13     putenv("LC_ALL=en_US");
14
15     ini = efreet_ini_new(PKG_DATA_DIR"/test/test.ini");
16     if (!ini)
17     {
18         printf("efreet_ini_parse() Failed to initialize Efreet_Ini\n");
19         return 0;
20     }
21
22     if (efreet_ini_section_set(ini, "contact"))
23     {
24         const char *val;
25         int ival;
26         unsigned int bval;
27
28         val = efreet_ini_string_get(ini, "Name");
29         if (!val || strcmp(val, "Foo Bar"))
30         {
31             printf("efreet_ini_string_get() Name parsed incorrectly\n");
32             ret = 0;
33         }
34
35         val = efreet_ini_localestring_get(ini, "Name");
36         if (!val || strcmp(val, "English Foo Bar"))
37         {
38             printf("efreet_ini_localestring_get() Name parsed incorrectly\n");
39             ret = 0;
40         }
41
42         val = efreet_ini_string_get(ini, "Email");
43         if (!val || strcmp(val, "foo@bar.com"))
44         {
45             printf("efreet_ini_string_get() Email parsed incorrectly\n");
46             ret = 0;
47         }
48
49         val = efreet_ini_localestring_get(ini, "Email");
50         if (!val || strcmp(val, "foo@bar.com"))
51         {
52             printf("efreet_ini_localestring_get() Email parsed incorrectly\n");
53             ret = 0;
54         }
55
56         ival = efreet_ini_int_get(ini, "Age");
57         if (ival != 30)
58         {
59             printf("efreet_ini_int_get() Age parsed incorrectly\n");
60             ret = 0;
61         }
62
63         bval = efreet_ini_boolean_get(ini, "TrueBoolean");
64         if (!bval)
65         {
66             printf("efreet_ini_boolean_get() TrueBoolean parsed incorrectly\n");
67             ret = 0;
68         }
69
70         bval = efreet_ini_boolean_get(ini, "FalseBoolean");
71         if (bval)
72         {
73             printf("efreet_ini_boolean_get() FalseBoolean parsed incorrectly\n");
74             ret = 0;
75         }
76
77         bval = efreet_ini_boolean_get(ini, "InvalidBoolean");
78         if (bval)
79         {
80             printf("efreet_ini_boolean_get() InvalidBoolean parsed incorrectly\n");
81             ret = 0;
82         }
83
84         val = efreet_ini_string_get(ini, "Escaped");
85         if (!val || strcmp(val, "line1\nline2\r\nline3\ttabbed \\ with a backslash and spaces"))
86         {
87             printf("efreet_ini_unescape() improperly unescaped value\n");
88             ret = 0;
89         }
90     }
91     else
92     {
93         printf("efreet_ini_section_set() Failed to set 'contact' section\n");
94         ret = 0;
95     }
96
97     efreet_ini_free(ini);
98
99     return ret;
100 }
101
102 int
103 ef_cb_ini_long_line(void)
104 {
105   Efreet_Ini *ini;
106   int ret = 1;
107
108   struct
109   {
110     char *key;
111     int len;
112   } tests[] = {
113     {"key", 5099},
114     {"key2", 5099},
115     {NULL, 0}
116   };
117
118   ini = efreet_ini_new(PKG_DATA_DIR"/test/long.ini");
119   if (!ini)
120   {
121     printf("Ini failed to parse.\n");
122     ret = 0;
123   }
124
125   if (ret) ret = efreet_ini_section_set(ini, "section");
126   if (ret)
127   {
128     const char *val;
129     int i, len;
130
131     for (i = 0; tests[i].key; i++)
132     {
133       val = efreet_ini_string_get(ini, tests[i].key);
134       if (val)
135       {
136         len = strlen(val);
137         if (len != tests[i].len)
138         {
139           printf("Invalid long line parsing. Value length: %d (expected %d)\n", len, tests[i].len);
140           ret = 0;
141         }
142       }
143       else
144       {
145         printf("Key missing: %s.", tests[i].key);
146         ret = 0;
147       }
148     }
149   }
150   else
151   {
152     printf("Section missing: 'section'.");
153   }
154
155   if (ini) efreet_ini_free(ini);
156   return ret;
157 }
158
159 int
160 ef_cb_ini_garbage(void)
161 {
162   Efreet_Ini *ini;
163   int ret = 1;
164    
165   ini = efreet_ini_new(PKG_DATA_DIR"/test/test_garbage");
166   if (!ini)
167   {
168     printf("Ini failed to parse.\n");
169     return 0;
170   }
171   if (ini->data) ret = 0;
172   efreet_ini_free(ini);
173   return ret;
174 }