[Groonga-commit] groonga/groonga [master] updated a test that compares grn_pat and grn_dat.

Back to archive index

null+****@clear***** null+****@clear*****
2011年 11月 18日 (金) 20:25:11 JST


Susumu Yata	2011-11-18 11:25:11 +0000 (Fri, 18 Nov 2011)

  New Revision: 39dd5466de065a2600ad50446672e3a049d71c44

  Log:
    updated a test that compares grn_pat and grn_dat.

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

  Modified: test/unit/core/dat/test-dat-pat.cpp (+181 -4)
===================================================================
--- test/unit/core/dat/test-dat-pat.cpp    2011-11-18 11:14:44 +0000 (9e6300e)
+++ test/unit/core/dat/test-dat-pat.cpp    2011-11-18 11:25:11 +0000 (826f5e5)
@@ -23,6 +23,8 @@
 #include <cppcutter.h>
 
 #include <grn-assertions.h>
+#include <dat.h>
+#include <pat.h>
 
 #include <algorithm>
 #include <cstdio>
@@ -32,6 +34,8 @@
 #include <string>
 #include <vector>
 
+#include <iostream>
+
 namespace
 {
   void create_key(std::string *key, std::size_t min_length, std::size_t max_length)
@@ -81,11 +85,22 @@ namespace test_dat_pat
     }
   }
 
+  void generate_pat_path(const char *filename, char *path)
+  {
+    std::sprintf(path, "%s/%s.pat", base_dir, filename);
+  }
+
+  void generate_dat_path(const char *filename, char *path)
+  {
+    std::sprintf(path, "%s/%s.dat", base_dir, filename);
+  }
+
   grn_pat *create_pat(const char *filename, const std::vector<std::string> &keys)
   {
     char pat_path[PATH_MAX];
-    std::sprintf(pat_path, "%s/%s.pat", base_dir, filename);
-    grn_pat * const pat = grn_pat_create(&ctx, NULL, 1024, 0, GRN_OBJ_KEY_VAR_SIZE);
+    generate_pat_path(filename, pat_path);
+    grn_pat * const pat = grn_pat_create(&ctx, pat_path,
+                                         1024, 0, GRN_OBJ_KEY_VAR_SIZE);
     cut_assert_not_null(pat);
 
     for (std::size_t i = 0; i < keys.size(); ++i) {
@@ -97,8 +112,9 @@ namespace test_dat_pat
   grn_dat *create_dat(const char *filename, const std::vector<std::string> &keys)
   {
     char dat_path[PATH_MAX];
-    std::sprintf(dat_path, "%s/%s.dat", base_dir, filename);
-    grn_dat * const dat = grn_dat_create(&ctx, NULL, 1024, 0, GRN_OBJ_KEY_VAR_SIZE);
+    generate_dat_path(filename, dat_path);
+    grn_dat * const dat = grn_dat_create(&ctx, dat_path,
+                                         1024, 0, GRN_OBJ_KEY_VAR_SIZE);
     cut_assert_not_null(dat);
 
     for (std::size_t i = 0; i < keys.size(); ++i) {
@@ -107,6 +123,73 @@ namespace test_dat_pat
     return dat;
   }
 
+  void test_open(void)
+  {
+    const char * const filename = "test_open";
+
+    char pat_path[PATH_MAX];
+    char dat_path[PATH_MAX];
+
+    generate_pat_path(filename, pat_path);
+    generate_dat_path(filename, dat_path);
+
+    cut_assert_not_exist_path(pat_path);
+    cut_assert_not_exist_path(dat_path);
+
+    grn_pat *pat = grn_pat_open(&ctx, pat_path);
+    grn_dat *dat = grn_dat_open(&ctx, dat_path);
+
+    cut_assert_null(pat);
+    cut_assert_null(dat);
+
+    std::vector<std::string> keys;
+    create_keys(&keys, 1000, 3, 5);
+    pat = create_pat(filename, keys);
+    dat = create_dat(filename, keys);
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+
+    cut_assert_exist_path(pat_path);
+    cut_assert_exist_path(dat_path);
+
+    pat = grn_pat_open(&ctx, pat_path);
+    dat = grn_dat_open(&ctx, dat_path);
+
+    cut_assert_not_null(pat);
+    cut_assert_not_null(dat);
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+  }
+
+  void test_remove(void)
+  {
+    const char * const filename = "test_remove";
+
+    std::vector<std::string> keys;
+    grn_pat * const pat = create_pat(filename, keys);
+    grn_dat * const dat = create_dat(filename, keys);
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+
+    char pat_path[PATH_MAX];
+    char dat_path[PATH_MAX];
+
+    generate_pat_path(filename, pat_path);
+    generate_dat_path(filename, dat_path);
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_remove(&ctx, pat_path));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_remove(&ctx, dat_path));
+
+    cut_assert_not_exist_path(pat_path);
+    cut_assert_not_exist_path(dat_path);
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_remove(&ctx, pat_path));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_remove(&ctx, dat_path));
+  }
+
   void test_get(void)
   {
     const char * const filename = "test_get";
@@ -156,6 +239,72 @@ namespace test_dat_pat
                                         key.length(), NULL, &dat_added);
       cppcut_assert_equal(pat_id, dat_id);
       cppcut_assert_equal(pat_added, dat_added);
