[Groonga-commit] groonga/groonga [master] add test_create().

Back to archive index

null+****@clear***** null+****@clear*****
2011年 11月 10日 (木) 15:31:34 JST


Susumu Yata	2011-11-10 06:31:34 +0000 (Thu, 10 Nov 2011)

  New Revision: 2978645938eacc8cafb50ec164128553d8e1f359

  Log:
    add test_create().

  Modified files:
    test/unit/core/dat/test-trie.cpp

  Modified: test/unit/core/dat/test-trie.cpp (+33 -0)
===================================================================
--- test/unit/core/dat/test-trie.cpp    2011-11-10 06:29:51 +0000 (02565dc)
+++ test/unit/core/dat/test-trie.cpp    2011-11-10 06:31:34 +0000 (f6e5522)
@@ -56,6 +56,7 @@ namespace test_dat_trie
 
   void cut_setup(void)
   {
+    std::srand(static_cast<unsigned int>(std::time(NULL)));
     base_dir = grn_test_get_tmp_dir();
     cut_remove_path(base_dir, NULL);
     g_mkdir_with_parents(base_dir, 0755);
@@ -283,4 +284,36 @@ namespace test_dat_trie
                           static_cast<std::size_t>(trie.total_key_length()));
     }
   }
+
+  void test_create(void)
+  {
+    std::vector<std::string> keys;
+    create_keys(&keys, 1000, 1, 16);
+
+    grn::dat::Trie src_trie;
+    src_trie.create();
+
+    for (std::size_t i = 0; i < keys.size(); ++i) {
+      cppcut_assert_equal(src_trie.insert(keys[i].c_str(), keys[i].length()), true);
+    }
+
+    grn::dat::Trie dest_trie;
+    dest_trie.create(src_trie);
+
+    for (std::size_t i = 0; i < keys.size(); ++i) {
+      cppcut_assert_equal(dest_trie.search(keys[i].c_str(), keys[i].length()), true);
+    }
+
+    cppcut_assert_equal(dest_trie.file_size(), src_trie.file_size());
+    cppcut_assert_equal(dest_trie.total_key_length(), src_trie.total_key_length());
+    cppcut_assert_equal(dest_trie.min_key_id(), src_trie.min_key_id());
+    cppcut_assert_equal(dest_trie.next_key_id(), src_trie.next_key_id());
+    cppcut_assert_equal(dest_trie.max_key_id(), src_trie.max_key_id());
+    cppcut_assert_equal(dest_trie.num_keys(), src_trie.num_keys());
+    cppcut_assert_equal(dest_trie.next_key_pos(), src_trie.next_key_pos());
+
+    cut_assert(dest_trie.num_nodes() < src_trie.num_nodes());
+    cppcut_assert_equal(dest_trie.num_zombies(), static_cast<grn::dat::UInt32>(0));
+    cut_assert(dest_trie.num_blocks() < src_trie.num_nodes());
+  }
 }




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