[Groonga-commit] groonga/grnxx [master] Add a test for grnxx::alpha::DoubleArray::update().

Back to archive index

susumu.yata null+****@clear*****
Thu Jan 31 14:01:36 JST 2013


susumu.yata	2013-01-31 14:01:36 +0900 (Thu, 31 Jan 2013)

  New Revision: 61732d33aef468d815ebad7be9b04626666311e7
  https://github.com/groonga/grnxx/commit/61732d33aef468d815ebad7be9b04626666311e7

  Log:
    Add a test for grnxx::alpha::DoubleArray::update().

  Modified files:
    test/test_alpha_double_array.cpp

  Modified: test/test_alpha_double_array.cpp (+79 -0)
===================================================================
--- test/test_alpha_double_array.cpp    2013-01-31 14:01:17 +0900 (05e12a0)
+++ test/test_alpha_double_array.cpp    2013-01-31 14:01:36 +0900 (4454744)
@@ -72,6 +72,21 @@ void test_basics() {
   for (std::size_t i = 0; i < keys.size(); ++i) {
     assert(da.insert(keys[i].c_str(), keys[i].length()));
   }
+
+  std::vector<std::string> new_keys;
+  new_keys.push_back("dog");
+  new_keys.push_back("monkey");
+  new_keys.push_back("bird");
+
+  for (std::size_t i = 0; i < keys.size(); ++i) {
+    assert(da.update(keys[i].c_str(), keys[i].length(),
+                     new_keys[i].c_str(), new_keys[i].length()));
+  }
+
+  for (std::size_t i = 0; i < keys.size(); ++i) {
+    assert(!da.search(keys[i].c_str(), keys[i].length()));
+    assert(da.search(new_keys[i].c_str(), new_keys[i].length()));
+  }
 }
 
 void test_insert() {
@@ -199,6 +214,69 @@ void test_remove() {
   }
 }
 
+void test_update() {
+  constexpr std::size_t NUM_KEYS = 1 << 12;
+  constexpr std::size_t MIN_LENGTH = 1;
+  constexpr std::size_t MAX_LENGTH = 10;
+
+  std::mt19937 random;
+
+  grnxx::io::Pool pool;
+  pool.open(grnxx::io::POOL_TEMPORARY);
+
+  grnxx::alpha::DoubleArray da;
+  da.create(pool);
+
+  std::vector<std::string> true_keys(NUM_KEYS);
+  std::vector<std::string> false_keys(NUM_KEYS);
+  {
+    std::unordered_set<std::string> keys;
+    while (keys.size() < (NUM_KEYS * 2)) {
+      std::string key;
+      key.resize(MIN_LENGTH + (random() % (MAX_LENGTH - MIN_LENGTH + 1)));
+      for (std::size_t j = 0; j < key.length(); ++j) {
+        key[j] = '0' + (random() % 10);
+      }
+      keys.insert(key);
+    }
+    auto it = keys.begin();
+    for (std::size_t i = 0; i < NUM_KEYS; ++i) {
+      true_keys[i] = *it;
+      ++it;
+      false_keys[i] = *it;
+      ++it;
+    }
+  }
+
+  for (std::size_t i = 0; i < NUM_KEYS; ++i) {
+    std::uint64_t key_id;
+    assert(da.insert(true_keys[i].c_str(), true_keys[i].length(), &key_id));
+    assert(key_id == i);
+  }
+
+  for (std::size_t i = 0; i < NUM_KEYS; ++i) {
+    assert(!da.update(i, true_keys[i].c_str(), true_keys[i].length()));
+    assert(da.update(i, false_keys[i].c_str(), false_keys[i].length()));
+  }
+
+  for (std::size_t i = 0; i < NUM_KEYS; ++i) {
+    assert(!da.search(true_keys[i].c_str(), true_keys[i].length()));
+    assert(da.search(false_keys[i].c_str(), false_keys[i].length()));
+  }
+
+  for (std::size_t i = 0; i < NUM_KEYS; ++i) {
+    assert(!da.update(true_keys[i].c_str(), true_keys[i].length(),
+                      false_keys[i].c_str(), false_keys[i].length()));
+    assert(da.update(false_keys[i].c_str(), false_keys[i].length(),
+                     true_keys[i].c_str(), true_keys[i].length()));
+  }
+
+  for (std::size_t i = 0; i < NUM_KEYS; ++i) {
+    assert(da.search(true_keys[i].c_str(), true_keys[i].length()));
+    assert(!da.search(false_keys[i].c_str(), false_keys[i].length()));
+  }
+}
+
 int main() {
   grnxx::Logger::set_flags(grnxx::LOGGER_WITH_ALL |
                            grnxx::LOGGER_ENABLE_COUT);
@@ -208,6 +286,7 @@ int main() {
 
   test_insert();
   test_remove();
+  test_update();
 
   return 0;
 }
-------------- next part --------------
HTML����������������������������...
다운로드 



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