Git init
[pkgs/e/elektra.git] / tests / test_serialize.c
1 /***************************************************************************
2  *          test_serialize.c  - serializing test suite
3  *                  -------------------
4  *  begin                : Mon 26 Nov 2007
5  *  copyright            : (C) 2007 by Markus Raab
6  *  email                : elektra@markus-raab.org
7  ****************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the BSD License (revised).                      *
13  *                                                                         *
14  ***************************************************************************/
15
16 #ifdef HAVE_CONFIG_H
17 #include "config.h"
18 #endif
19
20 #include <stdio.h>
21 #ifdef HAVE_STDLIB_H
22 #include <stdlib.h>
23 #endif
24 #ifdef HAVE_STRING_H
25 #include <string.h>
26 #endif
27
28 #include <tests.h>
29
30 #define MAX_SIZE 1000
31
32 void output_serialize (void* data, size_t length)
33 {
34         size_t i;
35         for (i=0; i<length; i++)
36         {
37                 printf ("%o %c ", ((char*)data)[i], ((char*)data)[i]);
38         }
39         printf ("\n");
40 }
41
42 void test_emptykey ()
43 {
44         char buffer[MAX_SIZE+1];
45         Key *key;
46         Key *get;
47
48         printf("Test empty key\n");
49
50         key = keyNew (0);
51         // printf ("%d\n", keyGetSerializedSize(key));
52         // succeed_if( keyGetSerializedSize(key) == 68, "empty key size wrong (32bit)");
53         keySerialize (key, buffer, MAX_SIZE);
54         // output_serialize (buffer, keyGetSerializedSize (key));
55         get = keyUnserialize (buffer);
56         // keyOutput (get);
57         // keyGenerate (get);
58         succeed_if (!compare_key (key,get,0), "did not get the same key after serializing");
59         keyDel (key);
60         keyDel (get);
61
62         key = keyNew (0);
63         // succeed_if( keyGetSerializedSize(key) == 68, "empty key size wrong (32bit)");
64         keySerialize (key, buffer, MAX_SIZE);
65         get = keyCompose (buffer);
66         // keyOutput (get);
67         // keyGenerate (get);
68         succeed_if (!compare_key (key,get,0), "did not get the same key after serializing");
69         keyDel (key);
70 }
71
72 void test_allkey ()
73 {
74         char buffer[MAX_SIZE+1];
75         Key *key;
76         Key *get;
77
78         printf("Test key with value/comment\n");
79
80         key = keyNew ("user",
81                 KEY_VALUE, "value",
82                 KEY_COMMENT, "comment",
83                 KEY_END);
84         // printf ("%d\n", keyGetSerializedSize(key));
85         // succeed_if( keyGetSerializedSize(key) == 94, "empty key size wrong (32bit)");
86         keySerialize (key, buffer, MAX_SIZE);
87         // output_serialize (buffer, keyGetSerializedSize (key));
88         get = keyUnserialize (buffer);
89         // keyOutput (get);
90         // keyGenerate (get);
91         succeed_if (!compare_key (key,get,0), "did not get the same key after serializing");
92         keyDel (key);
93         keyDel (get);
94
95         key = keyNew ("user",
96                 KEY_VALUE, "value",
97                 KEY_COMMENT, "comment",
98                 KEY_END);
99         // succeed_if( keyGetSerializedSize(key) == 94, "empty key size wrong (32bit)");
100         keySerialize (key, buffer, MAX_SIZE);
101         get = keyCompose (buffer);
102         // keyOutput (get);
103         // keyGenerate (get);
104         succeed_if (!compare_key (key,get,0), "did not get the same key after serializing");
105         keyDel (key);
106 }
107
108 void test_xml(char *file)
109 {
110         char buffer[MAX_SIZE+1];
111         Key *cur;
112         Key *key;
113         Key *get;
114         KeySet *ks = ksNew (0);
115
116         exit_if_fail( ksFromXMLfile(ks, file) == 0, "ksFromXMLfile failed.");
117
118         printf("Test key from xml file %s\n", file);
119
120         ksRewind(ks);
121         ksSort(ks);
122         while ( (cur = ksNext(ks)) )
123         {
124                 key = keyDup (cur);
125                 keySerialize (key, buffer, MAX_SIZE);
126                 // output_serialize (buffer, keyGetSerializedSize (key));
127                 get = keyUnserialize (buffer);
128                 // keyOutput (get);
129                 // keyGenerate (get);
130                 succeed_if (!compare_key (key,get,0), "did not get the same key after serializing");
131                 keyDel (get);
132                 keyDel (key);
133
134                 key = keyDup (cur);
135                 keySerialize (key, buffer, MAX_SIZE);
136                 get = keyCompose (buffer);
137                 // keyOutput (get);
138                 // keyGenerate (get);
139                 succeed_if (!compare_key (key,get,0), "did not get the same key after serializing");
140                 keyDel (key);
141         }
142         ksDel (ks);
143 }
144
145 int main()
146 {
147         printf("SERIALIZE TESTS\n");
148         printf("==================\n\n");
149
150         init ();
151
152         test_emptykey();
153         test_allkey();
154         test_xml(srcdir_file("key.xml"));
155         test_xml(srcdir_file("keyset.xml"));
156         printf("\ntest_serialize RESULTS: %d test(s) done. %d error(s).\n", nbTest, nbError);
157
158         return nbError;
159 }