void test_temporary_failed_recipients (void) { gcut_assert_equal_list_string( NULL, milter_message_result_get_temporary_failed_recipients(result)); milter_message_result_add_temporary_failed_recipient( result, "*****@*****.**"); milter_message_result_add_temporary_failed_recipient( result, "*****@*****.**"); milter_message_result_add_temporary_failed_recipient( result, "*****@*****.**"); gcut_assert_equal_list_string( gcut_take_new_list_string("*****@*****.**", "*****@*****.**", "*****@*****.**", NULL), milter_message_result_get_temporary_failed_recipients(result)); milter_message_result_set_temporary_failed_recipients( result, gcut_take_new_list_string("*****@*****.**", "*****@*****.**", NULL)); gcut_assert_equal_list_string( gcut_take_new_list_string("*****@*****.**", "*****@*****.**", NULL), milter_message_result_get_temporary_failed_recipients(result)); }
void milter_assert_equal_header_helper (MilterHeader *expected, MilterHeader *actual, const gchar *expression_expected, const gchar *expression_actual) { gcut_assert_equal_list_string( gcut_take_new_list_string(expected->name, expected->value, NULL), gcut_take_new_list_string(actual->name, actual->value, NULL)); }
void test_equal_indexed(void) { grn_obj *v; prepare_data(); cut_assert_not_null((cond = grn_expr_create(&context, NULL, 0))); v = grn_expr_add_var(&context, cond, NULL, 0); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); grn_expr_append_obj(&context, cond, v, GRN_OP_PUSH, 1); GRN_TEXT_SETS(&context, &text_buf, "body"); grn_expr_append_const(&context, cond, &text_buf, GRN_OP_GET_VALUE, 1); GRN_TEXT_SETS(&context, &text_buf, "hoge"); grn_expr_append_const(&context, cond, &text_buf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, cond, GRN_OP_EQUAL, 2); grn_expr_compile(&context, cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null(grn_table_select(&context, docs, cond, res, GRN_OP_OR)); grn_test_assert_select(&context, gcut_take_new_list_string("hoge", NULL), res, "body"); }
void test_prefix_error(gpointer data) { const gchar *min = "ab"; int offset, limit; create_short_text_table(gcut_take_new_list_string("abra", "abracada", "abracadabra", "abubu", "あ", "ああ", "あああ", "い", NULL)); offset = gcut_data_get_int(data, "offset"); limit = gcut_data_get_int(data, "limit"); cursor = grn_table_cursor_open(context, table, min, strlen(min), NULL, 0, offset, limit, GRN_CURSOR_PREFIX); grn_test_assert_error(gcut_data_get_uint(data, "rc"), gcut_data_get_string(data, "message"), context); }
void test_japanese_parenthesis(void) { cut_assert_not_null(grn_table_select(context, comments, query("content:@)は"), result, GRN_OP_OR)); grn_test_assert_select(context, gcut_take_new_list_string("ボロ", NULL), result, "_key"); }
void test_set_value(void) { grn_obj *v; prepare_data(); GRN_EXPR_CREATE_FOR_QUERY(&context, docs, cond, v); cut_assert_not_null(cond); cut_assert_not_null(v); PARSE(cond, "size:14", GRN_EXPR_SYNTAX_QUERY|GRN_EXPR_ALLOW_PRAGMA|GRN_EXPR_ALLOW_COLUMN); res = grn_table_select(&context, docs, cond, NULL, GRN_OP_OR); cut_assert_not_null(res); grn_test_assert_select(&context, gcut_take_new_list_string("moge moge moge", "hoge fuga fuga", "moge hoge hoge", NULL), res, "body"); grn_test_assert(grn_obj_close(&context, res)); res = NULL; GRN_EXPR_CREATE_FOR_QUERY(&context, docs, expr, v); grn_expr_append_obj(&context, expr, v, GRN_OP_PUSH, 1); GRN_TEXT_SETS(&context, &textbuf, "size"); grn_expr_append_const(&context, expr, &textbuf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, expr, GRN_OP_GET_VALUE, 2); GRN_UINT32_SET(&context, &intbuf, 14); grn_expr_append_const(&context, expr, &intbuf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, expr, GRN_OP_ASSIGN, 2); { grn_id id; grn_table_cursor *tc; tc = grn_table_cursor_open(&context, docs, NULL, 0, NULL, 0, 0, -1, 0); cut_assert_not_null(tc); while ((id = grn_table_cursor_next(&context, tc))) { GRN_RECORD_SET(&context, v, id); grn_expr_exec(&context, expr, 0); } grn_test_assert(grn_table_cursor_close(&context, tc)); } res = grn_table_select(&context, docs, cond, NULL, GRN_OP_OR); cut_assert_not_null(res); grn_test_assert_select_all(res); }
void test_select(void) { grn_test_assert(grn_geo_select_in_rectangle(context, location_index, nerima_wgs84, tokyo_wgs84, result, GRN_OP_OR)); gcut_assert_equal_list_string( gcut_take_new_list_string("soba-taiyaki-ku", "sazare", "hirose-ya", "taiyaki-kataoka", "kuruma", "nezu-no-taiyaki", NULL), result_to_list()); }
static const GList * headers_to_list (MilterHeaders *headers) { guint i; GList *list = NULL; for (i = 0; i < milter_headers_length(headers); i++) { MilterHeader *header; const GList *header_list; header = milter_headers_get_nth_header(headers, i + 1); header_list = gcut_take_new_list_string(header->name, header->value, NULL); list = g_list_append(list, (GList *)header_list); } return gcut_take_list(list, NULL); }
void test_proc_call(void) { grn_obj *v; prepare_data(); GRN_EXPR_CREATE_FOR_QUERY(&context, docs, cond, v); cut_assert_not_null(cond); cut_assert_not_null(v); PARSE(cond, "size:>14", GRN_EXPR_SYNTAX_QUERY|GRN_EXPR_ALLOW_PRAGMA|GRN_EXPR_ALLOW_COLUMN); res = grn_table_select(&context, docs, cond, NULL, GRN_OP_OR); cut_assert_not_null(res); grn_test_assert_select(&context, gcut_take_new_list_string("hoge moge moge moge", "moge hoge fuga fuga", "moge hoge moge moge moge", "poyo moge hoge " "moge moge moge", NULL), res, "body"); grn_test_assert(grn_obj_close(&context, res)); res = NULL; GRN_EXPR_CREATE_FOR_QUERY(&context, docs, expr, v); PARSE(expr, "size = rand(14)", GRN_EXPR_SYNTAX_SCRIPT|GRN_EXPR_ALLOW_UPDATE); { grn_id id; grn_table_cursor *tc; tc = grn_table_cursor_open(&context, docs, NULL, 0, NULL, 0, 0, -1, 0); cut_assert_not_null(tc); while ((id = grn_table_cursor_next(&context, tc))) { GRN_RECORD_SET(&context, v, id); grn_expr_exec(&context, expr, 0); } grn_test_assert(grn_table_cursor_close(&context, tc)); } res = grn_table_select(&context, docs, cond, NULL, GRN_OP_OR); cut_assert_not_null(res); grn_test_assert_select_none(res); }
void test_common_prefix_search(gpointer data) { grn_id id; const gchar *max; int min_size, offset, limit, flags; const GList *expected_keys; GList *actual_keys = NULL; cut_omit("crashed. Is it right usage?"); create_short_text_table(gcut_take_new_list_string("abra", "abracada", "abracadabra", "abubu", "あ", "ああ", "あああ", "い", NULL)); min_size = gcut_data_get_int(data, "min-size"); max = gcut_data_get_string(data, "max"); offset = gcut_data_get_int(data, "offset"); limit = gcut_data_get_int(data, "limit"); flags = gcut_data_get_int(data, "flags"); cursor = grn_table_cursor_open(context, table, NULL, min_size, max, strlen(max), offset, limit, flags | GRN_CURSOR_PREFIX); grn_test_assert_context(context); while ((id = grn_table_cursor_next(context, cursor))) { gchar *key; int key_size; key_size = grn_table_cursor_get_key(context, cursor, (void **)&key); actual_keys = g_list_append(actual_keys, g_strndup(key, key_size)); } gcut_take_list(actual_keys, g_free); expected_keys = gcut_data_get_pointer(data, "expected"); gcut_assert_equal_list_string(expected_keys, actual_keys); }
void test_by_key_descending_max(void) { default_cursor_min = g_strdup("0"); default_cursor_min_size = strlen(default_cursor_min); default_cursor_max = g_strdup("9989"); default_cursor_max_size = strlen(default_cursor_max); default_cursor_flags |= GRN_CURSOR_DESCENDING; cut_assert_create_trie(); cut_assert_lookup_add("997"); cut_assert_lookup_add("999"); cut_assert_lookup_add("9998"); cut_assert_open_cursor(); gcut_assert_equal_list_string(gcut_take_new_list_string("997", NULL), retrieve_all_keys()); }
static void grn_test_assert_select_all(grn_obj *result) { grn_test_assert_select(&context, gcut_take_new_list_string("hoge", "fuga fuga", "moge moge moge", "hoge hoge", "hoge fuga fuga", "hoge moge moge moge", "moge hoge hoge", "moge hoge fuga fuga", "moge hoge moge moge moge", "poyo moge hoge " "moge moge moge", NULL), result, "body"); }
void test_location (void) { const gchar key[] = "package.platform"; gconstpointer location; milter_assert_equal_location_keys(NULL); milter_manager_configuration_set_location(config, key, "milter-manager.local.conf", 29); milter_assert_equal_location_keys(gcut_take_new_list_string(key, NULL)); location = milter_manager_configuration_get_location(config, key); cut_assert_equal_string("milter-manager.local.conf", g_dataset_get_data(location, "file")); cut_assert_equal_int(29, GPOINTER_TO_INT(g_dataset_get_data(location, "line"))); milter_manager_configuration_reset_location(config, "package.platform"); milter_assert_equal_location_keys(NULL); }
void test_match_without_index(void) { grn_obj *v; create_properties_table(); create_documents_table(); insert_data(); cut_assert_not_null((cond = grn_expr_create(&context, NULL, 0))); v = grn_expr_add_var(&context, cond, NULL, 0); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); grn_expr_append_obj(&context, cond, v, GRN_OP_PUSH, 1); GRN_TEXT_SETS(&context, &text_buf, "body"); grn_expr_append_const(&context, cond, &text_buf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, cond, GRN_OP_GET_VALUE, 1); GRN_TEXT_SETS(&context, &text_buf, "moge"); grn_expr_append_const(&context, cond, &text_buf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, cond, GRN_OP_MATCH, 2); grn_expr_compile(&context, cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null(grn_table_select(&context, docs, cond, res, GRN_OP_OR)); grn_test_assert_select( &context, gcut_take_new_list_string("moge moge moge", "hoge moge moge moge", "moge hoge hoge", "moge hoge fuga fuga", "moge hoge moge moge moge", "poyo moge hoge moge moge moge", NULL), res, "body"); }
void test_select(void) { grn_obj *v; prepare_data(); cut_assert_not_null((cond = grn_expr_create(&context, NULL, 0))); v = grn_expr_add_var(&context, cond, NULL, 0); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); grn_expr_append_obj(&context, cond, v, GRN_OP_PUSH, 1); GRN_TEXT_SETS(&context, &text_buf, "size"); grn_expr_append_const(&context, cond, &text_buf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, cond, GRN_OP_GET_VALUE, 2); GRN_UINT32_SET(&context, &int_buf, 14); grn_expr_append_const(&context, cond, &int_buf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, cond, GRN_OP_EQUAL, 2); grn_expr_compile(&context, cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null((expr = grn_expr_create(&context, NULL, 0))); grn_expr_append_obj(&context, expr, docs, GRN_OP_PUSH, 1); grn_expr_append_obj(&context, expr, cond, GRN_OP_PUSH, 1); grn_expr_append_obj(&context, expr, res, GRN_OP_PUSH, 1); GRN_UINT32_SET(&context, &int_buf, GRN_OP_OR); grn_expr_append_const(&context, expr, &int_buf, GRN_OP_PUSH, 1); grn_expr_append_op(&context, expr, GRN_OP_TABLE_SELECT, 4); grn_expr_exec(&context, expr, 0); grn_test_assert_select(&context, gcut_take_new_list_string("moge moge moge", "hoge fuga fuga", "moge hoge hoge", NULL), res, "body"); }
void test_equal_by_existent_reference_key(void) { grn_obj *v; prepare_data(); GRN_EXPR_CREATE_FOR_QUERY(&context, docs, cond, v); cut_assert_not_null(cond); cut_assert_not_null(v); PARSE(cond, "author == \"morita\"", GRN_EXPR_SYNTAX_SCRIPT); res = grn_table_select(&context, docs, cond, NULL, GRN_OP_OR); cut_assert_not_null(res); grn_test_assert_select(&context, gcut_take_new_list_string( "fuga fuga", "hoge", "poyo moge hoge moge moge moge", NULL), res, "body"); }
void test_crud(void) { cut_assert_create(); add_data(1, 1, "API.JA"); add_data(2, 1, "CHECKINSTALL.JA"); add_data(3, 1, "FUTUREWORKS.JA"); add_data(4, 1, "INSTALL.JA"); gcut_assert_equal_list_string(gcut_take_new_list_string("1", "2", "3", NULL), retrieve_record_ids("検索")); remove_data(1, 1, "API.JA"); gcut_assert_equal_list_string(gcut_take_new_list_string("2", "3", NULL), retrieve_record_ids("検索")); update_data(3, 1, "FUTUREWORKS.JA", "Makefile.am"); gcut_assert_equal_list_string(gcut_take_new_list_string("2", NULL), retrieve_record_ids("検索")); remove_data(2, 1, "CHECKINSTALL.JA"); add_data(3, 2, "FUTUREWORKS.JA"); gcut_assert_equal_list_string(gcut_take_new_list_string("3", NULL), retrieve_record_ids("検索")); update_data(4, 1, "INSTALL.JA", "README.JA"); gcut_assert_equal_list_string(gcut_take_new_list_string("3", "4", NULL), retrieve_record_ids("検索")); remove_data(4, 1, "README.JA"); gcut_assert_equal_list_string(gcut_take_new_list_string("3", NULL), retrieve_record_ids("検索")); remove_data(3, 2, "FUTUREWORKS.JA"); cut_set_message("this assertion is wrong?"); gcut_assert_equal_list_string(NULL, retrieve_record_ids("検索")); }
void test_prefix_rk(gpointer data) { grn_id id; const gchar *min; int offset, limit; const GList *expected_keys; GList *actual_keys = NULL; create_short_text_table( gcut_take_new_list_string("インデックス", "エヌグラム", "エンジン", "カネソナエタ", "カノウ", "キノウ", "キョウカ", "クミコミ", "クミコム", "グルンガ", "ケンサク", "ケンサクヨウキュウ", "ゲンゴ", "コウセイド", "コウソク", "コンパクト", "サクセイ", "ショリ", "ショリケイ", "ジッソウ", "ジュンスイ", "スクリプト", "セッケイ", "ゼンブン", "タイプ", "タンゴ", "ダイキボ", "テンチ", "ディービーエムエス", "トウ", "トクチョウ", "ブンショリョウ", "ヨウキュウ", NULL)); min = gcut_data_get_string(data, "min"); offset = gcut_data_get_int(data, "offset"); limit = gcut_data_get_int(data, "limit"); cursor = grn_table_cursor_open(context, table, min, strlen(min), NULL, 0, offset, limit, GRN_CURSOR_PREFIX | GRN_CURSOR_RK); grn_test_assert_context(context); while ((id = grn_table_cursor_next(context, cursor))) { gchar *key; int key_size; key_size = grn_table_cursor_get_key(context, cursor, (void **)&key); actual_keys = g_list_append(actual_keys, g_strndup(key, key_size)); } actual_keys = g_list_sort(actual_keys, (GCompareFunc)strcmp); gcut_take_list(actual_keys, g_free); expected_keys = gcut_data_get_pointer(data, "expected"); gcut_assert_equal_list_string(expected_keys, actual_keys); }
void test_parse(gconstpointer data) { grn_obj *v; prepare_data(); cond = grn_expr_create(&context, NULL, 0); cut_assert_not_null(cond); v = grn_expr_add_var(&context, cond, NULL, 0); cut_assert_not_null(v); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); PARSE(cond, gcut_data_get_string(data, "query_hoge_moge"), gcut_data_get_int(data, "query_hoge_moge_parse_level")); PARSE(cond, gcut_data_get_string(data, "query_poyo"), gcut_data_get_int(data, "query_poyo_parse_level")); grn_expr_append_op(&context, cond, GRN_OP_AND, 2); grn_test_assert_expr( &context, "#<expr\n" " vars:{\n" " $1:#<record:no_key:docs id:0(nonexistent)>\n" " },\n" " codes:{\n" " 0:<get_value(), modify:2, " "value:#<column:var_size docs.body range:Text type:scalar compress:none>>,\n" " 1:<push(), modify:0, value:\"hoge\">,\n" " 2:<match(), modify:4, value:(NULL)>,\n" " 3:<get_value(), modify:2, " "value:#<column:var_size docs.body range:Text type:scalar compress:none>>,\n" " 4:<push(), modify:0, value:\"moge\">,\n" " 5:<match(), modify:0, value:(NULL)>,\n" " 6:<and(), modify:4, value:(NULL)>,\n" " 7:<get_value(), modify:2, " "value:#<column:var_size docs.body range:Text type:scalar compress:none>>,\n" " 8:<push(), modify:0, value:\"poyo\">,\n" " 9:<match(), modify:0, value:(NULL)>,\n" " 10:<and(), modify:0, value:(NULL)>\n" " }\n" ">", cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null(grn_table_select(&context, docs, cond, res, GRN_OP_OR)); grn_test_assert_select(&context, gcut_take_new_list_string("poyo moge hoge " "moge moge moge", NULL), res, "body"); grn_test_assert(grn_obj_close(&context, res)); res = NULL; grn_test_assert(grn_obj_close(&context, cond)); cond = NULL; cond = grn_expr_create(&context, NULL, 0); cut_assert_not_null(cond); v = grn_expr_add_var(&context, cond, NULL, 0); cut_assert_not_null(v); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); PARSE(cond, gcut_data_get_string(data, "query_size"), gcut_data_get_int(data, "query_size_parse_level")); grn_test_assert_expr( &context, "#<expr\n" " vars:{\n" " $1:#<record:no_key:docs id:0(nonexistent)>\n" " },\n" " codes:{\n" " 0:<get_value(), modify:2, " "value:#<column:fix_size docs.size range:UInt32 type:scalar compress:none>>,\n" " 1:<push(), modify:0, value:14>,\n" " 2:<equal(), modify:0, value:(NULL)>\n" " }\n" ">", cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null(grn_table_select(&context, docs, cond, res, GRN_OP_OR)); grn_test_assert_select(&context, gcut_take_new_list_string("moge moge moge", "hoge fuga fuga", "moge hoge hoge", NULL), res, "body"); }
void test_parse(gconstpointer data) { grn_obj *v; prepare_data(); cond = grn_expr_create(&context, NULL, 0); cut_assert_not_null(cond); v = grn_expr_add_var(&context, cond, NULL, 0); cut_assert_not_null(v); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); PARSE(cond, gcut_data_get_string(data, "query_hoge_moge"), gcut_data_get_int(data, "query_hoge_moge_parse_level")); PARSE(cond, gcut_data_get_string(data, "query_poyo"), gcut_data_get_int(data, "query_poyo_parse_level")); grn_expr_append_op(&context, cond, GRN_OP_AND, 2); grn_test_assert_expr(&context, "noname($1:0){2body GET_VALUE,0\"hoge\",4MATCH," "2body GET_VALUE,0\"moge\",0MATCH,4AND," "2body GET_VALUE,0\"poyo\",0MATCH,0AND}", cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null(grn_table_select(&context, docs, cond, res, GRN_OP_OR)); grn_test_assert_select(&context, gcut_take_new_list_string("poyo moge hoge " "moge moge moge", NULL), res, "body"); grn_test_assert(grn_obj_close(&context, res)); res = NULL; grn_test_assert(grn_obj_close(&context, cond)); cond = NULL; cond = grn_expr_create(&context, NULL, 0); cut_assert_not_null(cond); v = grn_expr_add_var(&context, cond, NULL, 0); cut_assert_not_null(v); GRN_RECORD_INIT(v, 0, grn_obj_id(&context, docs)); PARSE(cond, gcut_data_get_string(data, "query_size"), gcut_data_get_int(data, "query_size_parse_level")); grn_test_assert_expr(&context, "noname($1:0){2size GET_VALUE,014,0EQUAL}", cond); res = grn_table_create(&context, NULL, 0, NULL, GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL); cut_assert_not_null(res); cut_assert_not_null(grn_table_select(&context, docs, cond, res, GRN_OP_OR)); grn_test_assert_select(&context, gcut_take_new_list_string("moge moge moge", "hoge fuga fuga", "moge hoge hoge", NULL), res, "body"); }