[Groonga-commit] groonga/grnxx at a0e2dc3 [master] Add a test for grnxx::map::Pool::defrag().

Back to archive index

susumu.yata null+****@clear*****
Fri Aug 16 18:20:02 JST 2013


susumu.yata	2013-08-16 18:20:02 +0900 (Fri, 16 Aug 2013)

  New Revision: a0e2dc371d6293fa2c01e2b76e67b2baf2cdd254
  https://github.com/groonga/grnxx/commit/a0e2dc371d6293fa2c01e2b76e67b2baf2cdd254

  Message:
    Add a test for grnxx::map::Pool::defrag().

  Modified files:
    test/test_map_pool.cpp

  Modified: test/test_map_pool.cpp (+31 -1)
===================================================================
--- test/test_map_pool.cpp    2013-08-16 18:19:36 +0900 (3ef62a9)
+++ test/test_map_pool.cpp    2013-08-16 18:20:02 +0900 (5738cad)
@@ -404,7 +404,37 @@ void test_map_pool_add() {
 
 template <typename T>
 void test_map_pool_defrag() {
-  // TODO
+  std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
+  std::unique_ptr<grnxx::map::Pool<T>> pool(
+      grnxx::map::Pool<T>::create(storage.get(),
+                                  grnxx::STORAGE_ROOT_NODE_ID));
+  std::vector<T> keys;
+  std::vector<std::int64_t> key_ids;
+  generate_random_keys(get_num_keys<T>(), &keys);
+  for (std::uint64_t i = 0; i < keys.size(); ++i) {
+    const std::int64_t key_id = pool->add(keys[i]);
+    key_ids.push_back(key_id);
+  }
+  pool->defrag();
+  for (std::uint64_t i = 0; i < keys.size(); ++i) {
+    T stored_key;
+    assert(pool->get(key_ids[i], &stored_key));
+    assert(grnxx::map::Helper<T>::equal_to(stored_key, keys[i]));
+  }
+  for (std::uint64_t i = 0; i < keys.size(); i += 4) {
+    pool->unset(key_ids[i + 1]);
+    pool->unset(key_ids[i + 2]);
+    pool->unset(key_ids[i + 3]);
+  }
+  pool->defrag();
+  for (std::uint64_t i = 0; i < keys.size(); i += 4) {
+    T stored_key;
+    assert(pool->get(key_ids[i], &stored_key));
+    assert(grnxx::map::Helper<T>::equal_to(stored_key, keys[i]));
+    assert(!pool->get_bit(key_ids[i + 1]));
+    assert(!pool->get_bit(key_ids[i + 2]));
+    assert(!pool->get_bit(key_ids[i + 3]));
+  }
 }
 
 template <typename T>
-------------- next part --------------
HTML����������������������������...
Descargar 



More information about the Groonga-commit mailing list
Back to archive index