22 #include <glib/gstdio.h>
24 #include "../lib/grn-assertions.h"
26 #define DEFAULT_VALUE_SIZE 64
30 static GList *expected_messages;
38 static gchar *sample_key;
39 static const gchar *sample_value;
42 static const gchar *base_dir;
44 static gchar *default_path;
45 static uint32_t default_key_size;
46 static uint32_t default_value_size;
47 static uint32_t default_flags;
50 static gchar *default_cursor_min;
51 static uint32_t default_cursor_min_size;
52 static gchar *default_cursor_max;
53 static uint32_t default_cursor_max_size;
54 static int default_cursor_offset;
55 static int default_cursor_limit;
56 static int default_cursor_flags;
58 static uint32_t default_context_flags;
61 setup_trie_common(
const gchar *default_path_component)
65 expected_messages = NULL;
72 sample_key = g_strdup(
"sample-key");
73 sample_value = cut_take_string(g_strdup(
"patricia trie test"));
77 default_path = g_build_filename(base_dir, default_path_component, NULL);
83 default_cursor_min = NULL;
84 default_cursor_min_size = 0;
85 default_cursor_max = NULL;
86 default_cursor_max_size = 0;
87 default_cursor_offset = 0;
88 default_cursor_limit = -1;
89 default_cursor_flags = 0;
93 cut_remove_path(base_dir, NULL);
94 g_mkdir_with_parents(base_dir, 0755);
98 expected_messages_free(
void)
100 if (expected_messages) {
101 gcut_list_string_free(expected_messages);
102 expected_messages = NULL;
109 if (context && cursor) {
118 if (context && trie) {
136 teardown_trie_common(
void)
138 expected_messages_free();
146 g_free(default_path);
150 cut_remove_path(base_dir, NULL);
156 #define clear_messages() \
157 grn_collect_logger_clear_messages(logger)
160 grn_collect_logger_get_messages(logger)
162 #define open_context() do \
164 context = g_new0(grn_ctx, 1); \
165 grn_test_assert(grn_ctx_init(context, \
166 default_context_flags)); \
167 GRN_CTX_SET_ENCODING(context, default_encoding); \
170 #define cut_assert_open_context() do \
174 cut_assert(context); \
177 #define create_trie() do \
179 GRN_CTX_SET_ENCODING(context, default_encoding); \
180 trie = grn_pat_create(context, default_path, default_key_size, \
181 default_value_size, default_flags); \
184 #define cut_assert_create_trie() do \
186 cut_assert_open_context(); \
189 grn_test_assert_context(context); \
193 #define open_trie() \
194 trie = grn_pat_open(context, default_path)
196 #define cut_assert_open_trie() do \
199 cut_assert_open_context(); \
202 gcut_assert_equal_list_string(NULL, messages()); \
206 #define cut_assert_fail_open_trie() do \
208 cut_assert_open_context(); \
211 cut_assert_null(trie); \
216 #define GRN_TABLE_ADD (0x01<<6)
218 #define lookup(key, key_size, flags) \
219 (((*(flags) & GRN_TABLE_ADD)) \
220 ? grn_pat_add(context, trie, key, key_size, &value, flags) \
221 : grn_pat_get(context, trie, key, key_size, &value))
223 #define cut_assert_lookup(key, key_size, flags) do \
225 grn_test_assert_not_nil((id = lookup(key, key_size, (flags))), \
226 cut_message("flags: <%d>", *(flags))); \
229 #define cut_assert_lookup_failed(key, key_size, flags) do \
231 grn_test_assert_nil(lookup(key, key_size, (flags)), \
232 cut_message("flags: <%d>", *(flags))); \
235 #define cut_assert_lookup_add(key) do \
239 grn_search_flags flags; \
244 key_size = strlen(_key); \
250 cut_assert_lookup_failed(_key, key_size, &flags); \
252 flags = GRN_TABLE_ADD; \
253 cut_assert_lookup(_key, key_size, &flags); \
254 cut_assert_equal_int(1, flags & 1); \
256 if (sample_value) { \
257 strcpy(value, sample_value); \
262 cut_assert_lookup(_key, key_size, &flags); \
263 cut_assert_equal_int(found_id, id); \
264 if (sample_value) { \
265 cut_assert_equal_string(sample_value, value); \
269 flags = GRN_TABLE_ADD; \
270 cut_assert_lookup(_key, key_size, &flags); \
271 cut_assert_equal_uint(0, flags & 1); \
272 cut_assert_equal_uint(found_id, id); \
273 if (sample_value) { \
274 cut_assert_equal_string(sample_value, value); \
278 #define put_sample_entry() do \
280 cut_assert_lookup_add(sample_key); \
284 #define open_cursor() \
285 cursor = grn_pat_cursor_open(context, trie, \
286 default_cursor_min, \
287 default_cursor_min_size, \
288 default_cursor_max, \
289 default_cursor_max_size, \
290 default_cursor_offset, \
291 default_cursor_limit, \
292 default_cursor_flags)
294 #define cut_assert_open_cursor() do \
299 cut_assert_equal_g_list_string(NULL, messages()); \
300 cut_assert(cursor); \
317 trie_test_data_newv(
const gchar *key,
318 const gchar *search_key,
319 const gchar *expected_key,
321 GList *expected_strings,
329 test_data->
key = g_strdup(key);
336 while (set_parameters) {
342 set_parameters = NULL;
352 g_free(test_data->
key);