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 <string.h> 28#include <assert.h> 29 30#include "domain.h" 31#include "malloc.h" 32 33int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char *argv[]) { 34 char *s; 35 char t[256], r[256]; 36 const char *p; 37 size_t size; 38 char name[64], type[AVAHI_DOMAIN_NAME_MAX], domain[AVAHI_DOMAIN_NAME_MAX]; 39 40 printf("%s\n", s = avahi_normalize_name_strdup("foo.foo\\046.")); 41 avahi_free(s); 42 43 printf("%s\n", s = avahi_normalize_name_strdup("foo.foo\\.foo.")); 44 avahi_free(s); 45 46 47 printf("%s\n", s = avahi_normalize_name_strdup("fo\\\\o\\..f oo.")); 48 avahi_free(s); 49 50 printf("%i\n", avahi_domain_equal("\\065aa bbb\\.\\046cc.cc\\\\.dee.fff.", "Aaa BBB\\.\\.cc.cc\\\\.dee.fff")); 51 printf("%i\n", avahi_domain_equal("A", "a")); 52 53 printf("%i\n", avahi_domain_equal("a", "aaa")); 54 55 printf("%u = %u\n", avahi_domain_hash("ccc\\065aa.aa\\.b\\\\."), avahi_domain_hash("cccAaa.aa\\.b\\\\")); 56 57 58 avahi_service_name_join(t, sizeof(t), "foo.foo.foo \\.", "_http._tcp", "test.local"); 59 printf("<%s>\n", t); 60 61 avahi_service_name_split(t, name, sizeof(name), type, sizeof(type), domain, sizeof(domain)); 62 printf("name: <%s>; type: <%s>; domain <%s>\n", name, type, domain); 63 64 avahi_service_name_join(t, sizeof(t), NULL, "_http._tcp", "one.two\\. .local"); 65 printf("<%s>\n", t); 66 67 avahi_service_name_split(t, NULL, 0, type, sizeof(type), domain, sizeof(domain)); 68 printf("name: <>; type: <%s>; domain <%s>\n", type, domain); 69 70 71 p = "--:---\\\\\\123\\065_���\\064\\.\\\\sj��dfhh.sdfjhskjdf"; 72 printf("unescaped: <%s>, rest: %s\n", avahi_unescape_label(&p, t, sizeof(t)), p); 73 74 size = sizeof(r); 75 s = r; 76 77 printf("escaped: <%s>\n", avahi_escape_label(t, strlen(t), &s, &size)); 78 79 p = r; 80 printf("unescaped: <%s>\n", avahi_unescape_label(&p, t, sizeof(t))); 81 82 assert(avahi_is_valid_service_type_generic("_foo._bar._waldo")); 83 assert(!avahi_is_valid_service_type_strict("_foo._bar._waldo")); 84 assert(!avahi_is_valid_service_subtype("_foo._bar._waldo")); 85 86 assert(avahi_is_valid_service_type_generic("_foo._tcp")); 87 assert(avahi_is_valid_service_type_strict("_foo._tcp")); 88 assert(!avahi_is_valid_service_subtype("_foo._tcp")); 89 90 assert(!avahi_is_valid_service_type_generic("_foo._bar.waldo")); 91 assert(!avahi_is_valid_service_type_strict("_foo._bar.waldo")); 92 assert(!avahi_is_valid_service_subtype("_foo._bar.waldo")); 93 94 assert(!avahi_is_valid_service_type_generic("")); 95 assert(!avahi_is_valid_service_type_strict("")); 96 assert(!avahi_is_valid_service_subtype("")); 97 98 assert(avahi_is_valid_service_type_generic("_foo._sub._bar._tcp")); 99 assert(!avahi_is_valid_service_type_strict("_foo._sub._bar._tcp")); 100 assert(avahi_is_valid_service_subtype("_foo._sub._bar._tcp")); 101 102 printf("%s\n", avahi_get_type_from_subtype("_foo._sub._bar._tcp")); 103 104 assert(!avahi_is_valid_host_name("sf.ooo.")); 105 assert(avahi_is_valid_host_name("sfooo.")); 106 assert(avahi_is_valid_host_name("sfooo")); 107 108 assert(avahi_is_valid_domain_name(".")); 109 assert(avahi_is_valid_domain_name("")); 110 111 assert(avahi_normalize_name(".", t, sizeof(t))); 112 assert(avahi_normalize_name("", t, sizeof(t))); 113 114 assert(!avahi_is_valid_fqdn(".")); 115 assert(!avahi_is_valid_fqdn("")); 116 assert(!avahi_is_valid_fqdn("foo")); 117 assert(avahi_is_valid_fqdn("foo.bar")); 118 assert(avahi_is_valid_fqdn("foo.bar.")); 119 assert(avahi_is_valid_fqdn("gnurz.foo.bar.")); 120 assert(!avahi_is_valid_fqdn("192.168.50.1")); 121 assert(!avahi_is_valid_fqdn("::1")); 122 assert(!avahi_is_valid_fqdn(".192.168.50.1.")); 123 124 return 0; 125} 126