[Groonga-commit] groonga/grnxx at 02ee53e [master] Add a test for grnxx::Array::get_value().

Back to archive index

susumu.yata null+****@clear*****
Tue May 21 13:05:27 JST 2013


susumu.yata	2013-05-21 13:05:27 +0900 (Tue, 21 May 2013)

  New Revision: 02ee53eacdea1fad4e360eda73e48eb361885e22
  https://github.com/groonga/grnxx/commit/02ee53eacdea1fad4e360eda73e48eb361885e22

  Message:
    Add a test for grnxx::Array::get_value().

  Modified files:
    test/test_array.cpp

  Modified: test/test_array.cpp (+32 -123)
===================================================================
--- test/test_array.cpp    2013-05-21 13:04:56 +0900 (9038969)
+++ test/test_array.cpp    2013-05-21 13:05:27 +0900 (66b2061)
@@ -24,204 +24,113 @@
 
 namespace {
 
-void test_array1d() {
-  constexpr std::uint64_t PAGE_SIZE = 64;
-  constexpr std::uint64_t SIZE      = PAGE_SIZE;
-
-  GRNXX_NOTICE() << __PRETTY_FUNCTION__;
-
-  std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
-  grnxx::Array<int, PAGE_SIZE, 1, 1> array;
-  uint32_t storage_node_id;
-
-  assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID));
-  assert(array);
-  assert(array.page_size() == PAGE_SIZE);
-  assert(array.table_size() == 1);
-  assert(array.secondary_table_size() == 1);
-  assert(array.size() == SIZE);
-  storage_node_id = array.storage_node_id();
-
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    assert(array.set(i, static_cast<int>(i)));
-  }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    int value;
-    assert(array.get(i, &value));
-    assert(value == static_cast<int>(i));
-  }
-  for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) {
-    assert(array.get_page(i));
-  }
-
-  assert(array.open(storage.get(), storage_node_id));
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    int value;
-    assert(array.get(i, &value));
-    assert(value == static_cast<int>(i));
-  }
-
-  assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, 1));
-  assert(array);
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    assert(array[i] == 1);
-    array[i] = static_cast<int>(i);
-  }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    assert(array[i] == static_cast<int>(i));
-  }
-}
-
-void test_array2d() {
-  constexpr std::uint64_t PAGE_SIZE  = 64;
-  constexpr std::uint64_t TABLE_SIZE = 32;
-  constexpr std::uint64_t SIZE       = PAGE_SIZE * TABLE_SIZE;
-
-  GRNXX_NOTICE() << __PRETTY_FUNCTION__;
-
-  std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
-  grnxx::Array<int, PAGE_SIZE, TABLE_SIZE, 1> array;
-  uint32_t storage_node_id;
-
-  assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID));
-  assert(array);
-  assert(array.page_size() == PAGE_SIZE);
-  assert(array.table_size() == TABLE_SIZE);
-  assert(array.secondary_table_size() == 1);
-  assert(array.size() == SIZE);
-  storage_node_id = array.storage_node_id();
-
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    assert(array.set(i, static_cast<int>(i)));
-  }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    int value;
-    assert(array.get(i, &value));
-    assert(value == static_cast<int>(i));
-  }
-  for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) {
-    assert(array.get_page(i));
-  }
-
-  assert(array.open(storage.get(), storage_node_id));
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    int value;
-    assert(array.get(i, &value));
-    assert(value == static_cast<int>(i));
-  }
-
-  assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, 1));
-  assert(array);
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    assert(array[i] == 1);
-    array[i] = static_cast<int>(i);
-  }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
-    assert(array[i] == static_cast<int>(i));
-  }
-}
-
-void test_array3d() {
-  constexpr std::uint64_t PAGE_SIZE            = 64;
-  constexpr std::uint64_t TABLE_SIZE           = 32;
-  constexpr std::uint64_t SECONDARY_TABLE_SIZE = 16;
-  constexpr std::uint64_t SIZE                 =
-      PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE;
-
+template <std::uint64_t PAGE_SIZE,
+          std::uint64_t TABLE_SIZE,
+          std::uint64_t SECONDARY_TABLE_SIZE>
+void test_array() {
   GRNXX_NOTICE() << __PRETTY_FUNCTION__;
 
+  // Create an anonymous Storage.
   std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
   grnxx::Array<int, PAGE_SIZE, TABLE_SIZE, SECONDARY_TABLE_SIZE> array;
   uint32_t storage_node_id;
 
+  // Create an Array and test its member functions.
   assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID));
   assert(array);
   assert(array.page_size() == PAGE_SIZE);
   assert(array.table_size() == TABLE_SIZE);
   assert(array.secondary_table_size() == SECONDARY_TABLE_SIZE);
