Navigation Menu

Skip to content

Commit

Permalink
make test_expr_parse() use gcut_add_datum()
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryo Onodera committed Oct 15, 2009
1 parent ff3ec6e commit c3c6b22
Showing 1 changed file with 30 additions and 51 deletions.
81 changes: 30 additions & 51 deletions test/unit/core/test-expr.c
Expand Up @@ -41,6 +41,7 @@ void test_table_select_select_search(void);
void test_table_select_match(void);
void test_table_select_match_equal(void);

void data_expr_parse(void);
void test_expr_parse(gconstpointer data);
void test_expr_set_value(void);
void test_expr_set_value_with_implicit_variable_reference(void);
Expand Down Expand Up @@ -827,62 +828,37 @@ grn_assert_expr(gchar *inspected, grn_obj *expr)
GRN_OBJ_FIN(&context, &strbuf);
}

typedef struct _grn_expr_parse_test_data {
gchar *expr1, *expr2, *expr3;
int parse_level1, parse_level2, parse_level3;
} grn_expr_parse_test_data;

static grn_expr_parse_test_data *
grn_expr_parse_test_data_new(gchar *expr1, int parse_level1,
gchar *expr2, int parse_level2,
gchar *expr3, int parse_level3)
{
grn_expr_parse_test_data *test_data;

test_data = g_new0(grn_expr_parse_test_data, 1);
test_data->expr1 = expr1;
test_data->expr2 = expr2;
test_data->expr3 = expr3;
test_data->parse_level1 = parse_level1;
test_data->parse_level2 = parse_level2;
test_data->parse_level3 = parse_level3;

return test_data;
}

static void
grn_expr_parse_test_data_free(grn_expr_parse_test_data *test_data)
{
g_free(test_data->expr1);
g_free(test_data->expr2);
g_free(test_data->expr3);
g_free(test_data);
}

void
data_expr_parse(void)
{
cut_add_data("column query parse level",
grn_expr_parse_test_data_new(g_strdup("hoge + moge"), 1,
g_strdup("poyo"), 1,
g_strdup("size:14"), 2),
grn_expr_parse_test_data_free,
"table query parse level",
grn_expr_parse_test_data_new(g_strdup("body:%hoge + body:%moge"), 2,
g_strdup("body:%poyo"), 2,
g_strdup("size:14"), 2),
grn_expr_parse_test_data_free,
"expression parse level",
grn_expr_parse_test_data_new(g_strdup("body@\"hoge\" && body@\"moge\""), 4,
g_strdup("body@\"poyo\""), 4,
g_strdup("size == 14"), 4),
grn_expr_parse_test_data_free);
#define ADD_DATUM(label, \
query_hoge_moge, query_hoge_moge_parse_level, \
query_poyo, query_poyo_parse_level, \
query_size, query_size_parse_level) \
gcut_add_datum(label, \
"query_hoge_moge", G_TYPE_STRING, query_hoge_moge, \
"query_hoge_moge_parse_level", G_TYPE_INT, query_hoge_moge_parse_level,\
"query_poyo", G_TYPE_STRING, query_poyo, \
"query_poyo_parse_level", G_TYPE_INT, query_poyo_parse_level, \
"query_size", G_TYPE_STRING, query_size, \
"query_size_parse_level", G_TYPE_INT, query_size_parse_level, \
NULL)

ADD_DATUM("column query parse level", "hoge + moge", 1,
"poyo", 1,
"size:14", 2);
ADD_DATUM("table query parse level", "body:%hoge + body:%moge", 2,
"body:%poyo", 2,
"size:14", 2);
ADD_DATUM("expression parse level", "body@\"hoge\" && body@\"moge\"", 4,
"body@\"poyo\"", 4,
"size == 14", 4);
#undef ADD_DATUM
}

void
test_expr_parse(gconstpointer data)
{
const grn_expr_parse_test_data *test_data = data;
grn_obj *cond, *v, *res, textbuf, intbuf;
GRN_TEXT_INIT(&textbuf, 0);
GRN_UINT32_INIT(&intbuf, 0);
Expand All @@ -893,8 +869,10 @@ test_expr_parse(gconstpointer data)
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, test_data->expr1, test_data->parse_level1);
PARSE(cond, test_data->expr2, test_data->parse_level2);
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_assert_expr("noname(?0:\"\"){body GET_VALUE \"hoge\" MATCH "
"body GET_VALUE \"moge\" MATCH AND "
Expand All @@ -913,7 +891,8 @@ test_expr_parse(gconstpointer data)
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, test_data->expr3, test_data->parse_level3);
PARSE(cond, gcut_data_get_string(data, "query_size"),
gcut_data_get_int(data, "query_size_parse_level"));
grn_assert_expr("noname(?0:\"\"){size GET_VALUE 14 EQUAL}", cond);
res = grn_table_create(&context, NULL, 0, NULL,
GRN_TABLE_HASH_KEY|GRN_OBJ_WITH_SUBREC, docs, NULL);
Expand Down

0 comments on commit c3c6b22

Please sign in to comment.