Navigation Menu

Skip to content

Commit

Permalink
Add grn_obj_is_type()
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Oct 19, 2015
1 parent 975d135 commit 106b564
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/groonga/obj.h
Expand Up @@ -25,6 +25,7 @@ extern "C" {

GRN_API grn_bool grn_obj_is_builtin(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_type(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_proc(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_function_proc(grn_ctx *ctx, grn_obj *obj);
GRN_API grn_bool grn_obj_is_selector_proc(grn_ctx *ctx, grn_obj *obj);
Expand Down
10 changes: 10 additions & 0 deletions lib/obj.c
Expand Up @@ -56,6 +56,16 @@ grn_obj_is_table(grn_ctx *ctx, grn_obj *obj)
return is_table;
}

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

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

grn_bool
grn_obj_is_proc(grn_ctx *ctx, grn_obj *obj)
{
Expand Down
36 changes: 36 additions & 0 deletions test/unit/core/test-object.c
Expand Up @@ -29,6 +29,8 @@ void data_is_builtin(void);
void test_is_builtin(gconstpointer data);
void data_is_table(void);
void test_is_table(gconstpointer data);
void data_is_type(void);
void test_is_type(gconstpointer data);
void data_is_proc(void);
void test_is_proc(gconstpointer data);
void data_is_function_proc(void);
Expand Down Expand Up @@ -161,6 +163,40 @@ test_is_table(gconstpointer data)
}
}

void
data_is_type(void)
{
#define ADD_DATUM(expected, name) \
gcut_add_datum((expected ? \
"type - " name : \
"not type - " name), \
"expected", G_TYPE_BOOLEAN, expected, \
"name", G_TYPE_STRING, name, \
NULL)

ADD_DATUM(TRUE, "ShortText");
ADD_DATUM(FALSE, "Users");

#undef ADD_DATUM
}

void
test_is_type(gconstpointer data)
{
const gchar *name;
grn_obj *object;

assert_send_command("table_create Users TABLE_HASH_KEY ShortText");

name = gcut_data_get_string(data, "name");
object = grn_ctx_get(context, name, strlen(name));
if (gcut_data_get_string(data, "expected")) {
cut_assert_true(grn_obj_is_type(context, object));
} else {
cut_assert_false(grn_obj_is_type(context, object));
}
}

void
data_is_proc(void)
{
Expand Down

0 comments on commit 106b564

Please sign in to comment.