Kouhei Sutou
null+****@clear*****
Wed Jun 22 10:28:28 JST 2016
Kouhei Sutou 2016-06-22 10:28:28 +0900 (Wed, 22 Jun 2016) New Revision: 151009a4aef81eae47fb96ed94e0e359d43a9515 https://github.com/groonga/groonga/commit/151009a4aef81eae47fb96ed94e0e359d43a9515 Message: Add grn_obj_is_index_column() Modified files: include/groonga/obj.h lib/obj.c test/unit/core/test-object.c Modified: include/groonga/obj.h (+1 -0) =================================================================== --- include/groonga/obj.h 2016-06-22 00:44:37 +0900 (02747ea) +++ include/groonga/obj.h 2016-06-22 10:28:28 +0900 (3584ee2) @@ -34,6 +34,7 @@ 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_column(grn_ctx *ctx, grn_obj *obj); GRN_API grn_bool grn_obj_is_reference_column(grn_ctx *ctx, grn_obj *obj); +GRN_API grn_bool grn_obj_is_index_column(grn_ctx *ctx, grn_obj *obj); GRN_API grn_bool grn_obj_is_accessor(grn_ctx *ctx, grn_obj *obj); GRN_API grn_bool grn_obj_is_key_accessor(grn_ctx *ctx, grn_obj *obj); GRN_API grn_bool grn_obj_is_type(grn_ctx *ctx, grn_obj *obj); Modified: lib/obj.c (+10 -0) =================================================================== --- lib/obj.c 2016-06-22 00:44:37 +0900 (0f1e1ce) +++ lib/obj.c 2016-06-22 10:28:28 +0900 (aa1cbf6) @@ -149,6 +149,16 @@ grn_obj_is_reference_column(grn_ctx *ctx, grn_obj *obj) } grn_bool +grn_obj_is_index_column(grn_ctx *ctx, grn_obj *obj) +{ + if (!grn_obj_is_column(ctx, obj)) { + return GRN_FALSE; + } + + return obj->header.type == GRN_COLUMN_INDEX; +} + +grn_bool grn_obj_is_accessor(grn_ctx *ctx, grn_obj *obj) { if (!obj) { Modified: test/unit/core/test-object.c (+38 -0) =================================================================== --- test/unit/core/test-object.c 2016-06-22 00:44:37 +0900 (5a8b1fe) +++ test/unit/core/test-object.c 2016-06-22 10:28:28 +0900 (afec195) @@ -33,6 +33,8 @@ void data_is_column(void); void test_is_column(gconstpointer data); void data_is_reference_column(void); void test_is_reference_column(gconstpointer data); +void data_is_index_column(void); +void test_is_index_column(gconstpointer data); void data_is_accessor(void); void test_is_accessor(gconstpointer data); void data_is_key_accessor(void); @@ -258,6 +260,42 @@ test_is_reference_column(gconstpointer data) } void +data_is_index_column(void) +{ +#define ADD_DATUM(label, expected, name) \ + gcut_add_datum(label, \ + "expected", G_TYPE_BOOLEAN, expected, \ + "name", G_TYPE_STRING, name, \ + NULL) + + ADD_DATUM("table", FALSE, "Users"); + ADD_DATUM("value column", FALSE, "Users.age"); + ADD_DATUM("index column", TRUE, "Ages.users_age"); + +#undef ADD_DATUM +} + +void +test_is_index_column(gconstpointer data) +{ + const gchar *name; + grn_obj *object; + + assert_send_command("table_create Users TABLE_HASH_KEY ShortText"); + assert_send_command("column_create Users age COLUMN_SCALAR UInt8"); + assert_send_command("table_create Ages TABLE_PAT_KEY UInt8"); + assert_send_command("column_create Ages users_age COLUMN_INDEX Users age"); + + 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_index_column(context, object)); + } else { + cut_assert_false(grn_obj_is_index_column(context, object)); + } +} + +void data_is_accessor(void) { #define ADD_DATUM(expected, name) \ -------------- next part -------------- HTML����������������������������...Descargar