1/* $Id$ */ 2 3/*** 4 This file is part of avahi. 5 6 avahi is free software; you can redistribute it and/or modify it 7 under the terms of the GNU Lesser General Public License as 8 published by the Free Software Foundation; either version 2.1 of the 9 License, or (at your option) any later version. 10 11 avahi is distributed in the hope that it will be useful, but WITHOUT 12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General 14 Public License for more details. 15 16 You should have received a copy of the GNU Lesser General Public 17 License along with avahi; if not, write to the Free Software 18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 19 USA. 20***/ 21 22#ifdef HAVE_CONFIG_H 23#include <config.h> 24#endif 25 26#include <stdio.h> 27#include <assert.h> 28 29#include "strlst.h" 30#include "malloc.h" 31 32int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char *argv[]) { 33 char *t, *v; 34 uint8_t data[1024]; 35 AvahiStringList *a = NULL, *b, *p; 36 size_t size, n; 37 int r; 38 39 a = avahi_string_list_new("prefix", "a", "b", NULL); 40 41 a = avahi_string_list_add(a, "start"); 42 a = avahi_string_list_add(a, "foo=99"); 43 a = avahi_string_list_add(a, "bar"); 44 a = avahi_string_list_add(a, ""); 45 a = avahi_string_list_add(a, ""); 46 a = avahi_string_list_add(a, "quux"); 47 a = avahi_string_list_add(a, ""); 48 a = avahi_string_list_add_arbitrary(a, (const uint8_t*) "null\0null", 9); 49 a = avahi_string_list_add_printf(a, "seven=%i %c", 7, 'x'); 50 a = avahi_string_list_add_pair(a, "blubb", "blaa"); 51 a = avahi_string_list_add_pair(a, "uxknurz", NULL); 52 a = avahi_string_list_add_pair_arbitrary(a, "uxknurz2", (const uint8_t*) "blafasel\0oerks", 14); 53 54 a = avahi_string_list_add(a, "end"); 55 56 t = avahi_string_list_to_string(a); 57 printf("--%s--\n", t); 58 avahi_free(t); 59 60 n = avahi_string_list_serialize(a, NULL, 0); 61 size = avahi_string_list_serialize(a, data, sizeof(data)); 62 assert(size == n); 63 64 printf("%u\n", size); 65 66 for (t = (char*) data, n = 0; n < size; n++, t++) { 67 if (*t <= 32) 68 printf("(%u)", *t); 69 else 70 printf("%c", *t); 71 } 72 73 printf("\n"); 74 75 assert(avahi_string_list_parse(data, size, &b) == 0); 76 77 printf("equal: %i\n", avahi_string_list_equal(a, b)); 78 79 t = avahi_string_list_to_string(b); 80 printf("--%s--\n", t); 81 avahi_free(t); 82 83 avahi_string_list_free(b); 84 85 b = avahi_string_list_copy(a); 86 87 assert(avahi_string_list_equal(a, b)); 88 89 t = avahi_string_list_to_string(b); 90 printf("--%s--\n", t); 91 avahi_free(t); 92 93 p = avahi_string_list_find(a, "seven"); 94 assert(p); 95 96 r = avahi_string_list_get_pair(p, &t, &v, NULL); 97 assert(r >= 0); 98 assert(t); 99 assert(v); 100 101 printf("<%s>=<%s>\n", t, v); 102 avahi_free(t); 103 avahi_free(v); 104 105 p = avahi_string_list_find(a, "quux"); 106 assert(p); 107 108 r = avahi_string_list_get_pair(p, &t, &v, NULL); 109 assert(r >= 0); 110 assert(t); 111 assert(!v); 112 113 printf("<%s>=<%s>\n", t, v); 114 avahi_free(t); 115 avahi_free(v); 116 117 avahi_string_list_free(a); 118 avahi_string_list_free(b); 119 120 n = avahi_string_list_serialize(NULL, NULL, 0); 121 size = avahi_string_list_serialize(NULL, data, sizeof(data)); 122 assert(size == 1); 123 assert(size == n); 124 125 assert(avahi_string_list_parse(data, size, &a) == 0); 126 assert(!a); 127 128 return 0; 129} 130