+
+      cppcut_assert_equal(grn_pat_size(&ctx, pat), grn_dat_size(&ctx, dat));
+      cppcut_assert_equal(grn_pat_curr_id(&ctx, pat), grn_dat_curr_id(&ctx, dat));
+    }
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+  }
+
+  void test_delete_by_id(void)
+  {
+    const char * const filename = "test_delete_by_id";
+
+    std::vector<std::string> keys;
+    create_keys(&keys, 1000, 3, 5);
+    grn_pat * const pat = create_pat(filename, keys);
+    grn_dat * const dat = create_dat(filename, keys);
+
+    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_pat_delete_by_id(&ctx, pat, key_id, NULL));
+      cppcut_assert_equal(GRN_SUCCESS,
+                          grn_dat_delete_by_id(&ctx, dat, key_id, NULL));
+    }
+
+    cut_omit("Not fixed yet.");
+
+    for (std::size_t i = 0; i < keys.size(); ++i) {
+      const grn_id key_id = static_cast<grn_id>(i + 1);
+      const grn_rc rc = (key_id & 1) ? GRN_SUCCESS : GRN_INVALID_ARGUMENT;
+      cppcut_assert_equal(rc, grn_pat_delete_by_id(&ctx, pat, key_id, NULL));
+      cppcut_assert_equal(rc, grn_dat_delete_by_id(&ctx, dat, key_id, NULL));
+    }
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+  }
+
+  void test_delete(void)
+  {
+    const char * const filename = "test_delete";
+
+    std::vector<std::string> keys;
+    create_keys(&keys, 1000, 3, 5);
+    grn_pat * const pat = create_pat(filename, keys);
+    grn_dat * const dat = create_dat(filename, keys);
+
+    for (std::size_t i = 0; i < keys.size(); i += 2) {
+      const char * const ptr = keys[i].c_str();
+      const uint32_t length = static_cast<uint32_t>(keys[i].length());
+      const grn_id key_id = static_cast<grn_id>(i + 1);
+      cppcut_assert_equal(GRN_SUCCESS,
+                          grn_pat_delete(&ctx, pat, ptr, length, NULL));
+      cppcut_assert_equal(GRN_SUCCESS,
+                          grn_dat_delete(&ctx, dat, ptr, length, NULL));
+    }
+
+    cut_omit("Not fixed yet.");
+
+    for (std::size_t i = 0; i < keys.size(); ++i) {
+      const char * const ptr = keys[i].c_str();
+      const uint32_t length = static_cast<uint32_t>(keys[i].length());
+      const grn_rc rc = (i & 1) ? GRN_INVALID_ARGUMENT : GRN_SUCCESS;
+      cppcut_assert_equal(rc, grn_pat_delete(&ctx, pat, ptr, length, NULL));
+      cppcut_assert_equal(rc, grn_dat_delete(&ctx, dat, ptr, length, NULL));
     }
 
     cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
@@ -387,4 +536,32 @@ namespace test_dat_pat
     cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
     cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
   }
+
+  void test_truncate(void)
+  {
+    const char * const filename = "test_truncate";
+
+    std::vector<std::string> keys;
+    create_keys(&keys, 1000, 3, 5);
+    grn_pat * const pat = create_pat(filename, keys);
+    grn_dat * const dat = create_dat(filename, keys);
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_truncate(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_truncate(&ctx, dat));
+
+    cppcut_assert_equal(static_cast<unsigned int>(0), grn_pat_size(&ctx, pat));
+    cppcut_assert_equal(static_cast<unsigned int>(0), grn_dat_size(&ctx, dat));
+
+    for (std::size_t i = 0; i < keys.size(); ++i) {
+      const char * const ptr = keys[i].c_str();
+      const uint32_t length = static_cast<uint32_t>(keys[i].length());
+      cppcut_assert_equal(static_cast<grn_id>(GRN_ID_NIL),
+                          grn_pat_get(&ctx, pat, ptr, length, NULL));
+      cppcut_assert_equal(static_cast<grn_id>(GRN_ID_NIL),
+                          grn_dat_get(&ctx, dat, ptr, length, NULL));
+    }
+
+    cppcut_assert_equal(GRN_SUCCESS, grn_pat_close(&ctx, pat));
+    cppcut_assert_equal(GRN_SUCCESS, grn_dat_close(&ctx, dat));
+  }
 }




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