9aae2b91017cc02d6dc70c02ed465e6e34310c22
[platform/upstream/glib.git] / tests / keyfile-test.c
1 #include <glib.h>
2 #include <string.h>
3 #include <stdlib.h>
4
5 static GKeyFile *
6 load_data (const gchar *data)
7 {
8   GKeyFile *keyfile;
9   GError *error = NULL;
10
11   keyfile = g_key_file_new ();
12   g_key_file_load_from_data (keyfile, data, -1, 0, &error);
13   if (error)
14     {
15       g_print ("Could not load data: %s\n", error->message);
16       exit (1);
17     }
18   
19   return keyfile;
20 }
21
22 static void
23 check_string_value (GKeyFile    *keyfile,
24                     const gchar *group,
25                     const gchar *key,
26                     const gchar *expected) 
27 {
28   GError *error = NULL;
29   gchar *value;
30
31   value = g_key_file_get_string (keyfile, group, key, &error);
32   if (error) 
33     {
34       g_print ("Group %s key %s: %s\n", group, key, error->message);      
35       exit (1);
36     }
37
38   g_assert (value != NULL);
39
40   if (strcmp (value, expected) != 0)
41     {
42       g_print ("Group %s key %s: "
43                "expected value '%s', actual value '%s'\n",
44                group, key, expected, value);      
45       exit (1);
46     }
47 }
48
49 static void
50 test_line_ends (void)
51 {
52   GKeyFile *keyfile;
53
54   const gchar *data = 
55     "[group1]\n"
56     "key1=value1\n"
57     "key2=value2\r\n"
58     "[group2]\r\n"
59     "key3=value3\r\r\n"
60     "key4=value4\n";
61
62   keyfile = load_data (data);
63
64   check_string_value (keyfile, "group1", "key1", "value1");
65   check_string_value (keyfile, "group1", "key2", "value2");
66   check_string_value (keyfile, "group2", "key3", "value3\r");
67   check_string_value (keyfile, "group2", "key4", "value4");
68 }
69
70 static void
71 test_whitespace (void)
72 {
73   GKeyFile *keyfile;
74
75   const gchar *data = 
76     "[group1]\n"
77     "key1 = value1\n"
78     "key2\t=\tvalue2\n"
79     " [ group2 ] \n"
80     "key3  =  value3  \n"
81     "key4  =  value \t4\n";
82   
83   keyfile = load_data (data);
84
85   check_string_value (keyfile, "group1", "key1", "value1");
86   check_string_value (keyfile, "group1", "key2", "value2");
87   check_string_value (keyfile, " group2 ", "key3", "value3  ");
88   check_string_value (keyfile, " group2 ", "key4", "value \t4");
89 }
90
91 int 
92 main (int argc, char *argv[])
93 {
94   test_line_ends ();
95   test_whitespace ();
96   
97   return 0;
98 }