1 /***************************************************************************
2 * test_key.c - Key struct test suite
4 * begin : Thu Aug 03 2006
5 * copyright : (C) 2006 by Yannick Lecaillez
6 * email : sizon5@gmail.com
7 ****************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the BSD License (revised). *
14 ***************************************************************************/
27 char *expectedKeyName;
28 char *expectedBaseName;
29 char *expectedFRootName;
30 char *expectedParentName;
33 struct test tstKeyName[] =
35 { "Normal key", "system/foo/bar",
42 { "Key containing redundant & trailing separator", "system//foo//bar//",
43 "system/foo/bar", /* keyName */
44 "bar", /* keyBaseName */
45 "system", /* keyGetFullRootName */
46 "system/foo" /* keyGetParentName */
49 { "Normal user key", "user/key",
50 "user/key", /* keyName */
51 "key", /* keyBaseName */
52 "user:env1", /* keyGetFullRootName */
53 "user" /* keyGetParentName */
57 { "Normal user key with owner", "user:owner/key",
58 "user/key", /* keyName */
59 "key", /* keyBaseName */
60 "user:owner", /* keyGetFullRootName */
61 "user" /* keyGetParentName */
65 { "Depth user key with owner", "user:owner/folder/long/base/dir/key",
66 "user/folder/long/base/dir/key", /* keyName */
67 "key", /* keyBaseName */
68 "user:owner", /* keyGetFullRootName */
69 "user/folder/long/base/dir" /* keyGetParentName */
73 { "Key containing escaped separator", "user:yl///foo\\///bar\\/foo_bar\\",
74 "user/foo\\//bar\\/foo_bar\\", /* keyName */
75 "bar\\/foo_bar\\", /* keyBaseName */
76 "user:yl", /* keyGetFullRootName */
77 "user/foo\\/" /* keyGetParentName */
81 { "Key containing escaped separator at the end", "user:yl///foo\\///bar\\/foo_bar\\/",
82 "user/foo\\//bar\\/foo_bar\\/", /* keyName */
83 "bar\\/foo_bar\\/", /* keyBaseName */
84 "user:yl", /* keyGetFullRootName */
85 "user/foo\\/" /* keyGetParentName */
92 void test_keyComparing()
94 Key *key1 = keyNew(0);
95 Key *key2 = keyNew(0);
97 succeed_if(keyCompare(key1,key2) == 0, "the keys don't differ of course");
99 keySetName (key1, "user/myname");
100 succeed_if(keyCompare(key1,key2) == KEY_NAME, "the keys should differ in name");
101 keySetName (key2, "user/myname");
102 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in name");
104 keySetOwner (key1, "myowner");
105 succeed_if(keyCompare(key1,key2) == KEY_OWNER, "the keys should differ in owner");
106 keySetOwner (key2, "myowner");
107 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in owner");
109 keySetString (key1, "myvalue");
110 succeed_if(keyCompare(key1,key2) == (KEY_VALUE|KEY_TYPE), "the keys should differ in value and type");
111 keySetType (key2, KEY_TYPE_STRING);
112 succeed_if(keyCompare(key1,key2) == KEY_VALUE, "the keys should differ in value");
113 keySetString (key2, "myvalue");
114 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in value");
116 keySetComment (key1, "mycomment");
117 succeed_if(keyCompare(key1,key2) == KEY_COMMENT, "the keys should differ in comment");
118 keySetComment (key2, "mycomment");
119 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in comment");
121 keySetUID (key1, 50);
122 succeed_if(keyCompare(key1,key2) == KEY_UID, "the keys should differ in uid");
123 keySetUID (key2, 50);
124 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in uid");
126 keySetGID (key1, 50);
127 succeed_if(keyCompare(key1,key2) == KEY_GID, "the keys should differ in gid");
128 keySetGID (key2, 50);
129 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in gid");
131 keySetMode (key1, 0222);
132 succeed_if(keyCompare(key1,key2) == KEY_MODE, "the keys should differ in mode");
133 keySetMode (key2, 0222);
134 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in mode");
136 keySetType (key1, 50);
137 succeed_if(keyCompare(key1,key2) == KEY_TYPE, "the keys should differ in type");
138 keySetType (key2, 50);
139 succeed_if(keyCompare(key1,key2) == 0, "the keys should not differ in type");
145 void test_keyNewSystem()
148 char array[] = "here is some data stored";
154 printf("Test system key creation\n");
158 succeed_if(key != NULL, "keyNew: Unable to create a new empty key");
159 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete empty key");
162 key = keyNew("system/sw/test", KEY_END);
163 succeed_if(key != NULL, "keyNew: Unable to create a key with name");
164 succeed_if(keyNeedRemove (key) == 0, "KEY_REMOVE set");
165 succeed_if(strcmp(keyName(key), "system/sw/test") == 0, "keyNew: Key's name setted incorrectly");
167 succeed_if (strcmp (keyName(key), "") == 0, "name after keyCopy(,0)");
168 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name");
171 key = keyNew("system/sw/test", KEY_REMOVE, KEY_END);
172 succeed_if(key != NULL, "keyNew: Unable to create a key with name");
173 succeed_if(keyNeedRemove (key) == 1, "KEY_REMOVE not set");
174 succeed_if(strcmp(keyName(key), "system/sw/test") == 0, "keyNew: Key's name setted incorrectly");
175 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name");
177 // Key with name + value (default type must be KEY_TYPE_STRING)
178 key = keyNew("system/sw/test",
181 succeed_if(key != NULL, "keyNew: Unable to create a key with name + value of default type");
182 succeed_if(keyIsString(key), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
183 succeed_if(strcmp(keyValue(key), "test") == 0, "keyNew: Value not set correctly");
184 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + value");
186 // Key with name + UID/GID
187 key = keyNew("system/sw/test",
191 succeed_if(key != NULL, "keyNew: Unable to create a key with name + UID + GID");
192 succeed_if(keyGetUID(key) == 123, "keyNew: UID no set correctly");
193 succeed_if(keyGetGID(key) == 456, "keyNew: GID not set correctly");
194 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + UID + GID");
196 // Key with name + MODE
197 key = keyNew("system/sw/test",
200 succeed_if(key != NULL, "keyNew: Unable to create a key with name + mode");
201 succeed_if(keyGetMode(key) == 0644, "keyNew: mode no set correctly");
202 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + mode");
204 key = keyNew("system/valid/there",
205 KEY_TYPE, KEY_TYPE_BINARY,
206 KEY_SIZE, sizeof(array),
209 succeed_if(key != NULL, "keyNew: Unable to create a key with name + value of default type");
210 succeed_if(keyIsBinary (key), "Could not set type to binary");
211 succeed_if(keyGetValueSize(key) == sizeof(array), "Value size not correct");
212 succeed_if(memcmp ((char *) keyValue(key), array, sizeof(array)) == 0, "could not get correct binary value");
213 getBack = malloc (keyGetValueSize(key));
214 keyGetBinary(key, getBack, keyGetValueSize(key));
215 succeed_if(memcmp(getBack, array, sizeof(array)) == 0, "could not get correct value with keyGetBinary");
217 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + owner");
219 key = keyNew("system", KEY_END);
220 succeed_if (strcmp (keyName(key), "system") == 0, "Name Problem: System as basename");
221 succeed_if (keyGetNameSize(key) == 7, "empty name size" );
222 succeed_if (strcmp (keyOwner(key), "") == 0, "owner for a system key?");
223 succeed_if (keyGetOwnerSize(key) == 1, "owner y size" );
226 // testing multiple values at once
227 k1=keyNew("system/1", KEY_VALUE, "singlevalue", KEY_END);
228 k2=keyNew("system/2", KEY_VALUE, "myvalue", KEY_END);
229 k3=keyNew("system/3", KEY_VALUE, "syskey", KEY_END);
230 succeed_if(k1 != NULL, "keyNew: Unable to create a key with name + value of default type");
231 succeed_if(keyIsString(k1), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
232 succeed_if(strcmp(keyValue(k1), "singlevalue") == 0, "keyNew: Value not set correctly");
234 succeed_if(k2 != NULL, "keyNew: Unable to create a key with name + value of default type");
235 succeed_if(keyIsString(k2), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
236 succeed_if(strcmp(keyValue(k2), "myvalue") == 0, "keyNew: Value not set correctly");
238 succeed_if(k3 != NULL, "keyNew: Unable to create a key with name + value of default type");
239 succeed_if(keyIsString(k3), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
240 succeed_if(strcmp(keyValue(k3), "syskey") == 0, "keyNew: Value not set correctly");
242 succeed_if(keyDel(k1) == 0, "keyDel: Unable to delete key with name + value");
243 succeed_if(keyDel(k2) == 0, "keyDel: Unable to delete key with name + value");
244 succeed_if(keyDel(k3) == 0, "keyDel: Unable to delete key with name + value");
247 void test_keyNewUser()
250 char array[] = "here is some data stored";
251 char fullroot [MAX_PATH_LENGTH];
257 printf("Test user key creation\n");
260 setenv ("USER","hugo",1);
262 putenv ("USER=hugo");
264 key = keyNew ("user/test/test", KEY_END);
265 succeed_if( strcmp(keyOwner(key), "hugo") == 0, "keyNew: owner not set correctly");
266 succeed_if( keyGetOwnerSize(key) == 5, "owner length not correct");
267 keyGetFullName (key, fullroot, MAX_PATH_LENGTH);
268 succeed_if( strcmp(keyOwner(key), "hugo") == 0, "keyNew: owner not set correctly");
269 /* printf ("%s, %s, %s\n", keyName(key), keyBaseName(key), fullroot); */
270 succeed_if(strcmp(keyName(key),"user/test/test") == 0, "Wrong keyname: keyName");
271 succeed_if(strcmp(keyBaseName(key),"test") == 0, "Wrong keyname: keyBaseName");
272 succeed_if(strcmp(fullroot,"user:hugo/test/test") == 0, "Wrong keyname: keyGetFullName");
273 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + owner");
276 setenv ("KDB_USER","tommy",1);
278 putenv("KDB_USER=tommy");
280 key = keyNew ("user/test/test", KEY_END);
281 succeed_if( strcmp(keyOwner(key), "tommy") == 0, "keyNew: owner not set correctly");
282 succeed_if( keyGetOwnerSize(key) == 6, "owner length not correct");
283 keyGetFullName (key, fullroot, MAX_PATH_LENGTH);
284 succeed_if( strcmp(keyOwner(key), "tommy") == 0, "keyNew: owner not set correctly");
285 /* printf ("%s, %s, %s\n", keyName(key), keyBaseName(key), fullroot); */
286 succeed_if(strcmp(keyName(key),"user/test/test") == 0, "Wrong keyname: keyName");
287 succeed_if(strcmp(keyBaseName(key),"test") == 0, "Wrong keyname: keyBaseName");
288 succeed_if(strcmp(fullroot,"user:tommy/test/test") == 0, "Wrong keyname: keyGetFullName");
289 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + owner");
291 // Key with name + owner
292 key = keyNew("user/test/test",
295 succeed_if(key != NULL, "keyNew: Unable to create a key with name + owner");
296 succeed_if( strcmp(keyOwner(key), "yl") == 0, "keyNew: owner not set correctly");
297 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + owner");
299 key = keyNew("user/valid/there",
300 KEY_TYPE, KEY_TYPE_BINARY,
301 KEY_SIZE, sizeof(array),
304 succeed_if(key != NULL, "keyNew: Unable to create a key with name + value of default type");
305 succeed_if(keyIsBinary (key), "Could not set type to binary");
306 succeed_if(keyGetValueSize(key) == sizeof(array), "Value size not correct");
307 succeed_if(memcmp ((char *) keyValue(key), array, sizeof(array)) == 0, "could not get correct binary value");
308 getBack = malloc (keyGetValueSize(key));
309 keyGetBinary(key, getBack, keyGetValueSize(key));
310 succeed_if(memcmp(getBack, array, sizeof(array)) == 0, "could not get correct value with keyGetBinary");
312 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name + owner");
314 key = keyNew("user:y", KEY_END);
315 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: System as basename");
316 succeed_if (keyGetNameSize(key) == 5, "empty name size" );
317 succeed_if (strcmp (keyOwner(key), "y") == 0, "Should be a name not length 0");
318 succeed_if (keyGetOwnerSize(key) == 2, "owner y size" );
321 succeed_if (key = keyNew("user:perfectowner", KEY_END), "could not create new key");
322 succeed_if (keySetName(key, "user:perfectowner") == 5, "could not set to user with owner");
323 succeed_if (keyGetOwnerSize (key) == 13, "owner size not correct");
324 succeed_if (strcmp (keyOwner(key), "perfectowner") == 0, "Owner not same as set");
325 succeed_if (keyDel (key) == 0, "could not delete key");
327 // testing multiple values at once
328 k1=keyNew("user/1", KEY_VALUE, "singlevalue", KEY_END);
329 k2=keyNew("user/2", KEY_VALUE, "myvalue", KEY_END);
330 k3=keyNew("user/3", KEY_VALUE, "syskey", KEY_END);
331 succeed_if(k1 != NULL, "keyNew: Unable to create a key with name + value of default type");
332 succeed_if(keyIsString(k1), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
333 succeed_if(strcmp(keyValue(k1), "singlevalue") == 0, "keyNew: Value not set correctly");
335 succeed_if(k2 != NULL, "keyNew: Unable to create a key with name + value of default type");
336 succeed_if(keyIsString(k2), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
337 succeed_if(strcmp(keyValue(k2), "myvalue") == 0, "keyNew: Value not set correctly");
339 succeed_if(k3 != NULL, "keyNew: Unable to create a key with name + value of default type");
340 succeed_if(keyIsString(k3), "keyNew: Default key value isn't set to KEY_TYPE_STRING");
341 succeed_if(strcmp(keyValue(k3), "syskey") == 0, "keyNew: Value not set correctly");
343 succeed_if(keyDel(k1) == 0, "keyDel: Unable to delete key with name + value");
344 succeed_if(keyDel(k2) == 0, "keyDel: Unable to delete key with name + value");
345 succeed_if(keyDel(k3) == 0, "keyDel: Unable to delete key with name + value");
347 k1 = keyNew ("invalid", KEY_END);
348 succeed_if (k1 != 0, "should construct key even on invalid names");
349 succeed_if (strcmp (keyName(k1), "") == 0, "no name should be set");
350 succeed_if (keyGetNameSize(k1) == 1, "namesize");
354 void test_keyReference()
356 printf("Test key reference\n");
358 Key *key = keyNew (KEY_END);
359 Key *c = keyNew (KEY_END);
362 succeed_if (keyGetRef(key) == 0, "New created key reference");
364 succeed_if (keyIncRef (key) == 1, "keyIncRef return value");
365 succeed_if (keyGetRef(key) == 1, "After keyIncRef key reference");
366 succeed_if (keyIncRef (key) == 2, "keyIncRef return value");
367 succeed_if (keyGetRef(key) == 2, "After keyIncRef key reference");
368 succeed_if (keyIncRef (key) == 3, "keyIncRef return value");
369 succeed_if (keyGetRef(key) == 3, "After keyIncRef key reference");
370 succeed_if (keyIncRef (key) == 4, "keyIncRef return value");
371 succeed_if (keyGetRef(key) == 4, "After keyIncRef key reference");
374 succeed_if (keyGetRef(d) == 0, "After keyDup key reference");
375 succeed_if (keyIncRef (d) == 1, "keyIncRef return value");
376 succeed_if (keyGetRef(key) == 4, "Reference should not change");
377 succeed_if (keyDecRef (d) == 0, "decrement key");
378 succeed_if (keyDel(d) == 0, "last keyDel d, key exist");
381 succeed_if (keyGetRef(c) == 0, "After keyCopy key reference");
382 succeed_if (keyIncRef (c) == 1, "keyIncRef return value");
383 succeed_if (keyGetRef(key) == 4, "Reference should not change");
386 succeed_if (keyGetRef(c) == 1, "After keyCopy key reference");
387 succeed_if (keyDecRef (c) == 0, "keyDecRef return value");
388 succeed_if (keyGetRef(key) == 4, "Reference should not change");
390 succeed_if (keyIncRef (c) == 1, "keyIncRef return value");
391 succeed_if (keyIncRef (c) == 2, "keyIncRef return value");
393 succeed_if (keyGetRef(c) == 2, "After keyCopy key reference");
394 succeed_if (keyDecRef (c) == 1, "keyDecRef return value");
395 succeed_if (keyDecRef (c) == 0, "keyDecRef return value");
396 succeed_if (keyDel (c) == 0, "could not delete copy");
398 succeed_if (keyGetRef(key) == 4, "After keyIncRef key reference");
399 succeed_if (keyDecRef (key) == 3, "keyDel return value");
400 succeed_if (keyDel (key) == 3, "should not do anything");
401 succeed_if (keyGetRef(key) == 3, "After keyIncRef key reference");
402 succeed_if (keyDecRef (key) == 2, "keyDel return value");
403 succeed_if (keyDel (key) == 2, "should not do anything");
404 succeed_if (keyGetRef(key) == 2, "After keyIncRef key reference");
405 succeed_if (keyDecRef (key) == 1, "keyDel return value");
406 succeed_if (keyDel (key) == 1, "should not do anything");
407 succeed_if (keyGetRef(key) == 1, "Should have no more reference");
408 succeed_if (keyDecRef (key) == 0, "last keyDel key, key exist");
409 succeed_if (keyDel (key) == 0, "last keyDel key, key exist");
411 /* From examples in ksNew () */
412 key = keyNew(0); // ref counter 0
413 succeed_if (keyGetRef(key) == 0, "reference counter");
414 keyIncRef(key); // ref counter of key 1
415 succeed_if (keyGetRef(key) == 1, "reference counter");
416 keyDel(key); // has no effect
417 succeed_if (keyGetRef(key) == 1, "reference counter");
418 keyDecRef(key); // ref counter back to 0
419 succeed_if (keyGetRef(key) == 0, "reference counter");
420 keyDel(key); // key is now deleted
424 key = keyNew(0); // ref counter 0
425 succeed_if (keyGetRef(key) == 0, "reference counter");
426 ksAppendKey(ks1, key); // ref counter of key 1
427 succeed_if (keyGetRef(key) == 1, "reference counter");
428 ksAppendKey(ks2, key); // ref counter of key 2
429 succeed_if (keyGetRef(key) == 2, "reference counter");
430 ksDel(ks1); // ref counter of key 1
431 succeed_if (keyGetRef(key) == 1, "reference counter");
432 ksDel(ks2); // key is now deleted
434 key = keyNew(0); // ref counter 0
435 succeed_if (keyGetRef(key) == 0, "reference counter");
436 keyIncRef(key); // ref counter of key 1
437 succeed_if (keyGetRef(key) == 1, "reference counter");
438 keyDel (key); // has no effect
439 succeed_if (keyGetRef(key) == 1, "reference counter");
440 keyIncRef(key); // ref counter of key 2
441 succeed_if (keyGetRef(key) == 2, "reference counter");
442 keyDel (key); // has no effect
443 succeed_if (keyGetRef(key) == 2, "reference counter");
444 keyDecRef(key); // ref counter of key 1
445 succeed_if (keyGetRef(key) == 1, "reference counter");
446 keyDel (key); // has no effect
447 succeed_if (keyGetRef(key) == 1, "reference counter");
448 keyDecRef(key); // ref counter is now 0
449 succeed_if (keyGetRef(key) == 0, "reference counter");
450 keyDel (key); // key is now deleted
454 /* This code needs very long to execute, especially on 64bit
457 key = keyNew(0); // ref counter 0
458 while (keyGetRef(key) < SSIZE_MAX) keyIncRef(key);
459 succeed_if (keyGetRef(key) == SSIZE_MAX, "reference counter");
460 succeed_if (keyIncRef(key) == SSIZE_MAX, "should stay at maximum");
461 succeed_if (keyGetRef(key) == SSIZE_MAX, "reference counter");
462 succeed_if (keyIncRef(key) == SSIZE_MAX, "should stay at maximum");
464 key->ksReference = 5;
465 while (keyGetRef(key) > 0) keyDecRef(key);
466 succeed_if (keyGetRef(key) == 0, "reference counter");
467 succeed_if (keyDecRef(key) == 0, "should stay at minimum");
468 succeed_if (keyGetRef(key) == 0, "reference counter");
469 succeed_if (keyDecRef(key) == 0, "should stay at minimum");
477 char array [] = "test";
480 printf("Test key type\n");
482 key = keyNew (KEY_END);
484 for (i=0; i<256; i++)
487 succeed_if (keyGetType (key) == (i), "could not change to dir type to something between 0 and 255");
491 succeed_if (keyGetType (key) == 0, "could not unset type");
493 succeed_if (keySetString (key, array) == 5, "size not correct");
494 succeed_if (keyIsString (key), "could not change to string type");
495 succeed_if (keyGetValueSize (key) == sizeof (array), "size is not correct");
497 succeed_if (keySetBinary (key, array, 4) == 4, "size not correct");
498 succeed_if (keyIsBinary (key), "could not change to binary type");
499 succeed_if (keyGetValueSize (key) == sizeof (array)-1, "size is not correct");
501 succeed_if (keySetString (key, array) == 5, "size not correct");
502 succeed_if (keyIsString (key), "could not change to string type");
503 succeed_if (keyGetValueSize (key) == sizeof (array), "size is not correct");
516 char testName[] = "user/name";
517 char testFullName[] = "user:max/name";
518 char testBaseName[] = "name";
519 char testOwner[] = "max";
521 Key * copy = keyNew (KEY_END);
529 printf ("Test Key Name\n");
531 key = keyNew (testName, KEY_END);
532 succeed_if (keyGetName (0,ret,100) == -1, "null pointer");
533 succeed_if (keyGetName (key,0,100) == -1, "string null pointer");
534 succeed_if (keyGetName (key,ret,0) == -1, "length checking");
535 for (i=1; i< sizeof(testName);i++)
537 succeed_if (keyGetName (key,ret,i) == -1, "length checking too short");
539 for (i=sizeof(testName); i<sizeof(testName)*2; i++)
541 succeed_if (keyGetName (key,ret,i) == sizeof(testName), "length checking longer");
543 succeed_if (keyGetName (key,ret, (size_t)-1) == -1, "maxSize exceeded");
546 succeed_if (keyName(0) == 0, "null pointer");
549 succeed_if (strcmp(keyName(key), "") == 0, "empty name");
550 succeed_if (keyGetName (key,ret, 1000) == 1, "get empty name");
551 succeed_if (strcmp(ret, "") == 0, "not empty name");
552 succeed_if (keyGetName (key,ret, 0) == -1, "get empty name");
555 succeed_if (keySetName(0,ret) == -1, "Null pointer");
559 printf ("Test Key Full Name\n");
561 key = keyNew (testFullName, KEY_END);
562 succeed_if (keyGetFullName (0,ret,100) == -1, "null pointer");
563 succeed_if (keyGetFullName (key,0,100) == -1, "string null pointer");
564 succeed_if (keyGetFullName (key,ret,0) == -1, "length checking");
565 for (i=1; i< sizeof(testFullName);i++)
567 succeed_if (keyGetFullName (key,ret,i) == -1, "length checking too short");
569 for (i=sizeof(testFullName); i<sizeof(testFullName)*2; i++)
571 succeed_if (keyGetFullName (key,ret,i) == sizeof(testFullName), "length checking longer");
573 succeed_if (keyGetFullName (key,ret, (size_t)-1) == -1, "maxSize exceeded");
577 succeed_if (keyIsUser(key) == 0, "empty user key?");
578 succeed_if (keyIsSystem(key) == 0, "empty user key?");
579 succeed_if (keyGetFullName (key,ret, 1000) == 1, "get empty name");
580 succeed_if (strcmp(ret, "") == 0, "not empty name");
581 succeed_if (keyGetFullName (key,ret, 0) == -1, "get empty name");
584 succeed_if (keySetName(0,ret) == -1, "Null pointer");
589 printf ("Test Key Base Name\n");
591 key = keyNew (testFullName, KEY_END);
592 succeed_if (keyGetBaseName (0,ret,100) == -1, "null pointer");
593 succeed_if (keyGetBaseName (key,0,100) == -1, "string null pointer");
594 succeed_if (keyGetBaseName (key,ret,0) == -1, "length checking");
595 for (i=1; i< sizeof(testBaseName);i++)
597 succeed_if (keyGetBaseName (key,ret,i) == -1, "length checking too short");
599 for (i=sizeof(testBaseName); i<sizeof(testBaseName)*2; i++)
601 succeed_if (keyGetBaseName (key,ret,i) == sizeof(testBaseName), "length checking longer");
603 succeed_if (keyGetBaseName (key,ret, (size_t)-1) == -1, "maxSize exceeded");
606 succeed_if (keyBaseName(0) == 0, "null pointer");
609 succeed_if (strcmp(keyBaseName(key), "") == 0, "empty name");
610 succeed_if (keyIsUser(key) == 0, "empty user key?");
611 succeed_if (keyIsSystem(key) == 0, "empty user key?");
612 succeed_if (keyGetBaseName (key,ret, 1000) == 1, "get empty name");
613 succeed_if (strcmp(ret, "") == 0, "not empty name");
614 succeed_if (keyGetBaseName (key,ret, 0) == -1, "get empty name");
617 succeed_if (keySetName(0,ret) == -1, "Null pointer");
619 key = keyNew ("user", KEY_END);
620 succeed_if (keyGetBaseNameSize (key) == 1, "length checking");
621 succeed_if (keyGetBaseName (key,ret,1) == 1, "GetBaseName for root key");
622 succeed_if (strcmp (ret, "") == 0, "did not return correct basename");
623 succeed_if (keyGetBaseName (key,ret,2) == 1, "GetBaseName for root key");
624 succeed_if (strcmp (ret, "") == 0, "did not return correct basename");
627 key = keyNew ("system", KEY_END);
628 succeed_if (keyGetBaseNameSize (key) == 1, "length checking");
629 succeed_if (keyGetBaseName (key,ret,1) == 1, "GetBaseName for root key");
630 succeed_if (strcmp (ret, "") == 0, "did not return correct basename");
631 succeed_if (keyGetBaseName (key,ret,2) == 1, "GetBaseName for root key");
632 succeed_if (strcmp (ret, "") == 0, "did not return correct basename");
639 printf ("Test Key Owner\n");
641 key = keyNew (testFullName, KEY_END);
642 succeed_if (keyGetOwner (0,ret,100) == -1, "null pointer");
643 succeed_if (keyGetOwner (key,0,100) == -1, "string null pointer");
644 succeed_if (keyGetOwner (key,ret,0) == -1, "length checking");
645 for (i=1; i< sizeof(testOwner);i++)
647 succeed_if (keyGetOwner (key,ret,i) == -1, "length checking too short");
649 for (i=sizeof(testOwner); i<sizeof(testOwner)*2; i++)
651 succeed_if (keyGetOwner (key,ret,i) == sizeof(testOwner), "length checking longer");
653 succeed_if (keyGetOwner (key,ret, (size_t)-1) == -1, "maxSize exceeded");
655 succeed_if (keySetOwner(key,0) == 1, "delete owner");
656 succeed_if (keyGetOwner (key,ret,i) == 1, "length checking deleting");
657 succeed_if (strcmp(ret, "") == 0, "not empty owner");
659 succeed_if (keySetOwner(key,testOwner) == sizeof(testOwner), "set owner");
660 succeed_if (keyGetOwner (key,ret,i) == sizeof(testOwner), "length checking working");
661 succeed_if (strcmp(ret, testOwner) == 0, "not empty owner");
663 succeed_if (keySetOwner(key,"") == 1, "delete owner");
664 succeed_if (keyGetOwner (key,ret,i) == 1, "length checking deleting");
665 succeed_if (strcmp(ret, "") == 0, "not empty owner");
667 succeed_if (keySetOwner(key,testOwner) == sizeof(testOwner), "set owner");
668 succeed_if (keyGetOwner (key,ret,i) == sizeof(testOwner), "length checking working");
669 succeed_if (strcmp(ret, testOwner) == 0, "not empty owner");
672 succeed_if (keyOwner(0) == 0, "null pointer");
675 succeed_if (strcmp(keyOwner(key), "") == 0, "empty owner");
676 succeed_if (keyGetOwner (key,ret, 1000) == 1, "get empty owner");
677 succeed_if (strcmp(ret, "") == 0, "not empty owner");
678 succeed_if (keyGetOwner (key,ret, 0) == -1, "get empty owner");
681 succeed_if (keySetOwner(0,"") == -1, "null pointer");
687 printf("Test Slashes in Key Name\n");
689 succeed_if (keyGetNameSize(key) == 1, "empty name size" );
692 key = keyNew("", KEY_END);
693 succeed_if (key != 0, "key should not be null!");
694 succeed_if (strcmp (keyName(key), "") == 0, "keyName should be "" string");
695 succeed_if (keyGetName(key,ret, 999) == 1, "keyGetName should return 1");
696 succeed_if (strcmp (ret, "") == 0, "\\0 should be first character in array");
697 succeed_if (keyGetNameSize(key) == 1, "empty name size" );
700 key = keyNew (KEY_END);
701 keySetName(key,"user");
702 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: User as basename");
703 succeed_if (keyGetNameSize(key) == 5, "empty name size" );
704 succeed_if (keyGetOwnerSize(key) >= 1, "empty owner size");
706 keySetName(key,"system");
707 succeed_if (strcmp (keyName(key), "system") == 0, "Name Problem: System as basename");
708 succeed_if (keyGetNameSize(key) == 7, "empty name size" );
709 succeed_if (keyGetOwnerSize(key) == 1, "empty owner size");
712 key = keyNew (KEY_END);
713 keySetName(key,"system");
714 succeed_if (strcmp (keyName(key), "system") == 0, "Name Problem: System as basename");
715 succeed_if (keyGetNameSize(key) == 7, "empty name size" );
716 succeed_if (keyGetOwnerSize(key) == 1, "empty owner size");
718 keySetName(key,"user");
719 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: User as basename");
720 succeed_if (keyGetNameSize(key) == 5, "empty name size" );
721 succeed_if (keyGetOwnerSize(key) == 1, "empty owner size");
725 succeed_if (keySetName(key,"user:") == 5, "setting user: generates error");
726 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: System as basename");
727 succeed_if (keyGetNameSize(key) == 5, "empty name size" );
728 succeed_if (strcmp (keyOwner(key), "") == 0, "Should be a name not length 0");
729 succeed_if (keyGetOwnerSize(key) == 1, "empty owner size" );
733 succeed_if (keySetName(key,"user:y") == 5, "setting user: generates error");
734 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: System as basename");
735 succeed_if (keyGetNameSize(key) == 5, "empty name size" );
736 succeed_if (strcmp (keyOwner(key), "y") == 0, "Should be a name not length 0");
737 succeed_if (keyGetOwnerSize(key) == 2, "owner y size" );
741 succeed_if (keySetName(key,"no") == -1, "no error code setting invalid name");
742 succeed_if (strcmp (keyName(key), "") == 0, "Name Problem: System as basename");
743 succeed_if (keyGetNameSize(key) == 1, "empty name size" );
746 key = keyNew("user/noname", KEY_END);
747 succeed_if(keyGetNameSize(key) == 12, "size not correct after keyNew");
748 getBack = malloc (12);
749 succeed_if(keyGetName(key, getBack, 12), "could not get name");
750 succeed_if(strcmp(getBack, "user/noname") == 0, "did not get correct value back");
753 keySetName (key, "user/noname");
754 succeed_if(keyGetNameSize(key) == 12, "size not correct after keySetName");
755 getBack = malloc (12);
756 succeed_if(keyGetName(key, getBack, 12), "could not get name");
757 succeed_if(strcmp(getBack, "user/noname") == 0, "did not get correct value back");
760 keySetName (key, "no");
761 succeed_if(keyGetNameSize(key) == 1, "size not correct after keySetName");
762 getBack = malloc (1);
763 succeed_if(keyGetName(key, getBack, 1), "could not get name");
764 succeed_if(strcmp(getBack, "") == 0, "did not get correct value back");
768 key = keyNew("user/noname", KEY_END);
770 succeed_if (strcmp (keyName(key), "") == 0, "keyName should be "" string");
771 succeed_if (keyGetName(key,ret, 999) == 1, "keyGetName should return 1");
772 succeed_if (strcmp (ret, "") == 0, "\\0 should be first character in array");
773 succeed_if (keyGetNameSize(key) == 1, "empty name size" );
775 keySetName(key,"user//hidden");
776 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Two slashes in name");
777 succeed_if (keyGetNameSize(key) == 12, "name size minus slashes" );
779 keySetName(key,"user///hidden");
780 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Three slashes in name");
781 succeed_if (keyGetNameSize(key) == 12, "name size minus slashes" );
783 keySetName(key,"user////////////////////////////////////hidden");
784 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Many slashes in name");
785 succeed_if (keyGetNameSize(key) == 12, "name size minus slashes" );
787 printf("Test trailing Slashes in Key Name\n");
788 keySetName(key,"user//hidden/");
789 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Trailing Slashes");
790 succeed_if (keyGetNameSize(key) == 12, "name size minus slashes" );
792 keySetName(key,"user//hidden//");
793 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Trailing Slashes");
794 succeed_if (keyGetNameSize(key) == 12, "name size minus slashes" );
796 keySetName(key,"user//hidden///////");
797 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Trailing Slashes");
798 succeed_if (keyGetNameSize(key) == 12, "name size minus slashes" );
800 keySetName(key,"user/");
801 // printf ("Name: %s\n", keyName(key));
802 succeed_if (strcmp (keyName(key), "user") == 0, "Trailing Slashes");
804 keySetName(key,"user/a");
805 succeed_if (strcmp (keyName(key), "user/a") == 0, "Trailing Slashes: One letter problem");
807 keySetName(key,"user//");
808 succeed_if (strcmp (keyName(key), "user") == 0, "Trailing Slashes");
810 keySetName(key,"user/////////");
811 succeed_if (strcmp (keyName(key), "user") == 0, "Trailing Slashes");
813 printf("Test Dots in Key Name\n");
814 keySetName(key,"user/hidden/.");
815 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Name Problem: Dot as basename");
817 keySetName(key,"user/.");
818 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: Dot in Middle");
820 keySetName(key,"user/./hidden");
821 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Name Problem: Dot in Middle");
823 keySetName(key,"user/.valid/.");
824 succeed_if (strcmp (keyName(key), "user/.valid") == 0, "Name Problem: Dot as basename (with comment)");
826 keySetName(key,"user/./.valid");
827 succeed_if (strcmp (keyName(key), "user/.valid") == 0, "Name Problem: Dot in Middle (with comment)");
829 keySetName(key,"user/./.valid/.");
830 succeed_if (strcmp (keyName(key), "user/.valid") == 0, "Name Problem: More dots");
832 keySetName(key,"user/././././.valid/././././.");
833 succeed_if (strcmp (keyName(key), "user/.valid") == 0, "Name Problem: Much more dots");
835 printf("Test Double Dots in Key Name\n");
836 keySetName(key,"user/hidden/parent/..");
837 succeed_if (strcmp (keyName(key), "user/hidden") == 0, "Name Problem: Double Dot as basename");
839 keySetName(key,"user/hidden/..");
840 // printf ("Name: %s\n", keyName(key));
841 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: Double Dot as basename");
843 keySetName(key,"user/..");
844 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: Can't go higher then user in hierachy");
846 keySetName(key,"user/hidden/../..");
847 succeed_if (strcmp (keyName(key), "user") == 0, "Name Problem: Can't go higher then user in hierachy");
849 succeed_if (keySetName(key, "user///sw/../sw//././MyApp")==sizeof("user/sw/MyApp"), "could not set keySet example");
850 succeed_if (strcmp (keyName(key), "user/sw/MyApp") == 0, "Example of keySet does not work");
851 succeed_if (keyGetNameSize(key) == sizeof("user/sw/MyApp"), "incorrect length for keySet example");
853 printf("Test Mixed Dots and Slashes in Key Name\n");
854 keySetName(key,"user/hidden/../.");
859 printf("Test failure key creation\n");
861 key = keyNew ("invalid", KEY_END);
862 succeed_if (key!=0, "null pointer for invalid name");
863 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name");
865 key = keyNew("nonhere/valid/there", KEY_END);
866 succeed_if (key != NULL, "keyNew did not accept wrong name");
867 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name");
869 key = keyNew("nonhere:y/valid/there", KEY_END);
870 succeed_if (key != NULL, "keyNew did not accept wrong name");
871 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name");
873 key = keyNew ("user/validname", KEY_END);
874 succeed_if(key != NULL, "keyNew: Unable to create a key with name");
875 succeed_if(strcmp(keyName(key), "user/validname") == 0, "keyNew: Key's name setted incorrectly");
877 keySetName(key, "invalid");
878 succeed_if (keyGetNameSize(key) == 1, "name size for invalid name");
879 succeed_if(strcmp(keyName(key), "") == 0, "keyNew: Key's name setted incorrectly");
881 keySetName (key, "user/validname");
882 succeed_if(strcmp(keyName(key), "user/validname") == 0, "keyNew: Key's name setted incorrectly");
885 succeed_if (keyGetNameSize(key) == 1, "name size for invalid name");
886 succeed_if(strcmp(keyName(key), "") == 0, "keyNew: Key's name setted incorrectly");
888 keySetName (key, "user/validname\\/t");
889 succeed_if(strcmp(keyName(key), "user/validname\\/t") == 0, "keyNew: Key's name setted incorrectly");
892 succeed_if (keyGetNameSize(key) == 1, "name size for invalid name");
893 succeed_if(strcmp(keyName(key), "") == 0, "keyNew: Key's name setted incorrectly");
895 keySetName (key, "user/validname\\");
896 succeed_if(strcmp(keyName(key), "user/validname\\") == 0, "keyNew: Key's name setted incorrectly");
898 keySetName (key, "user/validname\\/");
899 succeed_if(strcmp(keyName(key), "user/validname\\/") == 0, "keyNew: Key's name setted incorrectly");
900 succeed_if(keyDel(key) == 0, "keyDel: Unable to delete key with name");
906 unsetenv("KDB_USER");
910 setenv ("USER", "env1", 1);
912 putenv ("USER=env1");
915 printf("Test key's name manipulation\n");
916 for(i = 0 ; tstKeyName[i].testName != NULL ; i++) {
917 key = keyNew(tstKeyName[i].keyName, KEY_END);
920 succeed_if( (strcmp(keyName(key), tstKeyName[i].expectedKeyName) == 0) , "keyName" );
923 succeed_if( (strcmp(keyBaseName(key), tstKeyName[i].expectedBaseName) == 0), "keyBaseName" );
925 /* keyGetFullRootNameSize */
926 size = keyGetFullRootNameSize(key);
927 succeed_if( (size == kdbiStrLen(tstKeyName[i].expectedFRootName)), "keyGetFullRootNameSize" );
929 /* keyGetFullRootName */
930 buf = kdbiMalloc(size*sizeof(char));
931 keyGetFullRootName(key, buf, size);
932 // printf ("comp: %s - %s\n", buf, tstKeyName[i].expectedFRootName);
933 succeed_if( (strncmp(buf, tstKeyName[i].expectedFRootName, size) == 0), "keyGetFullRootName" );
936 /* keyGetParentNameSize */
937 size = keyGetParentNameSize(key);
938 succeed_if( (size == kdbiStrLen(tstKeyName[i].expectedParentName)), "ketGetParentNameSize" );
940 /* keyGetParentName */
941 size = keyGetParentNameSize(key)+1;
942 buf = kdbiMalloc(size*sizeof(char));
943 keyGetParentName(key, buf, size);
944 succeed_if( (strncmp(buf, tstKeyName[i].expectedParentName, size) == 0), "keyGetParentName" );
947 /* keyGetBaseNameSize */
948 size = keyGetBaseNameSize(key);
949 succeed_if( (size == kdbiStrLen(tstKeyName[i].expectedBaseName)), "keyGetBaseNameSize" );
952 size = keyGetBaseNameSize(key)+1;
953 buf = kdbiMalloc(size*sizeof(char));
954 keyGetBaseName(key, buf, size);
955 succeed_if( (strncmp(buf, tstKeyName[i].expectedBaseName, size) == 0), "keyGetBaseName" );
959 size = keyGetNameSize(key);
960 succeed_if( (size == kdbiStrLen(tstKeyName[i].expectedKeyName)), "keyGetKeyNameSize" );
963 size = keyGetNameSize(key);
964 buf = kdbiMalloc(size*sizeof(char));
965 keyGetName(key, buf, size);
966 succeed_if( (strcmp(buf, tstKeyName[i].expectedKeyName) == 0), "keyGetName" );
969 succeed_if (keyGetRef (copy) == 0, "reference of copy not correct");
971 succeed_if (compare_key (copy, key, 0) == 0, "keys are not equal after copy");
972 succeed_if (keyGetRef (copy) == 0, "reference of copy not correct");
985 char testString[] = "teststring";
986 char testBinary[] = "\0tes\1tbinary";
987 testBinary[sizeof(testBinary)] = 'T';
989 printf("Test value of keys\n");
991 succeed_if (key = keyNew(0), "could not create new key");
992 succeed_if (keyGetValueSize (key) == 1, "empty value size");
993 succeed_if (keySetString (key,"perfectvalue") == 13, "could not set string");
994 succeed_if (keyGetValueSize (key) == 13, "value size not correct");
995 succeed_if (strcmp (keyValue(key), "perfectvalue") == 0, "String not same as set");
996 succeed_if (keySetString (key,"perfectvalue") == 13, "could not re-set same string");
997 succeed_if (strcmp (keyValue(key), "perfectvalue") == 0, "String not same as set");
998 succeed_if (keySetString (key,"nearperfectvalue") == 17, "could not re-set other string");
999 succeed_if (keyGetValueSize (key) == 17, "value size not correct");
1000 succeed_if (strcmp (keyValue(key), "nearperfectvalue") == 0, "String not same as set");
1001 succeed_if (keyGetString (key, ret, keyGetValueSize (key)>=999 ? 999 : keyGetValueSize (key))
1002 == 17, "could not get string");
1003 succeed_if (strcmp (ret, "nearperfectvalue") == 0, "String not same as set");
1004 succeed_if (keyDel (key) == 0, "could not delete key");
1006 succeed_if (key = keyNew(0), "could not create new key");
1007 succeed_if (strcmp (keyValue(key), "") == 0, "Empty value problem");
1008 succeed_if (keyGetValueSize(key) == 1, "Empty value size problem");
1009 succeed_if (keySetString (key,"") == 1, "could not set empty string");
1010 succeed_if (strcmp (keyValue(key), "") == 0, "Empty value problem");
1011 succeed_if (keyGetValueSize(key) == 1, "Empty value size problem");
1012 succeed_if (keyGetString(key, ret, 0) == -1, "Could not get empty value");
1013 succeed_if (keyGetString(key, ret, 1) == 1, "Could not get empty value");
1014 succeed_if (ret[0] == 0, "keyGetValue did not return empty value");
1015 succeed_if (keyDel (key) == 0, "could not delete key");
1017 succeed_if (key = keyNew(0), "could not create new key");
1018 succeed_if (keySetString (key, "a long long string") == 19, "could not set string");
1019 succeed_if (keyGetString (key, ret, 6) == -1, "string not truncated");
1020 /*succeed_if (errno == KDB_ERR_TRUNC, "errno not set properly trunc");*/
1021 succeed_if (keyGetBinary (key, ret, 999) == -1, "binary not mismatch");
1022 /*succeed_if (errno == KDB_ERR_TYPEMISMATCH, "errno not set properly typemismatch");*/
1023 succeed_if (keyDel (key) == 0, "could not delete key");
1025 succeed_if (key = keyNew(0), "could not create new key");
1026 succeed_if (keySetBinary (key, "a long long binary", 19) == 19, "could not set string");
1027 succeed_if (keyGetBinary (key, ret, 6) == -1, "binary not truncated");
1028 /*succeed_if (errno == KDB_ERR_TRUNC, "errno not set properly trunc");*/
1029 succeed_if (keyGetString (key, ret, 999) == -1, "string not mismatch");
1030 /*succeed_if (errno == KDB_ERR_TYPEMISMATCH, "errno not set properly typemismatch");*/
1031 succeed_if (keyDel (key) == 0, "could not delete key");
1033 succeed_if (key = keyNew(0), "could not create new key");
1034 for (i=1; i<255; i++)
1036 ret[0] = i; ret[1] = i; ret[2] = 0;
1038 succeed_if (keySetString (key,ret) == 3, "could not set string");
1039 succeed_if (strcmp (keyValue(key), ret) == 0, "String not same as set");
1041 succeed_if (keyDel (key) == 0, "could not delete key");
1046 printf ("Test string of key\n");
1048 succeed_if (keyValue(0) == 0, "null pointer");
1049 succeed_if (keyGetValueSize(0) == -1, "null pointer");
1050 succeed_if (keySetString(0,"") == -1, "null pointer");
1053 succeed_if (keyGetValueSize(key) == 1, "empty value size");
1055 keySetString (key, testString);
1056 succeed_if (keyGetString (0,ret,100) == -1, "null pointer");
1057 succeed_if (keyGetString (key,0,100) == -1, "string null pointer");
1058 succeed_if (keyGetString (key,ret,0) == -1, "length checking");
1060 for (i=1; i< sizeof(testString);i++)
1062 succeed_if (keyGetString (key,ret,i) == -1, "length checking too short");
1064 for (i=sizeof(testString); i<sizeof(testString)*2; i++)
1066 succeed_if (keyGetString (key,ret,i) == sizeof(testString), "length checking longer");
1068 succeed_if (keyGetString (key,ret, (size_t)-1) == -1, "maxSize exceeded");
1070 succeed_if (keySetString(key,0) == 1, "delete string");
1071 succeed_if (keyGetString (key,ret,i) == 1, "length checking deleting");
1072 succeed_if (strcmp(ret, "") == 0, "not empty string");
1074 succeed_if (keySetString(key,testString) == sizeof(testString), "set string");
1075 succeed_if (keyGetString (key,ret,i) == sizeof(testString), "length checking working");
1076 succeed_if (strcmp(ret, testString) == 0, "not empty string");
1078 succeed_if (keySetString(key,"") == 1, "delete string");
1079 succeed_if (keyGetString (key,ret,i) == 1, "length checking deleting");
1080 succeed_if (strcmp(ret, "") == 0, "not empty string");
1082 succeed_if (keySetString(key,testString) == sizeof(testString), "set string");
1083 succeed_if (keyGetString (key,ret,i) == sizeof(testString), "length checking working");
1084 succeed_if (strcmp(ret, testString) == 0, "not empty string");
1086 succeed_if (keyGetValueSize(key) == sizeof(testString), "testString value size");
1087 succeed_if (strncmp(keyValue(key), testString, sizeof(testString)) == 0, "testString not same");
1092 printf ("Test binary of key\n");
1094 succeed_if (keyValue(0) == 0, "null pointer");
1095 succeed_if (keyGetValueSize(0) == -1, "null pointer");
1096 succeed_if (keySetBinary(0,"",1) == -1, "null pointer");
1099 succeed_if (keySetBinary(key,"",0) == -1, "null size");
1100 succeed_if (keySetBinary(key,"b",0) == -1, "null size");
1101 succeed_if (keySetBinary(key,"",SIZE_MAX) == -1, "max size");
1102 succeed_if (keySetBinary(key,"b",SIZE_MAX) == -1, "max size");
1103 succeed_if (keyGetValueSize(key) == 1, "empty value size");
1105 keySetBinary (key, testBinary, sizeof(testBinary));
1106 succeed_if (keyGetBinary (0,ret,100) == -1, "null pointer");
1107 succeed_if (keyGetBinary (key,0,100) == -1, "binary null pointer");
1108 succeed_if (keyGetBinary (key,ret,0) == -1, "length checking");
1110 for (i=1; i< sizeof(testBinary);i++)
1112 succeed_if (keyGetBinary (key,ret,i) == -1, "length checking too short");
1114 for (i=sizeof(testBinary); i<sizeof(testBinary)*2; i++)
1116 succeed_if (keyGetBinary (key,ret,i) == sizeof(testBinary), "length checking longer");
1118 succeed_if (keyGetBinary (key,ret, (size_t)-1) == -1, "maxSize exceeded");
1120 succeed_if (keySetBinary(key,0,0) == 0, "delete binary");
1121 succeed_if (keyGetBinary (key,ret,i) == 0, "length checking deleting");
1123 succeed_if (keySetBinary(key,testBinary, sizeof(testBinary)) == sizeof(testBinary), "set binary");
1124 succeed_if (keyGetBinary (key,ret,i) == sizeof(testBinary), "length checking working");
1125 succeed_if (strcmp(ret, testBinary) == 0, "not empty binary");
1127 succeed_if (keySetBinary(key,0,1) == 0, "delete binary");
1128 succeed_if (keyGetBinary (key,ret,i) == 0, "length checking deleting");
1130 succeed_if (keySetBinary(key,testBinary, sizeof(testBinary)) == sizeof(testBinary), "set binary");
1131 succeed_if (keyGetBinary (key,ret,i) == sizeof(testBinary), "length checking working");
1132 succeed_if (strcmp(ret, testBinary) == 0, "not empty binary");
1134 succeed_if (keySetBinary(key,"",1) == 1, "delete binary the string way");
1135 succeed_if (keyGetBinary (key,ret,i) == 1, "length checking deleting string way");
1136 succeed_if (strcmp(ret, "") == 0, "not empty binary the string way");
1138 succeed_if (keySetBinary(key,testBinary, sizeof(testBinary)) == sizeof(testBinary), "set binary");
1139 succeed_if (keyGetBinary (key,ret,i) == sizeof(testBinary), "length checking working");
1140 succeed_if (strcmp(ret, testBinary) == 0, "not empty binary");
1142 succeed_if (keyGetValueSize(key) == sizeof(testBinary), "testBinary value size");
1143 succeed_if (strncmp(keyValue(key), testBinary, sizeof(testBinary)) == 0, "testBinary not same");
1148 void test_keyBinary(void)
1154 char binaryData[] = "\0binary \1\34data";
1155 binaryData[sizeof(binaryData)] = 'T';
1157 printf ("Test binary special cases\n");
1159 key = keyNew ("user/binary",
1160 KEY_TYPE, KEY_TYPE_BINARY+1,
1161 KEY_SIZE, sizeof(binaryData),
1162 KEY_VALUE, binaryData,
1165 succeed_if (keyIsBinary(key) == 1, "should be binary");
1166 succeed_if (keyIsString(key) == 0, "should not be string");
1167 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1168 succeed_if (keyGetValueSize(key) == sizeof(binaryData), "size not correct");
1169 succeed_if (memcmp(binaryData, keyValue(key), sizeof(binaryData)) == 0, "memcmp");
1170 succeed_if (keyGetBinary(key, ret, 1000) == sizeof(binaryData), "could not get binary data");
1171 succeed_if (memcmp(binaryData, ret, sizeof(binaryData)) == 0, "memcmp");
1172 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1177 keySetType (key, KEY_TYPE_BINARY+1);
1178 keySetBinary (key, binaryData, sizeof(binaryData));
1180 succeed_if (keyIsBinary(key) == 1, "should be binary");
1181 succeed_if (keyIsString(key) == 0, "should not be string");
1182 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1183 succeed_if (keyGetValueSize(key) == sizeof(binaryData), "size not correct");
1184 succeed_if (memcmp(binaryData, keyValue(key), sizeof(binaryData)) == 0, "memcmp");
1185 succeed_if (keyGetBinary(key, ret, 1000) == sizeof(binaryData), "could not get binary data");
1186 succeed_if (memcmp(binaryData, ret, sizeof(binaryData)) == 0, "memcmp");
1187 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1192 keySetType (key, KEY_TYPE_BINARY+1);
1194 succeed_if (keyIsBinary(key) == 1, "should be binary");
1195 succeed_if (keyIsString(key) == 0, "should not be string");
1196 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1197 succeed_if (keyGetValueSize(key) == 0, "size not correct");
1198 succeed_if (keyValue(key) == 0, "should be null pointer");
1199 succeed_if (keyGetBinary(key, ret, 1000) == 0, "should write nothing because of no data");
1200 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1205 keySetBinary(key, 0, 0);
1206 keySetType (key, KEY_TYPE_BINARY+1);
1208 succeed_if (keyIsBinary(key) == 1, "should be binary");
1209 succeed_if (keyIsString(key) == 0, "should not be string");
1210 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1211 succeed_if (keyGetValueSize(key) == 0, "size not correct");
1212 succeed_if (keyValue(key) == 0, "should be null pointer");
1213 succeed_if (keyGetBinary(key, ret, 1000) == 0, "should write nothing because of no data");
1214 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1219 keySetBinary(key, 0, 1);
1220 keySetType (key, KEY_TYPE_BINARY+1);
1222 succeed_if (keyIsBinary(key) == 1, "should be binary");
1223 succeed_if (keyIsString(key) == 0, "should not be string");
1224 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1225 succeed_if (keyGetValueSize(key) == 0, "size not correct");
1226 succeed_if (keyValue(key) == 0, "should be null pointer");
1227 succeed_if (keyGetBinary(key, ret, 1000) == 0, "should write nothing because of no data");
1228 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1233 keySetBinary(key, "", 1);
1234 succeed_if (keySetBinary(key, 0, SIZE_MAX) == -1, "should do nothing and fail");
1235 succeed_if (keySetBinary(key, 0, SSIZE_MAX) == 0, "should free data");
1236 keySetType (key, KEY_TYPE_BINARY+1);
1238 succeed_if (keyIsBinary(key) == 1, "should be binary");
1239 succeed_if (keyIsString(key) == 0, "should not be string");
1240 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1241 succeed_if (keyGetValueSize(key) == 0, "size not correct");
1242 succeed_if (keyValue(key) == 0, "should be null pointer");
1243 succeed_if (keyGetBinary(key, ret, 1000) == 0, "should write nothing because of no data");
1244 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1249 keySetBinary(key, "", 1);
1250 keySetType (key, KEY_TYPE_BINARY+1);
1252 succeed_if (keyIsBinary(key) == 1, "should be binary");
1253 succeed_if (keyIsString(key) == 0, "should not be string");
1254 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1255 succeed_if (keyGetValueSize(key) == 1, "size not correct");
1256 succeed_if (memcmp(binaryData, keyValue(key), 1) == 0, "memcmp");
1257 succeed_if (keyGetBinary(key, ret, 1000) == 1, "could not get binary data");
1258 succeed_if (memcmp(binaryData, ret, 1) == 0, "memcmp");
1259 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1265 keySetType (key, KEY_TYPE_BINARY+1);
1266 keySetBinary (key, (void*)&i, sizeof(i));
1268 succeed_if (keyIsBinary(key) == 1, "should be binary");
1269 succeed_if (keyIsString(key) == 0, "should not be string");
1270 succeed_if (keyGetType(key) == KEY_TYPE_BINARY+1, "forgot its type");
1271 succeed_if (keyGetValueSize(key) == sizeof(i), "size not correct");
1272 succeed_if (memcmp((void*)&i, keyValue(key), sizeof(i)) == 0, "memcmp");
1273 succeed_if (keyGetBinary(key, ret, 1000) == sizeof(i), "could not get binary data");
1274 succeed_if (memcmp((void*)&i, ret, sizeof(i)) == 0, "memcmp");
1275 succeed_if (keyGetString(key, ret, 1000) == -1, "should be type mismatch");
1277 i = *(int*)keyValue(key);
1278 succeed_if (i==23, "incorrect int");
1284 void test_keyComment()
1289 char testComment [] = "testcomment";
1291 printf("Test comment of key\n");
1293 succeed_if (key = keyNew(0), "could not create new key");
1294 succeed_if (keyGetCommentSize (key) == 1, "empty comment size");
1295 succeed_if (keySetComment (key,"perfectcomment") == 15, "could not set comment");
1296 succeed_if (keyGetCommentSize (key) == 15, "comment size not correct");
1297 succeed_if (strcmp (keyComment(key), "perfectcomment") == 0, "Comment not same as set");
1298 succeed_if (keySetComment (key,"perfectcomment") == 15, "could not re-set same comment");
1299 succeed_if (strcmp (keyComment(key), "perfectcomment") == 0, "Comment not same as set");
1300 succeed_if (keySetComment (key,"nearperfectcomment") == 19, "could not re-set other comment");
1301 succeed_if (keyGetCommentSize (key) == 19, "comment size not correct");
1302 succeed_if (strcmp (keyComment(key), "nearperfectcomment") == 0, "Comment not same as set");
1303 succeed_if (keyGetComment (key, ret, keyGetCommentSize (key)>=999 ? 999 : keyGetCommentSize (key))
1304 == 19, "could not get comment");
1305 succeed_if (strcmp (ret, "nearperfectcomment") == 0, "Comment not same as set");
1306 succeed_if (keyDel (key) == 0, "could not delete key");
1308 succeed_if (key = keyNew(0), "could not create new key");
1309 succeed_if (strcmp (keyComment(key), "") == 0, "Empty comment problem");
1310 succeed_if (keyGetCommentSize(key) == 1, "Empty comment size problem");
1311 succeed_if (keySetComment (key,"") == 0, "could not set comment");
1312 succeed_if (strcmp (keyComment(key), "") == 0, "Empty comment problem");
1313 succeed_if (keyGetCommentSize(key) == 1, "Empty comment size problem");
1314 succeed_if (keyGetComment(key, ret, 0) == -1, "Could not get empty comment");
1315 succeed_if (keyGetComment(key, ret, 1) == 1, "Could not get empty comment");
1316 succeed_if (ret[0] == 0, "keyGetComment did not return empty comment");
1317 succeed_if (keyDel (key) == 0, "could not delete key");
1319 succeed_if (key = keyNew(0), "could not create new key");
1320 for (i=1; i<255; i++)
1322 ret[0] = i; ret[1] = i; ret[2] = 0;
1323 succeed_if (keySetComment (key,ret) == 3, "could not set comment");
1324 // output_key (key);
1325 succeed_if (strcmp (keyComment(key), ret) == 0, "Comment not same as set");
1327 succeed_if (keyDel (key) == 0, "could not delete key");
1331 printf ("Test comment of key 2\n");
1333 succeed_if (keyComment(0) == 0, "null pointer");
1334 succeed_if (keyGetCommentSize(0) == -1, "null pointer");
1335 succeed_if (keySetComment(0,"") == -1, "null pointer");
1338 succeed_if (keyGetCommentSize(key) == 1, "empty comment size");
1340 keySetComment (key, testComment);
1341 succeed_if (keyGetComment (0,ret,100) == -1, "null pointer");
1342 succeed_if (keyGetComment (key,0,100) == -1, "comment null pointer");
1343 succeed_if (keyGetComment (key,ret,0) == -1, "length checking");
1345 for (i=1; i< sizeof(testComment);i++)
1347 succeed_if (keyGetComment (key,ret,i) == -1, "length checking too short");
1349 for (i=sizeof(testComment); i<sizeof(testComment)*2; i++)
1351 succeed_if (keyGetComment (key,ret,i) == sizeof(testComment), "length checking longer");
1353 succeed_if (keyGetComment (key,ret, (size_t)-1) == -1, "maxSize exceeded");
1355 succeed_if (keySetComment(key,0) == 1, "delete comment");
1356 succeed_if (keyGetComment (key,ret,i) == 1, "length checking deleting");
1357 succeed_if (strcmp(ret, "") == 0, "not empty comment");
1359 succeed_if (keySetComment(key,testComment) == sizeof(testComment), "set comment");
1360 succeed_if (keyGetComment (key,ret,i) == sizeof(testComment), "length checking working");
1361 succeed_if (strcmp(ret, testComment) == 0, "not empty comment");
1363 succeed_if (keySetComment(key,"") == 1, "delete comment");
1364 succeed_if (keyGetComment (key,ret,i) == 1, "length checking deleting");
1365 succeed_if (strcmp(ret, "") == 0, "not empty comment");
1367 succeed_if (keySetComment(key,testComment) == sizeof(testComment), "set comment");
1368 succeed_if (keyGetComment (key,ret,i) == sizeof(testComment), "length checking working");
1369 succeed_if (strcmp(ret, testComment) == 0, "not empty comment");
1371 succeed_if (keyGetCommentSize(key) == sizeof(testComment), "testComment comment size");
1372 succeed_if (strncmp(keyComment(key), testComment, sizeof(testComment)) == 0, "testComment not same");
1377 void test_keyOwner()
1382 printf("Test owner of keys\n");
1383 succeed_if (key = keyNew(0), "could not create new key");
1384 succeed_if (keyGetOwnerSize (key) == 1, "empty owner size");
1385 succeed_if (keySetOwner (key,"perfectowner") == 13, "could not set owner");
1386 succeed_if (keyGetOwnerSize (key) == 13, "owner size not correct");
1387 succeed_if (strcmp (keyOwner(key), "perfectowner") == 0, "Owner not same as set");
1388 succeed_if (keySetOwner (key,"perfectowner") == 13, "could not re-set same owner");
1389 succeed_if (strcmp (keyOwner(key), "perfectowner") == 0, "Owner not same as set");
1390 succeed_if (keySetOwner (key,"nearperfectowner") == 17, "could not re-set other owner");
1391 succeed_if (keyGetOwnerSize (key) == 17, "owner size not correct");
1392 succeed_if (strcmp (keyOwner(key), "nearperfectowner") == 0, "Owner not same as set");
1393 succeed_if (keyGetOwner (key, ret, keyGetOwnerSize (key)>=999 ? 999 : keyGetOwnerSize (key))
1394 == 17, "could not get owner");
1395 succeed_if (strcmp (ret, "nearperfectowner") == 0, "Owner not same as set");
1396 succeed_if (keyDel (key) == 0, "could not delete key");
1398 succeed_if (key = keyNew(0), "could not create new key");
1399 succeed_if (keySetName(key, "user:perfectowner") == 5, "could not set to user with owner");
1400 succeed_if (keyGetOwnerSize (key) == 13, "owner size not correct");
1401 succeed_if (strcmp (keyOwner(key), "perfectowner") == 0, "Owner not same as set");
1402 succeed_if (keyDel (key) == 0, "could not delete key");
1404 succeed_if (key = keyNew(0), "could not create new key");
1405 succeed_if (strcmp (keyOwner(key), "") == 0, "Empty owner problem");
1406 succeed_if (keyGetOwnerSize(key) == 1, "Empty owner size problem");
1407 succeed_if (keySetOwner (key,"") == 1, "could not set owner");
1408 succeed_if (strcmp (keyOwner(key), "") == 0, "Empty owner problem");
1409 succeed_if (keyGetOwnerSize(key) == 1, "Empty owner size problem");
1410 succeed_if (keyGetOwner(key, ret, 0) == -1, "Could not get empty owner");
1411 succeed_if (keyGetOwner(key, ret, 1) == 1, "Could not get empty owner");
1412 succeed_if (ret[0] == 0, "keyGetOwner did not return empty owner");
1413 succeed_if (keyDel (key) == 0, "could not delete key");
1415 succeed_if (key = keyNew(0), "could not create new key");
1416 for (i=1; i<255; i++)
1418 ret[0] = i; ret[1] = i; ret[2] = 0;
1419 succeed_if (keySetOwner (key,ret) == 3, "could not set owner");
1420 // output_key (key);
1421 succeed_if (strcmp (keyOwner(key), ret) == 0, "Owner not same as set");
1423 succeed_if (keyDel (key) == 0, "could not delete key");
1426 void test_keyInactive ()
1428 Key * key = keyNew(0);
1430 succeed_if (keyIsInactive(0) == -1, "NULL pointer");
1431 succeed_if (keyIsInactive(key) == -1, "Key has no name");
1433 printf("Test of active and inactive keys\n");
1434 keySetName(key,"user/valid");
1435 succeed_if (!keyIsInactive(key), "Key should not be inactive");
1437 keySetName(key,"user/.hidden/valid");
1438 succeed_if (!keyIsInactive(key), "Key should not be inactive");
1440 keySetName(key,"user/.hidden/€valid");
1441 succeed_if (!keyIsInactive(key), "Key should not be inactive");
1443 keySetName(key,"user/hidden");
1444 succeed_if (!keyIsInactive(key), "Key should not be inactive");
1446 keySetName(key,"user/.hidden");
1447 succeed_if (keyIsInactive(key), "Key should be inactive");
1449 keySetName(key,"user/.valid/.hidden");
1450 succeed_if (keyIsInactive(key), "Key should be inactive");
1452 keySetName(key,"user/.valid/.:hidden");
1453 succeed_if (keyIsInactive(key), "Key should be inactive");
1455 keySetName(key,"user/.valid/.€hidden");
1456 succeed_if (keyIsInactive(key), "Key should be inactive");
1458 keySetName(key,"user/.HiddenStringKey");
1459 succeed_if (keyIsInactive(key), "Key should be inactive");
1461 keySetName(key,"user/.HiddenDirectoryKey");
1462 succeed_if (keyIsInactive(key), "Key should be inactive");
1464 keySetName(key,"user/tests/file8xdLVS/filesys/.HiddenStringKey");
1465 succeed_if (keyIsInactive(key), "Key should be inactive");
1469 void test_keyBelow()
1471 Key * key1 = keyNew(0);
1472 Key * key2 = keyNew(0);
1474 printf("Test of relative positions of keys\n");
1476 succeed_if (keyIsBelow(key1,0) == -1, "NULL pointer");
1477 succeed_if (keyIsBelow(0,0) == -1, "NULL pointer");
1478 succeed_if (keyIsBelow(0,key1) == -1, "NULL pointer");
1480 succeed_if (keyIsDirectBelow(key1,0) == -1, "NULL pointer");
1481 succeed_if (keyIsDirectBelow(0,0) == -1, "NULL pointer");
1482 succeed_if (keyIsDirectBelow(0,key1) == -1, "NULL pointer");
1484 keySetName(key1,"user/valid");
1485 keySetName(key2,"user/valid");
1486 succeed_if (!keyIsBelow(key1,key2), "Key should not be below");
1487 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1489 keySetName(key1,"user/valid");
1490 keySetName(key2,"user/valid/");
1491 succeed_if (!keyIsBelow(key1,key2), "Key should not be below");
1492 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1494 keySetName(key1,"user/valid");
1495 keySetName(key2,"user/valid/below");
1496 succeed_if (keyIsBelow(key1,key2), "Key should be below");
1497 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1499 keySetName(key1,"user/valid");
1500 keySetName(key2,"user/valid/b");
1501 succeed_if (keyIsBelow(key1,key2), "Key should be below");
1502 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1504 keySetName(key1,"user/valid");
1505 keySetName(key2,"user/valid/b");
1506 succeed_if (keyIsBelow(key1,key2), "Key should be below");
1507 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1509 keySetName(key1,"user/valid");
1510 keySetName(key2,"user/valid/b/e");
1511 succeed_if (keyIsBelow(key1,key2), "Key should be below");
1512 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1514 keySetName(key1,"user/valide");
1515 keySetName(key2,"user/valid/e");
1516 succeed_if (!keyIsBelow(key1,key2), "Key should not be below");
1517 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1519 keySetName(key1,"user/valid/b");
1520 keySetName(key2,"user/valid/e");
1521 succeed_if (!keyIsBelow(key1,key2), "Key should not be below");
1522 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1524 keySetName(key1,"user/valide");
1525 keySetName(key2,"user/valid/valide");
1526 succeed_if (!keyIsBelow(key1,key2), "Key should not be below");
1527 succeed_if (!keyIsBelow(key2,key1), "Key should not be below");
1529 keySetName(key1,"user/valid");
1530 keySetName(key2,"user/valid/valide");
1531 succeed_if (keyIsDirectBelow(key1,key2), "Key should be below");
1532 succeed_if (!keyIsDirectBelow(key2,key1), "Key should not be below");
1534 keySetName(key1,"user/valid");
1535 keySetName(key2,"user/valid/non/valid");
1536 succeed_if (!keyIsDirectBelow(key1,key2), "Key should not be below");
1537 succeed_if (!keyIsDirectBelow(key2,key1), "Key should not be below");
1539 keySetName(key1,"user/valid/a");
1540 keySetName(key2,"user/valid/b");
1541 succeed_if (!keyIsDirectBelow(key1,key2), "Key should not be below");
1542 succeed_if (!keyIsDirectBelow(key2,key1), "Key should not be below");
1544 keySetName(key1,"user/valid");
1545 keySetName(key2,"user/valid");
1546 succeed_if (!keyIsDirectBelow(key1,key2), "Key should not be below");
1547 succeed_if (!keyIsDirectBelow(key2,key1), "Key should not be below");
1549 keySetName(key1,"user/valid/a/b");
1550 keySetName(key2,"user/valid");
1551 succeed_if (!keyIsDirectBelow(key1,key2), "Key should not be below");
1552 succeed_if (!keyIsDirectBelow(key2,key1), "Key should not be below");
1554 keySetName(key1,"user/valid/a");
1555 keySetName(key2,"user/valid");
1556 succeed_if (!keyIsDirectBelow(key1,key2), "Key should not be below");
1557 succeed_if (keyIsDirectBelow(key2,key1), "Key should be below");
1568 printf("Test key duplication\n");
1571 orig = keyNew("user:yl/foo/bar",
1572 KEY_TYPE, KEY_TYPE_BINARY,
1574 KEY_VALUE, "foobar",
1575 KEY_COMMENT, "mycomment",
1584 succeed_if( (copy = keyDup(orig)) != 0, "keyDup failed");
1585 succeed_if (keyGetATime(orig) == keyGetATime(copy), "ATime should be same");
1586 succeed_if (keyGetCTime(orig) == keyGetCTime(copy), "CTime should be same");
1587 succeed_if (keyGetMTime(orig) == keyGetMTime(copy), "MTime should be same");
1588 succeed_if (keyGetRef(orig) == 0, "orig ref counter should be 0");
1589 succeed_if (keyGetRef(copy) == 0, "copy ref counter should be 0");
1590 keyDel(orig); // everything independent from original!
1592 // Check the duplication
1593 succeed_if( strcmp(keyName(copy), "user/foo/bar") == 0, "keyDup: key name copy error");
1594 succeed_if( strcmp(keyOwner(copy), "yl") == 0, "keyDup: key name owner copy error");
1595 succeed_if( strncmp(keyValue(copy), "foobar", 6) == 0, "keyDup: key value copy error");
1596 succeed_if( strcmp(keyComment(copy), "mycomment") == 0, "keyDup: key comment copy error");
1597 succeed_if( keyGetUID(copy) == 123, "keyDup: key UID copy error");
1598 succeed_if( keyGetGID(copy) == 456, "keyDup: key GID copy error");
1599 succeed_if( keyGetMode(copy) == 0644, "keyDup: key mode copy error");
1600 succeed_if( keyGetType(copy) & (KEY_TYPE_BINARY), "keyDup: key type copy error");
1605 keySetName (orig, "invalid");
1607 succeed_if ( (copy = keyDup(orig)) != 0, "keyDup failed");
1608 succeed_if ( strcmp(keyName(orig), "") == 0, "orig name should be empty");
1609 succeed_if ( strcmp(keyName(copy), "") == 0, "copy name should be empty");
1610 succeed_if (keyGetNameSize(orig) == 1, "orig name size");
1611 succeed_if (keyGetNameSize(copy) == 1, "orig name size");
1612 succeed_if ( strcmp(keyOwner(orig), "") == 0, "orig name should be empty");
1613 succeed_if ( strcmp(keyOwner(copy), "") == 0, "copy name should be empty");
1614 succeed_if (keyGetOwnerSize(orig) == 1, "orig name size");
1615 succeed_if (keyGetOwnerSize(copy) == 1, "copy name size");
1616 succeed_if (keyGetType(orig) == KEY_TYPE_UNDEFINED, "orig key type");
1617 succeed_if (keyGetType(copy) == KEY_TYPE_UNDEFINED, "copy key type");
1618 succeed_if (keyGetATime(orig) == keyGetATime(copy), "ATime should be same");
1619 succeed_if (keyGetCTime(orig) == keyGetCTime(copy), "CTime should be same");
1620 succeed_if (keyGetMTime(orig) == keyGetMTime(copy), "MTime should be same");
1621 succeed_if (keyGetRef(orig) == 0, "orig ref counter should be 0");
1622 succeed_if (keyGetRef(copy) == 0, "copy ref counter should be 0");
1632 printf("Test key copy\n");
1635 orig = keyNew("user:yl/foo/bar",
1636 KEY_TYPE, KEY_TYPE_BINARY,
1638 KEY_VALUE, "foobar",
1639 KEY_COMMENT, "mycomment",
1649 succeed_if( keyCopy(copy, orig) == 1, "keyCopy failed");
1650 succeed_if (keyGetATime(orig) == keyGetATime(copy), "ATime should be same");
1651 succeed_if (keyGetCTime(orig) == keyGetCTime(copy), "CTime should be same");
1652 succeed_if (keyGetMTime(orig) == keyGetMTime(copy), "MTime should be same");
1653 succeed_if (keyGetRef(orig) == 0, "orig ref counter should be 0");
1654 succeed_if (keyGetRef(copy) == 0, "copy ref counter should be 0");
1655 keyDel(orig); // everything independent from original!
1657 // Check the duplication
1658 succeed_if( strcmp(keyName(copy), "user/foo/bar") == 0, "keyCopy: key name copy error");
1659 succeed_if( strcmp(keyOwner(copy), "yl") == 0, "keyCopy: key name owner copy error");
1660 succeed_if( strncmp(keyValue(copy), "foobar", 6) == 0, "keyCopy: key value copy error");
1661 succeed_if( strcmp(keyComment(copy), "mycomment") == 0, "keyCopy: key comment copy error");
1662 succeed_if( keyGetUID(copy) == 123, "keyCopy: key UID copy error");
1663 succeed_if( keyGetGID(copy) == 456, "keyCopy: key GID copy error");
1664 succeed_if( keyGetMode(copy) == 0644, "keyCopy: key mode copy error");
1665 succeed_if( keyGetType(copy) & (KEY_TYPE_BINARY), "keyCopy: key type copy error");
1668 succeed_if (keyCopy(copy, 0) == 0, "make the key copy fresh");
1670 succeed_if (compare_key (orig, copy, 0) == 0, "keyCopy did not make the key fresh");
1676 keySetName (orig, "invalid");
1679 succeed_if( keyCopy(copy, orig) == 1, "keyCopy failed");
1680 succeed_if ( strcmp(keyName(orig), "") == 0, "orig name should be empty");
1681 succeed_if ( strcmp(keyName(copy), "") == 0, "copy name should be empty");
1682 succeed_if (keyGetNameSize(orig) == 1, "orig name size");
1683 succeed_if (keyGetNameSize(copy) == 1, "orig name size");
1684 succeed_if ( strcmp(keyOwner(orig), "") == 0, "orig name should be empty");
1685 succeed_if ( strcmp(keyOwner(copy), "") == 0, "copy name should be empty");
1686 succeed_if (keyGetOwnerSize(orig) == 1, "orig name size");
1687 succeed_if (keyGetOwnerSize(copy) == 1, "copy name size");
1688 succeed_if (keyGetType(orig) == KEY_TYPE_UNDEFINED, "orig key type");
1689 succeed_if (keyGetType(copy) == KEY_TYPE_UNDEFINED, "copy key type");
1690 succeed_if (keyGetATime(orig) == keyGetATime(copy), "ATime should be same");
1691 succeed_if (keyGetCTime(orig) == keyGetCTime(copy), "CTime should be same");
1692 succeed_if (keyGetMTime(orig) == keyGetMTime(copy), "MTime should be same");
1693 succeed_if (keyGetRef(orig) == 0, "orig ref counter should be 0");
1694 succeed_if (keyGetRef(copy) == 0, "copy ref counter should be 0");
1700 void test_keyDir (void)
1703 Key * key = keyNew ("user", KEY_END);
1705 printf ("Test directory keys\n");
1707 succeed_if (keyGetMode(key) == 0664, "new key not 0664 by default");
1708 succeed_if (keyIsDir (key) == 0, "new key should not be directory by default");
1710 succeed_if (keySetMode(key, 0644) == 0, "could not set to 0644");
1711 succeed_if (keyIsDir (key) == 0, "0644 should not be directory");
1712 succeed_if (keyGetMode(key) == 0644, "key is not 0644, but was set");
1714 succeed_if (keySetDir (key) == 0, "could not set directory key");
1715 succeed_if (keyIsDir (key) == 1, "should be directory after keySetDir");
1716 succeed_if (keyGetMode(key) == 0755, "key is not 0644, but was set");
1718 for (i = 0; i <= 0777; i++)
1720 succeed_if (keySetMode(key, i) == 0, "could not set to 0000 <= i <= 0777");
1721 succeed_if (keyGetMode(key) == i, "key is not correct 0000 <= i <= 0777");
1723 if (/*getuid() == keyGetUID (key) &&*/ (keyGetMode (key) & 0100))
1725 succeed_if (keyIsDir (key) == 1, "should be directory because of executable and uid match");
1726 } else if (/*getuid() != keyGetUID (key) && getgid() == keyGetGID (key) &&*/ (keyGetMode (key) & 0010))
1728 succeed_if (keyIsDir (key) == 1, "should be directory because of executable and gid match");
1729 } else if (/*getuid() != keyGetUID (key) && getgid() != keyGetGID (key) &&*/ (keyGetMode (key) & 0001))
1731 succeed_if (keyIsDir (key) == 1, "should be directory because of executable and other match");
1733 succeed_if (keyIsDir (key) == 0, "should not be directory");
1736 succeed_if (keySetDir (key) == 0, "could not set directory key");
1737 succeed_if (keyIsDir (key) == 1, "should be directory after keySetDir");
1741 key = keyNew ("user", KEY_DIR, KEY_END);
1742 succeed_if (keyGetMode(key) == 0775, "new key with KEY_DIR not 0775 by default");
1743 succeed_if (keyIsDir (key) == 1, "new key with KEY_DIR should be directory by default");
1745 succeed_if (keySetMode(key, 0644) == 0, "could not set to 0644");
1746 succeed_if (keyIsDir (key) == 0, "0644 should not be directory");
1747 succeed_if (keyGetMode(key) == 0644, "key is not 0644, but was set");
1749 succeed_if (keySetDir (key) == 0, "could not set directory key");
1750 succeed_if (keyIsDir (key) == 1, "should be directory after keySetDir");
1751 succeed_if (keyGetMode(key) == 0755, "key is not 0644, but was set");
1754 key = keyNew ("user/s", KEY_DIR, KEY_MODE, 0444, KEY_END);
1755 succeed_if (keyGetMode(key) == 0444, "0444 set by keyNew");
1756 succeed_if (keyIsDir (key) == 0, "0444 should be directory");
1759 key = keyNew ("user/s", KEY_MODE, 0444, KEY_DIR, KEY_END);
1760 succeed_if (keyGetMode(key) == 0555, "0555 set by keyNew");
1761 succeed_if (keyIsDir (key) == 1, "0555 should be directory");
1767 Key * key = keyNew (KEY_END);
1768 time_t now = time(0);
1769 time_t past= now - 60*60*24*356 * 10;
1770 time_t future = now + 60*60*24*356 * 10;
1772 time_t far_future = now + 60L*60L*24L*356L * 100L;
1775 printf ("Test key time\n");
1777 succeed_if (keyGetATime(0) == (size_t)-1, "null pointer check");
1778 succeed_if (keyGetMTime(0) == (size_t)-1, "null pointer check");
1779 succeed_if (keyGetCTime(0) == (size_t)-1, "null pointer check");
1781 succeed_if (keySetATime(0,0) == -1, "null pointer check");
1782 succeed_if (keySetMTime(0,0) == -1, "null pointer check");
1783 succeed_if (keySetCTime(0,0) == -1, "null pointer check");
1785 succeed_if (keyGetATime(key) == 0, "new initialized atime not 0");
1786 succeed_if (keyGetMTime(key) == 0, "new initialized mtime not 0");
1787 succeed_if (keyGetCTime(key) == 0, "new initialized ctime not 0");
1789 succeed_if (keySetATime (key, now) == 0, "could not set atime");
1790 succeed_if (keySetMTime (key, now) == 0, "could not set mtime");
1791 succeed_if (keySetCTime (key, now) == 0, "could not set ctime");
1793 succeed_if (keyGetATime(key) == now, "new initialized atime not 0");
1794 succeed_if (keyGetMTime(key) == now, "new initialized mtime not 0");
1795 succeed_if (keyGetCTime(key) == now, "new initialized ctime not 0");
1798 succeed_if (keySetATime (key, past) == 0, "could not set atime");
1799 succeed_if (keySetMTime (key, past) == 0, "could not set mtime");
1800 succeed_if (keySetCTime (key, past) == 0, "could not set ctime");
1802 succeed_if (keyGetATime(key) == past, "new initialized atime not 0");
1803 succeed_if (keyGetMTime(key) == past, "new initialized mtime not 0");
1804 succeed_if (keyGetCTime(key) == past, "new initialized ctime not 0");
1807 succeed_if (keySetATime (key, future) == 0, "could not set atime");
1808 succeed_if (keySetMTime (key, future) == 0, "could not set mtime");
1809 succeed_if (keySetCTime (key, future) == 0, "could not set ctime");
1811 succeed_if (keyGetATime(key) == future, "new initialized atime not 0");
1812 succeed_if (keyGetMTime(key) == future, "new initialized mtime not 0");
1813 succeed_if (keyGetCTime(key) == future, "new initialized ctime not 0");
1816 succeed_if (keySetATime (key, far_future) == 0, "could not set atime");
1817 succeed_if (keySetMTime (key, far_future) == 0, "could not set mtime");
1818 succeed_if (keySetCTime (key, far_future) == 0, "could not set ctime");
1820 succeed_if (keyGetATime(key) == far_future, "new initialized atime not 0");
1821 succeed_if (keyGetMTime(key) == far_future, "new initialized mtime not 0");
1822 succeed_if (keyGetCTime(key) == far_future, "new initialized ctime not 0");
1824 warn_if_fail (keyGetATime(key) > 0, "time_t not 64 bit, 2038 problem");
1825 warn_if_fail (keyGetMTime(key) > 0, "time_t not 64 bit, 2038 problem");
1826 warn_if_fail (keyGetCTime(key) > 0, "time_t not 64 bit, 2038 problem");
1832 void test_keyMeta(void)
1836 succeed_if (keyStat (key) == -1, "stat null pointer");
1837 succeed_if (keyNeedStat(key) == -1, "could not stat null pointer");
1838 succeed_if(keyGetUID(key) == (uid_t)-1, "uid null pointer");
1839 succeed_if(keyGetGID(key) == (gid_t)-1, "gid null pointer");
1840 succeed_if(keyGetMode(key) == (mode_t)-1, "mode null pointer");
1845 succeed_if (keyNeedStat(key) == 0, "fresh key does not need stat");
1846 succeed_if (keyStat(key) == 1, "could not stat key");
1847 succeed_if (keyNeedStat(key) == 1, "could not stat key");
1850 key = keyNew ("user/stat", KEY_STAT, KEY_END);
1851 succeed_if (keyNeedStat(key) == 1, "fresh key need stat");
1852 succeed_if (keyStat(key) == 1, "could not stat key");
1853 succeed_if (keyNeedStat(key) == 1, "could not stat key");
1857 succeed_if (keyRemove (key) == -1, "remove null pointer");
1858 succeed_if (keyNeedRemove(key) == -1, "could not remove key");
1859 succeed_if (keyNeedSync(key) == -1, "key needs sync");
1861 succeed_if (keyNeedRemove(key) == 0, "fresh key does not need remove");
1862 succeed_if (keyNeedSync(key) == 0, "fresh key needs sync");
1863 succeed_if (keyRemove(key) == 1, "could not remove key");
1864 succeed_if (keyNeedRemove(key) == 1, "could not remove key");
1865 succeed_if (keyNeedSync(key) == 1, "need sync after remove");
1868 key = keyNew ("user/remove", KEY_REMOVE, KEY_END);
1869 succeed_if (keyNeedRemove(key) == 1, "fresh key need remove");
1870 succeed_if (keyNeedSync(key) == 1, "need sync after remove");
1871 succeed_if (keyRemove(key) == 1, "could not remove key");
1872 succeed_if (keyNeedRemove(key) == 1, "could not remove key");
1873 succeed_if (keyNeedSync(key) == 1, "need sync after remove");
1876 succeed_if (keyNeedSync(0) == -1, "keyNeedSync(0)");
1877 succeed_if (keyNeedStat(0) == -1, "keyNeedStat(0)");
1878 succeed_if (keyNeedRemove(0) == -1, "keyNeedRemove(0)");
1881 succeed_if (keyNeedSync(key) == 0, "keyNew(0) should not need sync");
1882 succeed_if (keySetName(key,"invalid") == -1, "invalid name should fail");
1883 succeed_if (keyNeedSync(key) == 0, "keyNew(0) should not need sync");
1887 succeed_if (keyNeedSync(key) == 0, "should not need sync");
1889 succeed_if (keyNeedSync(key) == 1, "should need sync");
1893 succeed_if(keyGetUID(key) == (uid_t)-1, "uid not set to nobody");
1894 succeed_if(keyGetGID(key) == (gid_t)-1, "gid not set to nobody");
1896 succeed_if(keySetUID(key,20) == 0, "could not set uid");
1897 succeed_if(keySetGID(key,21) == 0, "could not set uid");
1899 succeed_if(keyGetUID(key) == 20, "uid not set to 20");
1900 succeed_if(keyGetGID(key) == 21, "gid not set to 21");
1902 succeed_if(keySetUID(key,(uid_t)-1) == 0, "could not set uid");
1903 succeed_if(keySetGID(key,(gid_t)-1) == 0, "could not set uid");
1905 succeed_if(keyGetUID(key) == (uid_t)-1, "uid not set to nobody");
1906 succeed_if(keyGetGID(key) == (gid_t)-1, "gid not set to nobody");
1908 succeed_if(keySetUID(key,0) == 0, "could not set uid");
1909 succeed_if(keySetGID(key,0) == 0, "could not set uid");
1911 succeed_if(keyGetUID(key) == 0, "uid not set to 20");
1912 succeed_if(keyGetGID(key) == 0, "gid not set to 21");
1916 succeed_if(keyGetMode(key) == KEY_DEF_MODE, "new key does not have default mode");
1917 succeed_if(keySetDir(key) == 0, "could not set dir");
1918 succeed_if(keyGetMode(key) == KEY_DEF_MODE | KEY_DEF_DIR, "directory key");
1921 key = keyNew("user/dir", KEY_DIR, KEY_END);
1922 succeed_if(keyGetMode(key) == KEY_DEF_MODE | KEY_DEF_DIR, "directory key");
1923 succeed_if(keySetDir(key) == 0, "could not set dir");
1924 succeed_if(keyGetMode(key) == KEY_DEF_MODE | KEY_DEF_DIR, "directory key");
1928 void test_keyHelpers()
1930 char *name="user/abc/defghi/jkl";
1936 Key *key=keyNew("system/parent/base",KEY_END);
1941 printf ("Test key helpers\n");
1943 /* copied out of example from keyNameGetOneLevel
1944 Lets define a key name with a lot of repeating '/' and escaped '/'
1945 char *keyName="user////abc/def\\/ghi////jkl///";*/
1948 while (*(p=keyNameGetOneLevel(p+size,&size))) {
1951 strncpy(buffer,p,size);
1954 /* printf("Level %d name: \"%s\"\n",level,buffer);*/
1957 case 1: succeed_if (strcmp (buffer, "user") == 0, "keyNameGetOneLevel not correct"); break;
1958 case 2: succeed_if (strcmp (buffer, "abc") == 0, "keyNameGetOneLevel not correct"); break;
1959 case 3: succeed_if (strcmp (buffer, "defghi") == 0, "keyNameGetOneLevel not correct"); break;
1960 case 4: succeed_if (strcmp (buffer, "jkl") == 0, "keyNameGetOneLevel not correct"); break;
1961 default: succeed_if (0, "should not reach case statement");
1965 /* with escaped sequence:*/
1966 name="user////abc/def\\/ghi////jkl///";
1971 while (*(p=keyNameGetOneLevel(p+size,&size))) {
1974 strncpy(buffer,p,size);
1977 /* printf("Level %d name: \"%s\"\n",level,buffer);*/
1980 case 1: succeed_if (strcmp (buffer, "user") == 0, "keyNameGetOneLevel not correct");
1981 succeed_if (size == 4, "wrong size returned"); break;
1982 case 2: succeed_if (strcmp (buffer, "abc") == 0, "keyNameGetOneLevel not correct");
1983 succeed_if (size == 3, "wrong size returned"); break;
1984 case 3: succeed_if (strcmp (buffer, "def\\/ghi") == 0, "keyNameGetOneLevel not correct");
1985 succeed_if (size == 8, "wrong size returned"); break;
1986 case 4: succeed_if (strcmp (buffer, "jkl") == 0, "keyNameGetOneLevel not correct");
1987 succeed_if (size == 3, "wrong size returned"); break;
1988 default: succeed_if (0, "should not reach case statement");
1992 /* with escaped sequence at the end:*/
1993 name="user////abc/def\\/ghi////jkl\\/\\/";
1998 while (*(p=keyNameGetOneLevel(p+size,&size))) {
2001 strncpy(buffer,p,size);
2004 /* printf("Level %d name: \"%s\"\n",level,buffer);*/
2007 case 1: succeed_if (strcmp (buffer, "user") == 0, "keyNameGetOneLevel not correct");
2008 succeed_if (size == 4, "wrong size returned"); break;
2009 case 2: succeed_if (strcmp (buffer, "abc") == 0, "keyNameGetOneLevel not correct");
2010 succeed_if (size == 3, "wrong size returned"); break;
2011 case 3: succeed_if (strcmp (buffer, "def\\/ghi") == 0, "keyNameGetOneLevel not correct");
2012 succeed_if (size == 8, "wrong size returned"); break;
2013 case 4: succeed_if (strcmp (buffer, "jkl\\/\\/") == 0, "keyNameGetOneLevel not correct");
2014 succeed_if (size == 7, "wrong size returned"); break;
2015 default: succeed_if (0, "should not reach case statement");
2020 parentSize=keyGetParentNameSize(key);
2021 parentName=malloc(parentSize);
2022 keyGetParentName(key,parentName,parentSize);
2023 succeed_if (strcmp (parentName, "system/parent") == 0, "parentName error");
2027 succeed_if (keyAddBaseName (0, "s") == -1, "null pointer saftey");
2029 k1 = keyNew ("user/dir1/dir2", KEY_END);
2030 succeed_if (keyAddBaseName (k1, 0) == 15, "Could not add nothing to basename");
2031 succeed_if (strcmp (keyName(k1), "user/dir1/dir2") == 0, "added basename not correct");
2032 succeed_if (keyAddBaseName (k1, "") == 15, "Could not add nothing to basename");
2033 succeed_if (strcmp (keyName(k1), "user/dir1/dir2") == 0, "added basename not correct");
2034 succeed_if (keyAddBaseName (k1, "mykey") == 21, "Could not add basename");
2035 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey") == 0, "added basename not correct");
2036 succeed_if (keyGetNameSize(k1) == 21, "Name size not correct");
2037 succeed_if (keyAddBaseName (k1, "mykey") == 27, "Could not add basename");
2038 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey/mykey") == 0, "added basename not correct");
2039 succeed_if (keyGetNameSize(k1) == 27, "Name size not correct");
2040 succeed_if (keyAddBaseName (k1, "a") == 29, "Could not add basename");
2041 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey/mykey/a") == 0, "added basename not correct");
2042 succeed_if (keyGetNameSize(k1) == 29, "Name size not correct");
2045 k1 = keyNew ("user/dir1/dir2", KEY_END);
2046 succeed_if (keyAddBaseName (k1, "mykey/mykey/a") == 29, "Could not add basename");
2047 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey/mykey/a") == 0, "added basename not correct");
2048 succeed_if (keyGetNameSize(k1) == 29, "Name size not correct");
2051 k1 = keyNew ("user/////dir1//////dir2", KEY_END);
2052 succeed_if (keyAddBaseName (k1, "mykey/////mykey////a") == 29, "Could not add basename");
2053 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey/mykey/a") == 0, "added basename not correct");
2054 succeed_if (keyGetNameSize(k1) == 29, "Name size not correct");
2057 k1 = keyNew ("user/dir1/////dir2////", KEY_END);
2058 succeed_if (keyAddBaseName (k1, "////mykey////mykey/a") == 29, "Could not add basename");
2059 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey/mykey/a") == 0, "added basename not correct");
2060 succeed_if (keyGetNameSize(k1) == 29, "Name size not correct");
2063 k1 = keyNew ("user/dir1/dir2", KEY_END);
2064 succeed_if (keyAddBaseName (k1, "mykey/mykey////a///") == 29, "Could not add basename");
2065 succeed_if (strcmp (keyName(k1), "user/dir1/dir2/mykey/mykey/a") == 0, "added basename not correct");
2066 succeed_if (keyGetNameSize(k1) == 29, "Name size not correct");
2069 k2 = keyNew (KEY_END);
2070 succeed_if (keyAddBaseName (k2, "no") == -1, "Could not add basename");
2071 succeed_if (strcmp (keyName(k2), "") == 0, "added basename not correct");
2072 succeed_if (keyGetNameSize(k2) == 1, "Name size not correct");
2075 k2 = keyNew (KEY_END);
2076 succeed_if (keyAddBaseName (k2, "user") == 5, "Could not add basename");
2077 succeed_if (strcmp (keyName(k2), "user") == 0, "added basename not correct");
2078 succeed_if (keyGetNameSize(k2) == 5, "Name size not correct");
2081 k2 = keyNew ("user/dir1/dir2/mykey/mykey/a", KEY_END);
2082 succeed_if (keySetBaseName (k2, "mykey") == 33, "Could not add basename");
2083 succeed_if (strcmp (keyName(k2), "user/dir1/dir2/mykey/mykey/mykey") == 0, "added basename not correct");
2084 succeed_if (keyGetNameSize(k2) == 33, "Name size not correct");
2085 succeed_if (keySetBaseName (k2, "einva") == 33, "Could not add basename");
2086 succeed_if (strcmp (keyName(k2), "user/dir1/dir2/mykey/mykey/einva") == 0, "added basename not correct");
2087 succeed_if (keyGetNameSize(k2) == 33, "Name size not correct");
2088 succeed_if (keySetBaseName (k2, "chang") == 33, "Could not add basename");
2089 succeed_if (strcmp (keyName(k2), "user/dir1/dir2/mykey/mykey/chang") == 0, "added basename not correct");
2090 succeed_if (keySetBaseName (k2, "change") == 34, "Could not add basename");
2091 succeed_if (keyGetNameSize(k2) == 34, "Name size not correct");
2092 succeed_if (strcmp (keyName(k2), "user/dir1/dir2/mykey/mykey/change") == 0, "added basename not correct");
2095 k2 = keyNew ("user/dir1/a", KEY_END);
2096 succeed_if (keySetBaseName (k2, "") == 10, "Could not add basename");
2097 succeed_if (strcmp (keyName(k2), "user/dir1") == 0, "added basename not correct");
2098 succeed_if (keyGetNameSize(k2) == 10, "Name size not correct");
2101 k2 = keyNew ("user/dir1/a", KEY_END);
2102 succeed_if (keySetBaseName (k2, "some/more") == 20, "Could not add basename");
2103 succeed_if (strcmp (keyName(k2), "user/dir1/some/more") == 0, "added basename not correct");
2104 succeed_if (keyGetNameSize(k2) == 20, "Name size not correct");
2107 k2 = keyNew ("user/dir1/a", KEY_END);
2108 succeed_if (keySetBaseName (k2, "some////more") == 20, "Could not add basename");
2109 succeed_if (strcmp (keyName(k2), "user/dir1/some/more") == 0, "added basename not correct");
2110 succeed_if (keyGetNameSize(k2) == 20, "Name size not correct");
2113 k2 = keyNew ("user/dir1/a", KEY_END);
2114 succeed_if (keySetBaseName (k2, "some////more///") == 20, "Could not add basename");
2115 succeed_if (strcmp (keyName(k2), "user/dir1/some/more") == 0, "added basename not correct");
2116 succeed_if (keyGetNameSize(k2) == 20, "Name size not correct");
2119 k2 = keyNew ("user/dir1/a", KEY_END);
2120 succeed_if (keySetBaseName (k2, "///some////more") == 20, "Could not add basename");
2121 succeed_if (strcmp (keyName(k2), "user/dir1/some/more") == 0, "added basename not correct");
2122 succeed_if (keyGetNameSize(k2) == 20, "Name size not correct");
2125 k2 = keyNew ("user", KEY_END);
2126 succeed_if (keySetBaseName (k2, "user") == 5, "Could not add basename");
2127 succeed_if (strcmp (keyName(k2), "user") == 0, "added basename not correct");
2128 succeed_if (keyGetNameSize(k2) == 5, "Name size not correct");
2131 k2 = keyNew ("system", KEY_END);
2132 succeed_if (keySetBaseName (k2, "user") == 5, "Could not add basename");
2133 succeed_if (strcmp (keyName(k2), "user") == 0, "added basename not correct");
2134 succeed_if (keyGetNameSize(k2) == 5, "Name size not correct");
2137 k2 = keyNew ("user", KEY_END);
2138 succeed_if (keySetBaseName (k2, "system") == 7, "Could not add basename");
2139 succeed_if (strcmp (keyName(k2), "system") == 0, "added basename not correct");
2140 succeed_if (keyGetNameSize(k2) == 7, "Name size not correct");
2143 k2 = keyNew ("system", KEY_END);
2144 succeed_if (keySetBaseName (k2, "system") == 7, "Could not add basename");
2145 succeed_if (strcmp (keyName(k2), "system") == 0, "added basename not correct");
2146 succeed_if (keyGetNameSize(k2) == 7, "Name size not correct");
2149 k2 = keyNew ("user", KEY_END);
2150 succeed_if (keySetBaseName (k2, "no") == -1, "Could not add basename");
2151 succeed_if (strcmp (keyName(k2), "") == 0, "added basename not correct");
2152 succeed_if (keyGetNameSize(k2) == 1, "Name size not correct");
2155 k2 = keyNew ("system", KEY_END);
2156 succeed_if (keySetBaseName (k2, "no") == -1, "Could not add basename");
2157 succeed_if (strcmp (keyName(k2), "") == 0, "added basename not correct");
2158 succeed_if (keyGetNameSize(k2) == 1, "Name size not correct");
2163 void test_keyNamespace()
2167 printf ("Test namespaces\n");
2169 key = keyNew (KEY_END);
2170 succeed_if (keyNameGetNamespace (keyName(key)) == 0, "empty namespace not 0");
2171 succeed_if (keyGetNamespace (key) == 0, "empty namespace not 0");
2172 succeed_if (keyNameIsSystem (keyName(key)) == 0, "empty name is not system");
2173 succeed_if (keyIsSystem (key) == 0, "empty key is not system");
2174 succeed_if (keyNameIsUser (keyName(key)) == 0, "empty name is not user");
2175 succeed_if (keyIsUser (key) == 0, "empty key is not user");
2178 key = keyNew ("user", KEY_END);
2179 succeed_if (keyNameGetNamespace (keyName(key)) == KEY_NS_USER, "user namespace not KEY_NS_USER");
2180 succeed_if (keyGetNamespace (key) == KEY_NS_USER, "user namespace not KEY_NS_USER");
2181 succeed_if (keyNameIsSystem (keyName(key)) == 0, "user name is not system");
2182 succeed_if (keyIsSystem (key) == 0, "user key is not system");
2183 succeed_if (keyNameIsUser (keyName(key)) == 1, "user name is not user");
2184 succeed_if (keyIsUser (key) == 1, "user key is not user");
2187 key = keyNew ("user/key", KEY_END);
2188 succeed_if (keyNameGetNamespace (keyName(key)) == KEY_NS_USER, "user namespace not KEY_NS_USER");
2189 succeed_if (keyGetNamespace (key) == KEY_NS_USER, "user namespace not KEY_NS_USER");
2190 succeed_if (keyNameIsSystem (keyName(key)) == 0, "user name is not system");
2191 succeed_if (keyIsSystem (key) == 0, "user key is not system");
2192 succeed_if (keyNameIsUser (keyName(key)) == 1, "user name is not user");
2193 succeed_if (keyIsUser (key) == 1, "user key is not user");
2196 key = keyNew ("user:owner/key", KEY_END);
2197 succeed_if (keyNameGetNamespace (keyName(key)) == KEY_NS_USER, "user namespace not KEY_NS_USER");
2198 succeed_if (keyGetNamespace (key) == KEY_NS_USER, "user namespace not KEY_NS_USER");
2199 succeed_if (keyNameIsSystem (keyName(key)) == 0, "user name is not system");
2200 succeed_if (keyIsSystem (key) == 0, "user key is not system");
2201 succeed_if (keyNameIsUser (keyName(key)) == 1, "user name is not user");
2202 succeed_if (keyIsUser (key) == 1, "user key is not user");
2205 key = keyNew ("system", KEY_END);
2206 succeed_if (keyNameGetNamespace (keyName(key)) == KEY_NS_SYSTEM, "system namespace not KEY_NS_SYSTEM");
2207 succeed_if (keyGetNamespace (key) == KEY_NS_SYSTEM, "system namespace not KEY_NS_SYSTEM");
2208 succeed_if (keyNameIsSystem (keyName(key)) == 1, "system name is not system");
2209 succeed_if (keyIsSystem (key) == 1, "system key is not system");
2210 succeed_if (keyNameIsUser (keyName(key)) == 0, "system name is not system");
2211 succeed_if (keyIsUser (key) == 0, "system key is not system");
2214 key = keyNew ("system/key", KEY_END);
2215 succeed_if (keyNameGetNamespace (keyName(key)) == KEY_NS_SYSTEM, "system namespace not KEY_NS_SYSTEM");
2216 succeed_if (keyGetNamespace (key) == KEY_NS_SYSTEM, "system namespace not KEY_NS_SYSTEM");
2217 succeed_if (keyNameIsSystem (keyName(key)) == 1, "system name is not system");
2218 succeed_if (keyIsSystem (key) == 1, "system key is not system");
2219 succeed_if (keyNameIsUser (keyName(key)) == 0, "system name is not system");
2220 succeed_if (keyIsUser (key) == 0, "system key is not system");
2227 printf("KEY STRUCT TESTS\n");
2228 printf("==================\n\n");
2231 test_keyComparing();
2232 test_keyNewSystem();
2234 test_keyReference();
2249 test_keyNamespace();
2251 printf("\ntest_key RESULTS: %d test(s) done. %d error(s).\n", nbTest, nbError);