toys

toys.git
git clone git://git.lenczewski.org/toys.git
Log | Files | Refs | README | LICENSE

trie.c (1775B)


      1 #define HEADER_IMPL
      2 #include "trie.h"
      3 
      4 int
      5 main(void)
      6 {
      7 	char buf[8192];
      8 	struct arena arena = { .ptr = buf, .cap = sizeof buf, .len = 0, };
      9 
     10 	printf("trie_init()\n");
     11 	struct trie_node *root = trie_init(&arena);
     12 	assert(root);
     13 	trie_display(root, 0);
     14 
     15 	printf("trie_insert(\"foo\")\n");
     16 	struct trie_node *foo = trie_insert(&arena, root, "foo", 3);
     17 	trie_display(root, 0);
     18 
     19 	printf("trie_insert(\"for\")\n");
     20 	struct trie_node *_for = trie_insert(&arena, root, "for", 3);
     21 	trie_display(root, 0);
     22 
     23 	printf("trie_insert(\"foobar\")\n");
     24 	struct trie_node *foobar = trie_insert(&arena, root, "foobar", 6);
     25 	trie_display(root, 0);
     26 
     27 	printf("trie_insert(\"bar\")\n");
     28 	struct trie_node *bar = trie_insert(&arena, root, "bar", 3);
     29 	trie_display(root, 0);
     30 
     31 	printf("trie_insert(\"forsen\")\n");
     32 	struct trie_node *forsen = trie_insert(&arena, root, "forsen", 6);
     33 	trie_display(root, 0);
     34 
     35 	printf("trie_insert(\"forseen\")\n");
     36 	struct trie_node *forseen = trie_insert(&arena, root, "forseen", 7);
     37 	trie_display(root, 0);
     38 
     39 	printf("trie_insert(\"forsee\")\n");
     40 	struct trie_node *forsee = trie_insert(&arena, root, "forsee", 6);
     41 	trie_display(root, 0);
     42 
     43 	struct trie_node const *search_result;
     44 
     45 	printf("trie_search(\"foo\")\n");
     46 	search_result = trie_search(root, "foo", 3);
     47 	assert(search_result == foo);
     48 
     49 	printf("trie_search(\"bar\")\n");
     50 	search_result = trie_search(root, "bar", 3);
     51 	assert(search_result == bar);
     52 
     53 	printf("trie_search(\"baz\")\n");
     54 	search_result = trie_search(root, "baz", 3);
     55 	assert(!search_result);
     56 
     57 	printf("trie_search(\"forsee\")\n");
     58 	search_result = trie_search(root, "forsee", 6);
     59 	assert(search_result == forsee);
     60 
     61 	printf("arena stats: %zu/%zu bytes used, %zu nodes allocated\n",
     62 			arena.len, arena.cap, arena.len / sizeof *root);
     63 
     64 	return 0;
     65 }