Tetsuro IKEDA
null+****@clear*****
Thu Oct 4 10:19:11 JST 2012
Tetsuro IKEDA 2009-06-30 17:19:52 +0900 (Tue, 30 Jun 2009) New Revision: cf552e5e996242d840ce76bb88b90b51f652dadb https://github.com/mroonga/mroonga/commit/cf552e5e996242d840ce76bb88b90b51f652dadb Log: add mrn_close function and test code. Modified files: src/driver.c test/unit/test-driver.c Modified: src/driver.c (+13 -0) =================================================================== --- src/driver.c 2009-06-30 17:09:06 +0900 (4b87e5a) +++ src/driver.c 2009-06-30 17:19:52 +0900 (c046abf) @@ -382,3 +382,16 @@ auto_close: info->table->obj = NULL; return -1; } + +int mrn_close(grn_ctx *ctx, mrn_obj_info *info) +{ + int i; + for (i=0; i < info->n_columns; i++) + { + grn_obj_close(ctx, info->columns[i]->obj); + info->columns[i]->obj = NULL; + } + grn_obj_close(ctx, info->table->obj); + info->table->obj = NULL; + return 0; +} Modified: test/unit/test-driver.c (+39 -0) =================================================================== --- test/unit/test-driver.c 2009-06-30 17:09:06 +0900 (5923a29) +++ test/unit/test-driver.c 2009-06-30 17:19:52 +0900 (523bb4b) @@ -229,3 +229,42 @@ void test_mrn_open() grn_obj_remove(ctx, info->table->obj); mrn_deinit_obj_info(ctx, info); } + +void test_mrn_close() +{ + TEST_ENTER; + grn_obj *obj,*obj2; + + mrn_obj_info *info = mrn_init_obj_info(ctx, 2); + + info->table->name = "test/t1"; + info->table->name_size = strlen("test/t1"); + info->table->flags |= GRN_OBJ_TABLE_NO_KEY; + + info->columns[0]->name = "c1"; + info->columns[0]->name_size = strlen("c1"); + info->columns[0]->flags |= GRN_OBJ_COLUMN_SCALAR; + info->columns[0]->type = grn_ctx_at(ctx, GRN_DB_INT32); + + info->columns[1]->name = "c2"; + info->columns[1]->name_size = strlen("c2"); + info->columns[1]->flags |= GRN_OBJ_COLUMN_SCALAR; + info->columns[1]->type = grn_ctx_at(ctx, GRN_DB_TEXT); + + cut_assert_equal_int(0, mrn_create(ctx, info)); + cut_assert_equal_int(0, mrn_open(ctx, info)); + cut_assert_not_null(info->table->obj); + cut_assert_not_null(info->columns[0]->obj); + cut_assert_not_null(info->columns[1]->obj); + + cut_assert_equal_int(0, mrn_close(ctx, info)); + cut_assert_null(info->table->obj); + cut_assert_null(info->columns[0]->obj); + cut_assert_null(info->columns[1]->obj); + + cut_assert_equal_int(0, mrn_open(ctx, info)); + grn_obj_remove(ctx, info->columns[1]->obj); + grn_obj_remove(ctx, info->columns[0]->obj); + grn_obj_remove(ctx, info->table->obj); + mrn_deinit_obj_info(ctx, info); +} -------------- next part -------------- HTML����������������������������...Download