1f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <string.h> 2f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 3f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include <marisa.h> 4f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 5f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath#include "assert.h" 6f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 7f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestHandle(void) { 8f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_trie *trie = NULL; 9f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 10f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath TEST_START(); 11f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 12f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_init(&trie) == MARISA_OK); 13f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_init(&trie) == MARISA_HANDLE_ERROR); 14f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_end(trie) == MARISA_OK); 15f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_end(NULL) == MARISA_HANDLE_ERROR); 16f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 17f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_build(NULL, NULL, 0, NULL, NULL, NULL, 0) == 18f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath MARISA_HANDLE_ERROR); 19f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 20f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_mmap(NULL, NULL, 0, 0) == MARISA_HANDLE_ERROR); 21f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_map(NULL, NULL, 0) == MARISA_HANDLE_ERROR); 22f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 23f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_load(NULL, NULL, 0, 0) == MARISA_HANDLE_ERROR); 24f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_fread(NULL, NULL) == MARISA_HANDLE_ERROR); 25f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_read(NULL, 0) == MARISA_HANDLE_ERROR); 26f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 27f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_save(NULL, NULL, 0, 0, 0) == MARISA_HANDLE_ERROR); 28f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_fwrite(NULL, NULL) == MARISA_HANDLE_ERROR); 29f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_write(NULL, 0) == MARISA_HANDLE_ERROR); 30f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 31f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_restore(NULL, 0, NULL, 0, NULL) == MARISA_HANDLE_ERROR); 32f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 33f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_lookup(NULL, NULL, 0, NULL) == MARISA_HANDLE_ERROR); 34f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 35f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find(NULL, NULL, 0, NULL, NULL, 0, NULL) == 36f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath MARISA_HANDLE_ERROR); 37f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find_first(NULL, NULL, 0, NULL, NULL) == MARISA_HANDLE_ERROR); 38f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find_last(NULL, NULL, 0, NULL, NULL) == MARISA_HANDLE_ERROR); 39f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find_callback(NULL, NULL, 0, NULL, NULL) == 40f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath MARISA_HANDLE_ERROR); 41f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 42f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_predict(NULL, NULL, 0, NULL, 0, NULL) == MARISA_HANDLE_ERROR); 43f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_predict_breadth_first(NULL, NULL, 0, NULL, 0, NULL) == 44f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath MARISA_HANDLE_ERROR); 45f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_predict_depth_first(NULL, NULL, 0, NULL, 0, NULL) == 46f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath MARISA_HANDLE_ERROR); 47f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_predict_callback(NULL, NULL, 0, NULL, NULL) == 48f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath MARISA_HANDLE_ERROR); 49f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 50f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_tries(NULL) == 0); 51f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_keys(NULL) == 0); 52f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_nodes(NULL) == 0); 53f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_total_size(NULL) == 0); 54f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 55f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_clear(NULL) == MARISA_HANDLE_ERROR); 56f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 57f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath TEST_END(); 58f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath} 59f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 60f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathint callback_for_find(void *num_keys, 61f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_uint32 key_id, size_t key_length) { 62f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(*(size_t *)num_keys == 0); 63f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_id == 1); 64f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_length == 3); 65f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ++*(size_t *)num_keys; 66f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath return 1; 67f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath} 68f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 69f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathint callback_for_predict(void *num_keys, 70f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_uint32 key_id, const char *key, size_t key_length) { 71f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(*(size_t *)num_keys < 2); 72f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath switch (*(size_t *)num_keys) { 73f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath case 0: { 74f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_id == 0); 75f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_length == 3); 76f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(strcmp(key, "app") == 0); 77f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath break; 78f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath } 79f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath case 1: { 80f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_id == 3); 81f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_length == 5); 82f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(strcmp(key, "apple") == 0); 83f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath break; 84f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath } 85f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath } 86f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ++*(size_t *)num_keys; 87f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath return 1; 88f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath} 89f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 90f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathvoid TestTrie() { 91f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_trie *trie = NULL; 92f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath const char *keys[8]; 93f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_uint32 key_ids[8]; 94f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath size_t i; 95f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath char key_buf[16]; 96f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath size_t key_length; 97f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_uint32 key_id; 98f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath marisa_uint32 found_key_ids[8]; 99f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath size_t found_key_lengths[8]; 100f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath size_t num_found_keys; 101f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 102f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath TEST_START(); 103f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 104f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_init(&trie) == MARISA_OK); 105f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 106f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_tries(trie) == 0); 107f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_keys(trie) == 0); 108f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_nodes(trie) == 0); 109f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_total_size(trie) == (sizeof(marisa_uint32) * 23)); 110f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 111f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_build(trie, NULL, 0, NULL, NULL, NULL, 0) == MARISA_OK); 112f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 113f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_tries(trie) == 1); 114f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_keys(trie) == 0); 115f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_nodes(trie) == 1); 116f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 117f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[0] = "apple"; 118f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[1] = "and"; 119f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[2] = "Bad"; 120f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[3] = "apple"; 121f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[4] = "app"; 122f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 123f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_build(trie, keys, 5, NULL, NULL, key_ids, 124f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 1 | MARISA_WITHOUT_TAIL | MARISA_LABEL_ORDER) == MARISA_OK); 125f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 126f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_tries(trie) == 1); 127f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_keys(trie) == 4); 128f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_nodes(trie) == 11); 129f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 130f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[0] == 3); 131f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[1] == 1); 132f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[2] == 0); 133f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[3] == 3); 134f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[4] == 2); 135f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 136f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath for (i = 0; i < marisa_get_num_tries(trie); ++i) { 137f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_restore(trie, 138f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath key_ids[i], key_buf, sizeof(key_buf), &key_length) == MARISA_OK); 139f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_length == strlen(keys[i])); 140f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(strcmp(key_buf, keys[i]) == 0); 141f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 142f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_lookup(trie, 143f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[i], MARISA_ZERO_TERMINATED, &key_id) == MARISA_OK); 144f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_id == key_ids[i]); 145f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 146f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_lookup(trie, 147f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath keys[i], strlen(keys[i]), &key_id) == MARISA_OK); 148f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_id == key_ids[i]); 149f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath } 150f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 151f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_clear(trie) == MARISA_OK); 152f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 153f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_tries(trie) == 0); 154f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_keys(trie) == 0); 155f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_nodes(trie) == 0); 156f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_total_size(trie) == (sizeof(marisa_uint32) * 23)); 157f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 158f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_build(trie, keys, 5, NULL, NULL, key_ids, 159f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 1 | MARISA_WITHOUT_TAIL | MARISA_WEIGHT_ORDER) == MARISA_OK); 160f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 161f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_tries(trie) == 1); 162f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_keys(trie) == 4); 163f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_get_num_nodes(trie) == 11); 164f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 165f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[0] == 3); 166f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[1] == 1); 167f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[2] == 2); 168f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[3] == 3); 169f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(key_ids[4] == 0); 170f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 171f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find(trie, "ap", MARISA_ZERO_TERMINATED, 172f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath found_key_ids, found_key_lengths, 8, &num_found_keys) == MARISA_OK); 173f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(num_found_keys == 0); 174f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 175f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find(trie, "applex", MARISA_ZERO_TERMINATED, 176f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath found_key_ids, found_key_lengths, 8, &num_found_keys) == MARISA_OK); 177f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(num_found_keys == 2); 178f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_ids[0] == key_ids[4]); 179f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_lengths[0] == 3); 180f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_ids[1] == key_ids[0]); 181f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_lengths[1] == 5); 182f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 183f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath num_found_keys = 0; 184f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_find_callback(trie, "anderson", MARISA_ZERO_TERMINATED, 185f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath callback_for_find, &num_found_keys) == MARISA_OK); 186f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(num_found_keys == 1); 187f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 188f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_predict(trie, "a", MARISA_ZERO_TERMINATED, 189f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath found_key_ids, 8, &num_found_keys) == MARISA_OK); 190f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(num_found_keys == 3); 191f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_ids[0] == key_ids[4]); 192f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_ids[1] == key_ids[1]); 193f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(found_key_ids[2] == key_ids[0]); 194f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 195f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath num_found_keys = 0; 196f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_predict_callback(trie, "app", MARISA_ZERO_TERMINATED, 197f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath callback_for_predict, &num_found_keys) == MARISA_OK); 198f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 199f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath ASSERT(marisa_end(trie) == MARISA_OK); 200f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 201f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath TEST_END(); 202f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath} 203f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 204f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamathint main(void) { 205f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath TestHandle(); 206f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath TestTrie(); 207f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath 208f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath return 0; 209f163f6985a63328d07e3de249ad3daf4a0c67d8aNarayan Kamath} 210