[Groonga-commit] groonga/groonga [master] added tests for grn_dat_lcp_search() and grn_dat_next().

Back to archive index

null+****@clear***** null+****@clear*****
2011年 12月 27日 (火) 10:55:00 JST


Susumu Yata	2011-12-27 10:55:00 +0900 (Tue, 27 Dec 2011)

  New Revision: 0f69c934368ddb4370bdf29f71c5ccb2c64982fe

  Log:
    added tests for grn_dat_lcp_search() and grn_dat_next().

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

  Modified: test/unit/core/dat/test-dat.cpp (+66 -0)
===================================================================
--- test/unit/core/dat/test-dat.cpp    2011-12-27 10:51:18 +0900 (93a06f6)
+++ test/unit/core/dat/test-dat.cpp    2011-12-27 10:55:00 +0900 (1e02f80)
@@ -423,6 +423,48 @@ namespace test_dat
     cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
   }
 
+  void test_lcp_search(void)
+  {
+    {
+      std::vector<std::string> keys;
+      keys.push_back("012");
+      keys.push_back("01234");
+      keys.push_back("0123456");
+
+      grn_dat * const dat = create_trie(keys, NULL);
+      cppcut_assert_equal(static_cast<grn_id>(GRN_ID_NIL),
+                          grn_dat_lcp_search(&ctx, dat, "01", 2));
+      cppcut_assert_equal(static_cast<grn_id>(1),
+                          grn_dat_lcp_search(&ctx, dat, "012", 3));
+      cppcut_assert_equal(static_cast<grn_id>(1),
+                          grn_dat_lcp_search(&ctx, dat, "0123", 4));
+      cppcut_assert_equal(static_cast<grn_id>(2),
+                          grn_dat_lcp_search(&ctx, dat, "01234", 5));
+      cppcut_assert_equal(static_cast<grn_id>(2),
+                          grn_dat_lcp_search(&ctx, dat, "012345", 6));
+      cppcut_assert_equal(static_cast<grn_id>(3),
+                          grn_dat_lcp_search(&ctx, dat, "0123456", 7));
+      cppcut_assert_equal(static_cast<grn_id>(3),
+                          grn_dat_lcp_search(&ctx, dat, "0123456789", 10));
+      cppcut_assert_equal(static_cast<grn_id>(GRN_ID_NIL),
+                          grn_dat_lcp_search(&ctx, dat, "013", 3));
+    }
+
+    {
+      std::vector<std::string> keys;
+      create_keys(&keys, 1000, 6, 15);
+
+      grn_dat * const dat = create_trie(keys, NULL);
+      for (std::size_t i = 0; i < keys.size(); ++i) {
+        const grn_id key_id = static_cast<grn_id>(i + 1);
+        const char * const ptr = keys[i].c_str();
+        const uint32_t length = static_cast<uint32_t>(keys[i].length());
+        cppcut_assert_equal(key_id, grn_dat_lcp_search(&ctx, dat, ptr, length));
+      }
+      cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+    }
+  }
+
   void test_size(void)
   {
     std::vector<std::string> keys;
@@ -490,6 +532,30 @@ namespace test_dat
     cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
   }
 
+  void test_next(void)
+  {
+    std::vector<std::string> keys;
+    create_keys(&keys, 1000, 6, 15);
+
+    grn_dat * const dat = create_trie(keys, NULL);
+    for (std::size_t i = 0; i < keys.size(); i += 2) {
+      const grn_id key_id = static_cast<grn_id>(i + 1);
+      cppcut_assert_equal(GRN_SUCCESS,
+                          grn_dat_delete_by_id(&ctx, dat, key_id, NULL));
+    }
+    for (std::size_t i = 0; i < (keys.size() - 1); ++i) {
+      const grn_id key_id = static_cast<grn_id>(i + 1);
+      if (!(i & 1)) {
+        cppcut_assert_equal(key_id + 1, grn_dat_next(&ctx, dat, key_id));
+      } else {
+        cppcut_assert_equal(key_id + 2, grn_dat_next(&ctx, dat, key_id));
+      }
+    }
+    cppcut_assert_equal(static_cast<grn_id>(GRN_ID_NIL),
+                        grn_dat_next(&ctx, dat, keys.size()));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+  }
+
   void test_at(void)
   {
     std::vector<std::string> keys;




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