-  assert(array.size() == SIZE);
+  assert(array.size() == (PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE));
   storage_node_id = array.storage_node_id();
 
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     assert(array.set(i, static_cast<int>(i)));
   }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     int value;
     assert(array.get(i, &value));
     assert(value == static_cast<int>(i));
   }
-  for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) {
+  for (std::uint64_t i = 0; i < (array.size() / array.page_size()); ++i) {
     assert(array.get_page(i));
   }
 
+  // Open the Array.
   assert(array.open(storage.get(), storage_node_id));
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     int value;
     assert(array.get(i, &value));
     assert(value == static_cast<int>(i));
   }
 
+  // Create an Array with default value.
   assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, 1));
   assert(array);
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     assert(array[i] == 1);
     array[i] = static_cast<int>(i);
   }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     assert(array[i] == static_cast<int>(i));
   }
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
+    assert(&array[i] == array.get_value(i));
+  }
 }
 
 void test_bit_array() {
   constexpr std::uint64_t PAGE_SIZE            = 64;
   constexpr std::uint64_t TABLE_SIZE           = 32;
   constexpr std::uint64_t SECONDARY_TABLE_SIZE = 16;
-  constexpr std::uint64_t SIZE                 =
-      PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE;
 
   GRNXX_NOTICE() << __PRETTY_FUNCTION__;
 
+  // Create an anonymous Storage.
   std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
   grnxx::Array<bool, PAGE_SIZE, TABLE_SIZE, SECONDARY_TABLE_SIZE> array;
   uint32_t storage_node_id;
 
+  // Create an Array and test its member functions.
   assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID));
   assert(array);
   assert(array.page_size() == PAGE_SIZE);
   assert(array.table_size() == TABLE_SIZE);
   assert(array.secondary_table_size() == SECONDARY_TABLE_SIZE);
-  assert(array.size() == SIZE);
+  assert(array.size() == (PAGE_SIZE * TABLE_SIZE * SECONDARY_TABLE_SIZE));
   storage_node_id = array.storage_node_id();
 
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     const bool value = (i % 3) != 0;
     assert(array.set(i, value));
   }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     const bool expected_value = (i % 3) != 0;
     bool value;
     assert(array.get(i, &value));
     assert(value == expected_value);
   }
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     const bool expected_value = (i % 3) != 0;
     assert(array[i] == expected_value);
   }
-  for (std::uint64_t i = 0; i < (SIZE / PAGE_SIZE); ++i) {
+  for (std::uint64_t i = 0; i < (array.size() / array.page_size()); ++i) {
     assert(array.get_page(i));
   }
 
+  // Open the Array.
   assert(array.open(storage.get(), storage_node_id));
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     const bool expected_value = (i % 3) != 0;
     bool value;
     assert(array.get(i, &value));
     assert(value == expected_value);
   }
 
+  // Create an Array with default value.
   assert(array.create(storage.get(), grnxx::STORAGE_ROOT_NODE_ID, true));
   assert(array);
-  for (std::uint64_t i = 0; i < SIZE; ++i) {
+  for (std::uint64_t i = 0; i < array.size(); ++i) {
     assert(array[i]);
   }
 }
@@ -233,9 +142,9 @@ int main() {
                            grnxx::LOGGER_ENABLE_COUT);
   grnxx::Logger::set_max_level(grnxx::NOTICE_LOGGER);
 
-  test_array1d();
-  test_array2d();
-  test_array3d();
+  test_array<64,  1,  1>();
+  test_array<64, 32,  1>();
+  test_array<64, 32, 16>();
   test_bit_array();
 
   return 0;
-------------- next part --------------
HTML����������������������������...
下载 



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