Skip to content

Commit

Permalink
Add predicates for bulk and text family bulk
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Feb 3, 2017
1 parent fea9674 commit 438d3f3
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/groonga/obj.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ extern "C" {
GRN_API grn_bool grn_obj_is_true(grn_ctx *ctx, grn_obj *obj);

GRN_API grn_bool grn_obj_is_builtin(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_bulk(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_text_family_bulk(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_table(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_column(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_vector_column(grn_ctx *ctx, grn_obj *obj);
Expand Down
20 changes: 20 additions & 0 deletions lib/obj.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,26 @@ grn_obj_is_builtin(grn_ctx *ctx, grn_obj *obj)
return grn_id_is_builtin(ctx, id);
}

grn_bool
grn_obj_is_bulk(grn_ctx *ctx, grn_obj *obj)
{
if (!obj) {
return GRN_FALSE;
}

return obj->header.type == GRN_BULK;
}

grn_bool
grn_obj_is_text_family_bulk(grn_ctx *ctx, grn_obj *obj)
{
if (!grn_obj_is_bulk(ctx, obj)) {
return GRN_FALSE;
}

return GRN_TYPE_IS_TEXT_FAMILY(obj->header.domain);
}

grn_bool
grn_obj_is_table(grn_ctx *ctx, grn_obj *obj)
{
Expand Down
40 changes: 40 additions & 0 deletions test/unit/core/test-object.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@

void data_is_builtin(void);
void test_is_builtin(gconstpointer data);
void test_is_bulk(void);
void test_is_text_family_bulk(void);
void data_is_table(void);
void test_is_table(gconstpointer data);
void data_is_column(void);
Expand Down Expand Up @@ -158,6 +160,44 @@ test_is_builtin(gconstpointer data)
}
}

void
test_is_bulk(void)
{
grn_obj bulk;
grn_obj *tokenizer;

GRN_UINT32_INIT(&bulk, 0);
cut_assert_true(grn_obj_is_bulk(context, &bulk));
GRN_OBJ_FIN(context, &bulk);

tokenizer = grn_ctx_get(context, "TokenBigram", -1);
cut_assert_false(grn_obj_is_bulk(context, tokenizer));
}

void
test_is_text_family_bulk(void)
{
grn_obj uint32_bulk;
grn_obj short_text_bulk;
grn_obj text_bulk;
grn_obj long_text_bulk;

GRN_UINT32_INIT(&uint32_bulk, 0);
GRN_SHORT_TEXT_INIT(&short_text_bulk, 0);
GRN_TEXT_INIT(&text_bulk, 0);
GRN_LONG_TEXT_INIT(&long_text_bulk, 0);

cut_assert_false(grn_obj_is_text_family_bulk(context, &uint32_bulk));
cut_assert_true(grn_obj_is_text_family_bulk(context, &short_text_bulk));
cut_assert_true(grn_obj_is_text_family_bulk(context, &text_bulk));
cut_assert_true(grn_obj_is_text_family_bulk(context, &long_text_bulk));

GRN_OBJ_FIN(context, &uint32_bulk);
GRN_OBJ_FIN(context, &short_text_bulk);
GRN_OBJ_FIN(context, &text_bulk);
GRN_OBJ_FIN(context, &long_text_bulk);
}

void
data_is_table(void)
{
Expand Down

0 comments on commit 438d3f3

Please sign in to comment.