20 #include <glib/gstdio.h>
22 #include "../lib/grn-assertions.h"
27 #define get(name) grn_ctx_get(context, name, strlen(name))
72 static gchar *tmp_directory;
80 static grn_obj *int8, *int16, *int32, *int64;
81 static grn_obj *uint8, *uint16, *uint32, *uint64;
86 static grn_obj *geo_point_tokyo, *geo_point_wgs84;
104 g_free(tmp_directory);
108 remove_tmp_directory(
void)
110 cut_remove_path(tmp_directory, NULL);
117 int8 = int16 = int32 = int64 = NULL;
118 uint8 = uint16 = uint32 = uint64 = NULL;
123 geo_point_tokyo = geo_point_wgs84 = NULL;
134 const gchar *database_path;
139 remove_tmp_directory();
140 g_mkdir_with_parents(tmp_directory, 0700);
145 database_path = cut_build_path(tmp_directory,
"database.groonga", NULL);
150 teardown_values(
void)
185 remove_tmp_directory();
189 inspected_string (
void)
191 return cut_take_printf(
"%.*s",
200 cut_assert_equal_string(
"(NULL)", inspected_string());
208 inspected =
grn_inspect(context, NULL, void_value);
209 cut_assert_equal_string(
"\"void\"", inspected_string());
218 cut_assert_equal_string(cut_take_printf(
"%d", G_MAXINT8),
228 cut_assert_equal_string(cut_take_printf(
"%" G_GINT16_FORMAT, G_MAXINT16),
238 cut_assert_equal_string(cut_take_printf(
"%" G_GINT32_FORMAT, G_MAXINT32),
248 cut_assert_equal_string(cut_take_printf(
"%" G_GINT64_FORMAT, G_MAXINT64),
258 cut_assert_equal_string(cut_take_printf(
"%u", G_MAXUINT8),
268 cut_assert_equal_string(cut_take_printf(
"%" G_GUINT16_FORMAT, G_MAXUINT16),
278 cut_assert_equal_string(cut_take_printf(
"%" G_GUINT32_FORMAT, G_MAXUINT32),
288 cut_assert_equal_string(cut_take_printf(
"%" G_GUINT64_FORMAT, G_MAXUINT64),
297 inspected =
grn_inspect(context, NULL, float_value);
298 cut_assert_equal_string(
"0.29", inspected_string());
304 GTimeVal g_time_value;
306 g_time_val_from_iso8601(
"2010-05-31T11:50:29.29+0900", &g_time_value);
309 (gint64)g_time_value.tv_sec * G_USEC_PER_SEC +
310 g_time_value.tv_usec);
311 inspected =
grn_inspect(context, NULL, time_value);
312 cut_assert_equal_string(cut_take_printf(
"%ld.29", g_time_value.tv_sec),
321 inspected =
grn_inspect(context, NULL, bool_value);
322 cut_assert_equal_string(
"true", inspected_string());
330 inspected =
grn_inspect(context, NULL, bool_value);
331 cut_assert_equal_string(
"false", inspected_string());
340 cut_assert_equal_string(
"\"niku\"", inspected_string());
346 gint takane_latitude, takane_longitude;
353 inspected =
grn_inspect(context, NULL, geo_point_tokyo);
354 cut_assert_equal_string(
"[(128503649,502431146) "
355 "((35, 41, 43, 649),(139, 33, 51, 146)) "
356 "[00000001 01111011 11011101 10000100 "
357 "10110101 11111011 01101100 01000110]]",
364 gint takane_latitude, takane_longitude;
371 inspected =
grn_inspect(context, NULL, geo_point_wgs84);
372 cut_assert_equal_string(
"[(128515284,502419564) "
373 "((35, 41, 55, 284),(139, 33, 39, 564)) "
374 "[00000001 01111011 11011101 10000100 "
375 "10111011 10100000 10110110 01110000]]",
383 inspected =
grn_inspect(context, NULL,
get(
"Sites"));
384 cut_assert_equal_string(
"#<table:no_key "
401 "'[[\"name\"],[\"groonga.org\"],[\"razil.jp\"]]' "
403 inspected =
grn_inspect(context, NULL,
get(
"Sites"));
404 cut_assert_equal_string(
"#<table:no_key "
419 inspected =
grn_inspect(context, NULL,
get(
"Sites"));
420 cut_assert_equal_string(
"#<table:hash "
426 "default_tokenizer:(nil) "
441 "[\"_key\",\"name\"],"
442 "[\"groonga.org\",\"groonga\"],"
443 "[\"razil.jp\",\"Brazil\"]"
446 inspected =
grn_inspect(context, NULL,
get(
"Sites"));
447 cut_assert_equal_string(
"#<table:hash "
453 "default_tokenizer:(nil) "
455 "keys:[\"groonga.org\", \"razil.jp\"] "
465 inspected =
grn_inspect(context, NULL,
get(
"Sites"));
466 cut_assert_equal_string(
"#<table:pat "
472 "default_tokenizer:(nil) "
488 "[\"_key\",\"name\"],"
489 "[\"groonga.org\",\"groonga\"],"
490 "[\"razil.jp\",\"Brazil\"]"
493 inspected =
grn_inspect(context, NULL,
get(
"Sites"));
494 cut_assert_equal_string(
501 "default_tokenizer:(nil) "
503 "keys:[\"groonga.org\", \"razil.jp\"] "
506 "2(\"razil.jp\"){0,3,0}[01110010 01100001 01111010 01101001 "
507 "01101100 00101110 01101010 01110000]\n"
508 " L:1(\"groonga.org\"){10,7,0}[01100111 01110010 01101111 01101111 "
509 "01101110 01100111 01100001 00101110 "
510 "01101111 01110010 01100111]\n"
528 cut_assert_equal_string(
"#<cursor:pat:Sites "
531 "flags:ascending|greater|less "
545 "[\"_key\",\"name\"],"
546 "[\"groonga.org\",\"groonga\"],"
547 "[\"razil.jp\",\"Brazil\"]"
555 cut_assert_equal_string(
"#<cursor:pat:Sites "
558 "flags:ascending|greater|less "
560 "entries:[[2,{0,3,0}], [1,{0,3,0}]]"
572 cut_assert_equal_string(
"[]", inspected_string());
580 "'[[\"_key\"],[\"groonga.org\"],[\"razil.jp\"]]' "
587 cut_assert_equal_string(
"["
588 "#<record:pat:Sites id:1 key:\"groonga.org\">, "
589 "#<record:pat:Sites id:2 key:\"razil.jp\">"
601 cut_assert_equal_string(
"[true,false]", inspected_string());
609 cut_assert_equal_string(
"[]", inspected_string());
627 cut_assert_equal_string(
"[\"groonga\",\"razil\"]", inspected_string());
635 cut_assert_equal_string(
"[]", inspected_string());
641 #define ADD_DATUM(table, accessor) \
642 gcut_add_datum(table "." accessor, \
643 "table", G_TYPE_STRING, table, \
644 "accessor", G_TYPE_STRING, accessor, \
663 const char *table_name = gcut_data_get_string(data,
"table");
664 const char *accessor_name = gcut_data_get_string(data,
"accessor");
674 accessor_name, strlen(accessor_name));
676 cut_assert_not_null(accessor);
679 cut_assert_equal_string(accessor_name, inspected_string());
685 #define ADD_DATUM(accessor) \
686 gcut_add_datum(accessor, \
687 "accessor", G_TYPE_STRING, accessor, \
698 const char *query, *accessor_name;
699 grn_obj *table, *result, *expression, *variable, *accessor;
705 "[\"_key\",\"uri\"],"
706 "[\"groonga\",\"http://groonga.org/\"]"
710 accessor_name = gcut_data_get_string(data,
"accessor");
714 query =
"_key:groonga";
716 query, strlen(query),
721 accessor_name, strlen(accessor_name));
722 cut_assert_not_null(accessor);
725 cut_assert_equal_string(accessor_name, inspected_string());
738 cut_assert_equal_string(
"#<column:fix_size "
757 cut_assert_equal_string(
"#<column:var_size "
777 cut_assert_equal_string(
"#<column:index "
793 cut_assert_equal_string(
"#<type "
808 "[\"_key\",\"name\"],"
809 "[\"groonga.org\",\"groonga\"],"
810 "[\"razil.jp\",\"Brazil\"]"
818 cut_assert_equal_string(
"#<record:hash:Sites "
820 "key:\"groonga.org\" "
833 cut_assert_equal_string(
"#<proc:command "
835 "arguments:[table, name]"
847 cut_assert_equal_string(
"#<proc:function "