[Groonga-commit] groonga/groonga [master] added a test that removes keys and then calls grn_dat_repair().

Back to archive index

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));
   }
 }




Groonga-commit メーリングリストの案内
Back to archive index