[Groonga-commit] groonga/grnxx at d90316a [master] Add tests for grnxx::Map<grnxx::Bytes>.

アーカイブの一覧に戻る

susumu.yata null+****@clear*****
Thu May 30 00:23:47 JST 2013


susumu.yata	2013-05-30 00:23:47 +0900 (Thu, 30 May 2013)

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

  Message:
    Add tests for grnxx::Map<grnxx::Bytes>.

  Modified files:
    test/test_map.cpp

  Modified: test/test_map.cpp (+35 -23)
===================================================================
--- test/test_map.cpp    2013-05-30 00:09:50 +0900 (e679f7e)
+++ test/test_map.cpp    2013-05-30 00:23:47 +0900 (7b28159)
@@ -60,7 +60,6 @@ template <>
 struct Hash<grnxx::GeoPoint> {
   using ValueArg = typename grnxx::Traits<grnxx::GeoPoint>::ArgumentType;
   uint64_t operator()(ValueArg x) const {
-    // TODO: To be replaced with grnxx's hash function.
     return std::hash<std::uint64_t>()(x.value());
   }
 };
@@ -674,16 +673,30 @@ void test_map_replace(grnxx::MapType map_type) {
 }
 
 template <typename T>
-void test_map_find_longest_prefix_match(grnxx::MapType map_type) {
+void test_map_find_longest_prefix_match(grnxx::MapType) {
+  // Only grnxx::Map<grnxx::Bytes> supports this operation.
+}
+
+template <>
+void test_map_find_longest_prefix_match<grnxx::Bytes>(grnxx::MapType map_type) {
   std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
-  std::unique_ptr<grnxx::Map<T>> map(
-      grnxx::Map<T>::create(map_type, storage.get(),
-                            grnxx::STORAGE_ROOT_NODE_ID));
+  std::unique_ptr<grnxx::Map<grnxx::Bytes>> map(
+      grnxx::Map<grnxx::Bytes>::create(map_type, storage.get(),
+                                       grnxx::STORAGE_ROOT_NODE_ID));
   assert(map);
-  std::vector<T> keys;
+  std::vector<grnxx::Bytes> keys;
   generate_random_keys(MAP_NUM_KEYS, &keys);
 
-  // TODO
+  for (std::uint64_t i = 0; i < MAP_NUM_KEYS; ++i) {
+    assert(map->add(keys[i]));
+  }
+  for (std::uint64_t i = 0; i < MAP_NUM_KEYS; ++i) {
+    std::int64_t key_id;
+    grnxx::Bytes key;
+    assert(map->find_longest_prefix_match(keys[i], &key_id, &key));
+    assert(key_id == static_cast<std::int64_t>(i));
+    assert(key == keys[i]);
+  }
 }
 
 template <typename T>
@@ -916,20 +929,19 @@ void test_map_create_scanner(grnxx::MapType) {
   // Only grnxx::Map<grnxx::Bytes> supports this operation.
 }
 
-// TODO
-//template <>
-//void test_map_create_scanner<grnxx::Bytes>(grnxx::MapType map_type) {
-//  std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
-//  std::unique_ptr<grnxx::Map<grnxx::Bytes>> map(
-//      grnxx::Map<grnxx::Bytes>::create(map_type, storage.get(),
-//                                       grnxx::STORAGE_ROOT_NODE_ID));
-//  assert(map);
-//  const grnxx::Bytes text = generate_random_text<grnxx::Bytes>();
-//  std::unique_ptr<grnxx::MapScanner<grnxx::Bytes>> scanner;
-
-//  scanner.reset(map->create_scanner(text));
-//  assert(scanner);
-//}
+template <>
+void test_map_create_scanner<grnxx::Bytes>(grnxx::MapType map_type) {
+  std::unique_ptr<grnxx::Storage> storage(grnxx::Storage::create(nullptr));
+  std::unique_ptr<grnxx::Map<grnxx::Bytes>> map(
+      grnxx::Map<grnxx::Bytes>::create(map_type, storage.get(),
+                                       grnxx::STORAGE_ROOT_NODE_ID));
+  assert(map);
+  const grnxx::Bytes text = generate_random_text<grnxx::Bytes>();
+  std::unique_ptr<grnxx::MapScanner<grnxx::Bytes>> scanner;
+
+  scanner.reset(map->create_scanner(text));
+  assert(scanner);
+}
 
 template <typename T>
 void test_map(grnxx::MapType map_type) {
@@ -995,7 +1007,6 @@ void test_bytes_array() {
 }
 
 void test_map() {
-  // TODO: Add grnxx::Bytes.
   test_map(std::int8_t(),
            std::uint8_t(),
            std::int16_t(),
@@ -1005,7 +1016,8 @@ void test_map() {
            std::int64_t(),
            std::uint64_t(),
            double(),
-           grnxx::GeoPoint());
+           grnxx::GeoPoint(),
+           grnxx::Bytes());
 }
 
 }  // namespace
-------------- next part --------------
HTML����������������������������...
ダウンロード 



More information about the Groonga-commit mailing list
アーカイブの一覧に戻る