22 #include <glib/gstdio.h>
24 #include "../lib/grn-assertions.h"
45 static gchar *tmp_directory;
62 g_free(tmp_directory);
66 remove_tmp_directory(
void)
68 cut_remove_path(tmp_directory, NULL);
74 remove_tmp_directory();
75 g_mkdir_with_parents(tmp_directory, 0700);
84 cut_build_path(tmp_directory,
"table.db", NULL),
108 cut_remove_path(tmp_directory, NULL);
116 gchar value[] =
"sample value";
118 grn_obj *retrieved_record_value;
119 const gchar *dupped_retrieved_record_value;
120 const gchar *value_type_name =
"value_type";
124 value_type_name, strlen(value_type_name),
138 dupped_retrieved_record_value =
141 cut_assert_equal_string(value, dupped_retrieved_record_value);
147 #define ADD_DATA(label, flags) \
148 cut_add_data(label, GINT_TO_POINTER(flags), NULL, NULL)
166 cut_assert_equal_string(NULL,
grn_obj_path(context, table));
172 #define ADD_DATA(label, flags) \
173 cut_add_data(label, GINT_TO_POINTER(flags), NULL, NULL)
196 name_size =
grn_obj_name(context, tokenizer, name,
sizeof(name));
197 name[name_size] =
'\0';
198 cut_assert_equal_string(
"TokenTrigram", name);
204 #define ADD_DATA(label, flags) \
205 cut_add_data(label, GINT_TO_POINTER(flags), NULL, NULL)
238 static GList *make_glist_from_array(
const gint *value, guint length)
242 for (i = 0; i < length; ++
i)
243 list = g_list_prepend(list, GINT_TO_POINTER(value[i]));
245 return g_list_reverse(list);
251 #define ADD_DATUM(label, offset, limit, expected_values, n_expected_values) \
252 gcut_add_datum(label, \
253 "offset", G_TYPE_INT, offset, \
254 "limit", G_TYPE_INT, limit, \
255 "expected_values", G_TYPE_POINTER, \
256 make_glist_from_array(expected_values, n_expected_values),\
260 const gint32 sorted_values[] = {
261 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
264 ADD_DATUM(
"no offset, no limit", 0, -1, &sorted_values[0], 20);
265 ADD_DATUM(
"offset", 10, -1, &sorted_values[10], 10);
266 ADD_DATUM(
"limit", 0, 10, &sorted_values[0], 10);
267 ADD_DATUM(
"offset, limit", 5, 10, &sorted_values[5], 10);
275 const gint32 values[] = {
276 5, 6, 18, 9, 0, 4, 13, 12, 8, 14, 19, 11, 7, 3, 1, 10, 15, 2, 17, 16
278 const int n_values =
sizeof(values) /
sizeof(values[0]);
279 const gchar table_name[] =
"Store";
280 const gchar column_name[] =
"sample_column";
281 const int n_keys = 1;
284 grn_obj *table, *column, *result;
289 guint n_expected_values;
290 GList *expected_values, *sorted_values = NULL;
304 keys[0].
key = column;
307 for(i = 0; i < n_values; ++
i) {
323 gcut_data_get_int(data,
"offset"),
324 gcut_data_get_int(data,
"limit"),
325 result, keys, n_keys);
326 expected_values = (GList *)gcut_data_get_pointer(data,
"expected_values");
327 n_expected_values = g_list_length(expected_values);
328 cut_assert_equal_int(n_expected_values, n_results);
329 cut_assert_equal_int(n_expected_values,
grn_table_size(context, result));
343 sorted_values = g_list_append(sorted_values,
347 gcut_take_list(sorted_values, NULL);
348 gcut_assert_equal_list_int(expected_values, sorted_values);
358 char table_name[] =
"users";
359 char nonexistent_column_name[] =
"nonexistent";
367 nonexistent_column_name,
368 strlen(nonexistent_column_name)));
374 #define ADD_DATUM(label, name) \
375 gcut_add_datum(label, \
376 "name", G_TYPE_STRING, name, \
379 ADD_DATUM(
"start with number",
"0table");
382 #define ADD_DATUM_VALID_CHARACTER(name) \
383 ADD_DATUM(name, name)
389 #undef ADD_DATUM_INVALID_CHARACTER
398 const gchar *table_name;
400 table_name = gcut_data_get_string(data,
"name");
411 #define ADD_DATUM(label, name) \
412 gcut_add_datum(label, \
413 "name", G_TYPE_STRING, name, \
417 ADD_DATUM(
"include a space",
"table name");
420 #define ADD_DATUM_INVALID_CHARACTER(name) \
421 ADD_DATUM(name, name)
453 #undef ADD_DATUM_INVALID_CHARACTER
462 const gchar *table_name;
464 table_name = gcut_data_get_string(data,
"name");
471 cut_take_printf(
"[table][create] name can't start with '_' and "
472 "contains only 0-9, A-Z, a-z, #, @, - or _: <%s>",
480 #define ADD_DATA(label, flags) \
481 gcut_add_datum(label, \
482 "flags", G_TYPE_INT, flags, \
502 flags = gcut_data_get_int(data,
"flags");
511 key_size = strlen(key);
523 cut_assert_true(added);
533 #define ADD_DATA(label, flags) \
534 gcut_add_datum(label, \
535 "flags", G_TYPE_INT, flags, \
549 const gchar *table_name =
"SearchEngines";
553 const gchar *column_name =
"description";
555 const gchar *column_value =
"An open-source fulltext search engine";
560 flags = gcut_data_get_int(data,
"flags");
569 key_size = strlen(key);
573 table_name, strlen(table_name), NULL,
589 record_id =
grn_table_add(context, table, key, key_size, &added);
591 cut_assert_true(added);