null+****@clear*****
null+****@clear*****
2012年 1月 23日 (月) 11:23:48 JST
Susumu Yata 2012-01-23 11:23:48 +0900 (Mon, 23 Jan 2012)
New Revision: df6348f5f686a42acc5c8ffa1e748ce1cb927813
Log:
added a test that removes keys and then calls grn_dat_repair().
Modified files:
test/unit/core/dat/test-dat.cpp
Modified: test/unit/core/dat/test-dat.cpp (+35 -3)
===================================================================
--- test/unit/core/dat/test-dat.cpp 2012-01-23 10:33:28 +0900 (49027c3)
+++ test/unit/core/dat/test-dat.cpp 2012-01-23 11:23:48 +0900 (39f8771)
@@ -167,7 +167,7 @@ namespace test_dat
cppcut_assert_equal(GRN_NO_SUCH_FILE_OR_DIRECTORY,
grn_dat_remove(&ctx, dat_path));
cppcut_assert_equal(GRN_NO_SUCH_FILE_OR_DIRECTORY, ctx.rc);
- ERRCLR(&ctx);
+ ctx.rc = GRN_SUCCESS;
std::vector<std::string> keys;
create_keys(&keys, 1000, 6, 15);
@@ -723,15 +723,47 @@ namespace test_dat
create_keys(&keys, 1000, 6, 15);
grn_dat * const dat = create_trie(keys, dat_path);
+
cppcut_assert_equal(GRN_SUCCESS, grn_dat_repair(&ctx, dat));
- cppcut_assert_equal(static_cast<unsigned int>(keys.size()), grn_dat_size(&ctx, dat));
- cppcut_assert_equal(static_cast<grn_id>(keys.size()), grn_dat_curr_id(&ctx, dat));
+ cppcut_assert_equal(static_cast<unsigned int>(keys.size()),
+ grn_dat_size(&ctx, dat));
+ cppcut_assert_equal(static_cast<grn_id>(keys.size()),
+ grn_dat_curr_id(&ctx, dat));
+
for (std::size_t i = 0; i < keys.size(); ++i) {
const char * const ptr = keys[i].c_str();
const uint32_t length = static_cast<uint32_t>(keys[i].length());
cppcut_assert_equal(static_cast<grn_id>(i + 1),
grn_dat_get(&ctx, dat, ptr, length, NULL));
}
+
+ for (std::size_t i = 0; i < keys.size(); i += 2) {
+ cppcut_assert_equal(GRN_SUCCESS,
+ grn_dat_delete_by_id(&ctx, dat, i + 1, NULL));
+ }
+ cppcut_assert_equal(GRN_SUCCESS, grn_dat_repair(&ctx, dat));
+ cppcut_assert_equal(static_cast<unsigned int>(keys.size() / 2),
+ grn_dat_size(&ctx, dat));
+
+ for (std::size_t i = 0; i < keys.size(); i += 2) {
+ const char * const ptr = keys[i].c_str();
+ const uint32_t length = static_cast<uint32_t>(keys[i].length());
+ int added;
+ cppcut_assert_equal(static_cast<grn_id>(i + 1),
+ grn_dat_add(&ctx, dat, ptr, length, NULL, &added));
+ cppcut_assert_equal(1, added);
+ }
+ cppcut_assert_equal(GRN_SUCCESS, grn_dat_repair(&ctx, dat));
+ cppcut_assert_equal(static_cast<unsigned int>(keys.size()),
+ grn_dat_size(&ctx, dat));
+
+ for (std::size_t i = 0; i < keys.size(); ++i) {
+ const char * const ptr = keys[i].c_str();
+ const uint32_t length = static_cast<uint32_t>(keys[i].length());
+ cppcut_assert_equal(static_cast<grn_id>(i + 1),
+ grn_dat_get(&ctx, dat, ptr, length, NULL));
+ }
+
cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
}
}