1b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak#include <string.h> 2b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 3b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak#include <marisa_alpha.h> 4b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 5b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak#include "assert.h" 6b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 7b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniakvoid TestHandle(void) { 8b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_trie *trie = NULL; 9b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 10b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak TEST_START(); 11b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 12b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_init(&trie) == MARISA_ALPHA_OK); 13b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_init(&trie) == MARISA_ALPHA_HANDLE_ERROR); 14b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_end(trie) == MARISA_ALPHA_OK); 15b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_end(NULL) == MARISA_ALPHA_HANDLE_ERROR); 16b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 17b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_build(NULL, NULL, 0, NULL, NULL, NULL, 0) == 18b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 19b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 20b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_mmap(NULL, NULL, 0, 0) == MARISA_ALPHA_HANDLE_ERROR); 21b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_map(NULL, NULL, 0) == MARISA_ALPHA_HANDLE_ERROR); 22b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 23b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_load(NULL, NULL, 0, 0) == MARISA_ALPHA_HANDLE_ERROR); 24b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_fread(NULL, NULL) == MARISA_ALPHA_HANDLE_ERROR); 25b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_read(NULL, 0) == MARISA_ALPHA_HANDLE_ERROR); 26b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 27b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_save(NULL, NULL, 0, 0, 0) == MARISA_ALPHA_HANDLE_ERROR); 28b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_fwrite(NULL, NULL) == MARISA_ALPHA_HANDLE_ERROR); 29b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_write(NULL, 0) == MARISA_ALPHA_HANDLE_ERROR); 30b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 31b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_restore(NULL, 0, NULL, 0, NULL) == 32b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 33b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 34b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_lookup(NULL, NULL, 0, NULL) == 35b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 36b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 37b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find(NULL, NULL, 0, NULL, NULL, 0, NULL) == 38b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 39b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find_first(NULL, NULL, 0, NULL, NULL) == 40b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 41b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find_last(NULL, NULL, 0, NULL, NULL) == 42b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 43b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find_callback(NULL, NULL, 0, NULL, NULL) == 44b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 45b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 46b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_predict(NULL, NULL, 0, NULL, 0, NULL) == 47b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 48b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_predict_breadth_first(NULL, NULL, 0, NULL, 0, NULL) == 49b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 50b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_predict_depth_first(NULL, NULL, 0, NULL, 0, NULL) == 51b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 52b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_predict_callback(NULL, NULL, 0, NULL, NULL) == 53b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_HANDLE_ERROR); 54b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 55b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_tries(NULL) == 0); 56b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_keys(NULL) == 0); 57b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_nodes(NULL) == 0); 58b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_total_size(NULL) == 0); 59b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 60b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_clear(NULL) == MARISA_ALPHA_HANDLE_ERROR); 61b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 62b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak TEST_END(); 63b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak} 64b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 65b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniakint callback_for_find(void *num_keys, 66b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_uint32 key_id, size_t key_length) { 67b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(*(size_t *)num_keys == 0); 68b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_id == 1); 69b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_length == 3); 70b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ++*(size_t *)num_keys; 71b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak return 1; 72b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak} 73b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 74b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniakint callback_for_predict(void *num_keys, 75b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_uint32 key_id, const char *key, size_t key_length) { 76b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(*(size_t *)num_keys < 2); 77b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak switch (*(size_t *)num_keys) { 78b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak case 0: { 79b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_id == 0); 80b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_length == 3); 81b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(strcmp(key, "app") == 0); 82b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak break; 83b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak } 84b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak case 1: { 85b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_id == 3); 86b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_length == 5); 87b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(strcmp(key, "apple") == 0); 88b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak break; 89b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak } 90b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak } 91b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ++*(size_t *)num_keys; 92b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak return 1; 93b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak} 94b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 95b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniakvoid TestTrie() { 96b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_trie *trie = NULL; 97b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak const char *keys[8]; 98b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_uint32 key_ids[8]; 99b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak size_t i; 100b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak char key_buf[16]; 101b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak size_t key_length; 102b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_uint32 key_id; 103b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak marisa_alpha_uint32 found_key_ids[8]; 104b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak size_t found_key_lengths[8]; 105b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak size_t num_found_keys; 106b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 107b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak TEST_START(); 108b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 109b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_init(&trie) == MARISA_ALPHA_OK); 110b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 111b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_tries(trie) == 0); 112b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_keys(trie) == 0); 113b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_nodes(trie) == 0); 114b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_total_size(trie) == 115b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak (sizeof(marisa_alpha_uint32) * 23)); 116b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 117b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_build(trie, NULL, 0, NULL, NULL, NULL, 0) == 118b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_OK); 119b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 120b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_tries(trie) == 1); 121b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_keys(trie) == 0); 122b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_nodes(trie) == 1); 123b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 124b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[0] = "apple"; 125b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[1] = "and"; 126b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[2] = "Bad"; 127b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[3] = "apple"; 128b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[4] = "app"; 129b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 130b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_build(trie, keys, 5, NULL, NULL, key_ids, 131b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 1 | MARISA_ALPHA_WITHOUT_TAIL | MARISA_ALPHA_LABEL_ORDER) == 132b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_OK); 133b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 134b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_tries(trie) == 1); 135b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_keys(trie) == 4); 136b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_nodes(trie) == 11); 137b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 138b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[0] == 3); 139b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[1] == 1); 140b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[2] == 0); 141b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[3] == 3); 142b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[4] == 2); 143b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 144b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak for (i = 0; i < marisa_alpha_get_num_tries(trie); ++i) { 145b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_restore(trie, 146b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak key_ids[i], key_buf, sizeof(key_buf), &key_length) == MARISA_ALPHA_OK); 147b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_length == strlen(keys[i])); 148b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(strcmp(key_buf, keys[i]) == 0); 149b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 150b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_lookup(trie, 151b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[i], MARISA_ALPHA_ZERO_TERMINATED, &key_id) == MARISA_ALPHA_OK); 152b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_id == key_ids[i]); 153b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 154b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_lookup(trie, 155b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak keys[i], strlen(keys[i]), &key_id) == MARISA_ALPHA_OK); 156b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_id == key_ids[i]); 157b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak } 158b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 159b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_clear(trie) == MARISA_ALPHA_OK); 160b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 161b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_tries(trie) == 0); 162b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_keys(trie) == 0); 163b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_nodes(trie) == 0); 164b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_total_size(trie) == 165b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak (sizeof(marisa_alpha_uint32) * 23)); 166b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 167b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_build(trie, keys, 5, NULL, NULL, key_ids, 168b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 1 | MARISA_ALPHA_WITHOUT_TAIL | MARISA_ALPHA_WEIGHT_ORDER) == 169b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_OK); 170b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 171b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_tries(trie) == 1); 172b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_keys(trie) == 4); 173b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_get_num_nodes(trie) == 11); 174b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 175b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[0] == 3); 176b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[1] == 1); 177b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[2] == 2); 178b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[3] == 3); 179b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(key_ids[4] == 0); 180b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 181b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find(trie, "ap", MARISA_ALPHA_ZERO_TERMINATED, 182b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak found_key_ids, found_key_lengths, 8, &num_found_keys) == 183b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_OK); 184b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(num_found_keys == 0); 185b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 186b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find(trie, "applex", MARISA_ALPHA_ZERO_TERMINATED, 187b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak found_key_ids, found_key_lengths, 8, &num_found_keys) == 188b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_OK); 189b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(num_found_keys == 2); 190b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_ids[0] == key_ids[4]); 191b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_lengths[0] == 3); 192b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_ids[1] == key_ids[0]); 193b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_lengths[1] == 5); 194b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 195b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak num_found_keys = 0; 196b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_find_callback(trie, "anderson", 197b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_ZERO_TERMINATED, 198b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak callback_for_find, &num_found_keys) == MARISA_ALPHA_OK); 199b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(num_found_keys == 1); 200b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 201b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_predict(trie, "a", MARISA_ALPHA_ZERO_TERMINATED, 202b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak found_key_ids, 8, &num_found_keys) == MARISA_ALPHA_OK); 203b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(num_found_keys == 3); 204b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_ids[0] == key_ids[4]); 205b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_ids[1] == key_ids[1]); 206b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(found_key_ids[2] == key_ids[0]); 207b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 208b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak num_found_keys = 0; 209b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_predict_callback(trie, "app", 210b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak MARISA_ALPHA_ZERO_TERMINATED, 211b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak callback_for_predict, &num_found_keys) == MARISA_ALPHA_OK); 212b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 213b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak ASSERT(marisa_alpha_end(trie) == MARISA_ALPHA_OK); 214b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 215b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak TEST_END(); 216b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak} 217b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 218b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniakint main(void) { 219b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak TestHandle(); 220b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak TestTrie(); 221b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak 222b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak return 0; 223b4acd09676fe12e9d95b2a5f3f742e9a1a0483b1Przemyslaw Szczepaniak} 224