[Groonga-commit] groonga/groonga [master] [table_create] added tests for invalid option value check.

Back to archive index

null+****@clear***** null+****@clear*****
2012年 2月 10日 (金) 16:05:01 JST


Kouhei Sutou	2012-02-10 16:05:01 +0900 (Fri, 10 Feb 2012)

  New Revision: ae285c55b4cb07be254cca6576a92a23e00ab9df

  Log:
    [table_create] added tests for invalid option value check.

  Modified files:
    lib/proc.c
    test/unit/core/test-command-table-create.c

  Modified: lib/proc.c (+9 -7)
===================================================================
--- lib/proc.c    2012-02-10 15:56:51 +0900 (b8fb21e)
+++ lib/proc.c    2012-02-10 16:05:01 +0900 (f5fa56e)
@@ -863,11 +863,8 @@ proc_table_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
                              value_type);
     if (table) {
       grn_obj *tokenizer_name;
-      grn_obj *normalizer_name;
 
       tokenizer_name = VAR(4);
-      normalizer_name = VAR(5);
-
       if (GRN_TEXT_LEN(tokenizer_name)) {
         grn_obj *tokenizer;
 
@@ -886,7 +883,12 @@ proc_table_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
           table = NULL;
         }
       }
+    }
+
+    if (table) {
+      grn_obj *normalizer_name;
 
+      normalizer_name = VAR(5);
       if (GRN_TEXT_LEN(normalizer_name)) {
         grn_obj *normalizer;
 
@@ -897,7 +899,7 @@ proc_table_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
           grn_obj_set_info(ctx, table, GRN_INFO_NORMALIZER, normalizer);
         } else {
           ERR(GRN_INVALID_ARGUMENT,
-              "[table][create] unknown normalizer is specified: ",
+              "[table][create] unknown normalizer is specified: "
               "<%.*s> (%.*s)",
               GRN_TEXT_LEN(table_name), GRN_TEXT_VALUE(table_name),
               GRN_TEXT_LEN(normalizer_name), GRN_TEXT_VALUE(normalizer_name));
@@ -905,10 +907,10 @@ proc_table_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
           table = NULL;
         }
       }
+    }
 
-      if (table) {
-        grn_obj_unlink(ctx, table);
-      }
+    if (table) {
+      grn_obj_unlink(ctx, table);
     }
   } else {
     ERR(GRN_INVALID_ARGUMENT,

  Modified: test/unit/core/test-command-table-create.c (+51 -18)
===================================================================
--- test/unit/core/test-command-table-create.c    2012-02-10 15:56:51 +0900 (0b73c66)
+++ test/unit/core/test-command-table-create.c    2012-02-10 16:05:01 +0900 (7e3b70b)
@@ -31,12 +31,13 @@ void test_default_tokenizer(void);
 void test_normalizer(void);
 
 void test_invalid_name(void);
+void test_default_tokenizer_nonexistent(void);
 
 static gchar *tmp_directory;
 static const gchar *database_path;
 
 static grn_ctx *context;
-static grn_obj *database, *users;
+static grn_obj *database, *table;
 
 void
 cut_startup(void)
@@ -69,14 +70,14 @@ cut_setup(void)
 
   database_path = cut_build_path(tmp_directory, "database.groonga", NULL);
   database = grn_db_create(context, database_path, NULL);
-  users = NULL;
+  table = NULL;
 }
 
 void
 cut_teardown(void)
 {
   if (context) {
-    grn_obj_unlink(context, users);
+    grn_obj_unlink(context, table);
     grn_obj_close(context, database);
     grn_ctx_fin(context);
     g_free(context);
@@ -86,42 +87,49 @@ cut_teardown(void)
 }
 
 static void
-grn_test_assert_users_exist(void)
+grn_test_assert_exist(const gchar *table_name)
 {
-  const gchar *users_name = "Users";
-  users = grn_ctx_get(context, users_name, strlen(users_name));
+  table = grn_ctx_get(context, table_name, strlen(table_name));
+  grn_test_assert_not_null(context, table);
+}
+
+static void
+grn_test_assert_not_exist(const gchar *table_name)
+{
+  table = grn_ctx_get(context, table_name, strlen(table_name));
+  grn_test_assert_null(context, table);
 }
 
 void
 test_hash_key(void)
 {
   assert_send_command("table_create Users TABLE_HASH_KEY ShortText");
-  grn_test_assert_users_exist();
-  grn_test_assert_equal_type(context, GRN_TABLE_HASH_KEY, users->header.type);
+  grn_test_assert_exist("Users");
+  grn_test_assert_equal_type(context, GRN_TABLE_HASH_KEY, table->header.type);
 }
 
 void
 test_pat_key(void)
 {
   assert_send_command("table_create Users TABLE_PAT_KEY ShortText");
-  grn_test_assert_users_exist();
-  grn_test_assert_equal_type(context, GRN_TABLE_PAT_KEY, users->header.type);
+  grn_test_assert_exist("Users");
+  grn_test_assert_equal_type(context, GRN_TABLE_PAT_KEY, table->header.type);
 }
 
 void
 test_dat_key(void)
 {
   assert_send_command("table_create Users TABLE_DAT_KEY ShortText");
-  grn_test_assert_users_exist();
-  grn_test_assert_equal_type(context, GRN_TABLE_DAT_KEY, users->header.type);
+  grn_test_assert_exist("Users");
+  grn_test_assert_equal_type(context, GRN_TABLE_DAT_KEY, table->header.type);
 }
 
 void
 test_no_key(void)
 {
   assert_send_command("table_create Users TABLE_NO_KEY");
-  grn_test_assert_users_exist();
-  grn_test_assert_equal_type(context, GRN_TABLE_NO_KEY, users->header.type);
+  grn_test_assert_exist("Users");
+  grn_test_assert_equal_type(context, GRN_TABLE_NO_KEY, table->header.type);
 }
 
 void
@@ -130,8 +138,8 @@ test_default_tokenizer(void)
   grn_obj *tokenizer;
   assert_send_command("table_create Users TABLE_PAT_KEY ShortText "
                       "--default_tokenizer TokenBigram");
-  grn_test_assert_users_exist();
-  tokenizer = grn_obj_get_info(context, users, GRN_INFO_DEFAULT_TOKENIZER, NULL);
+  grn_test_assert_exist("Users");
+  tokenizer = grn_obj_get_info(context, table, GRN_INFO_DEFAULT_TOKENIZER, NULL);
   grn_test_assert_equal_id(context,
                            GRN_DB_BIGRAM,
                            grn_obj_id(context, tokenizer));
@@ -143,8 +151,8 @@ test_normalizer(void)
   grn_obj *normalizer;
   assert_send_command("table_create Users TABLE_PAT_KEY ShortText "
                       "--normalizer NormalizerASCII");
-  grn_test_assert_users_exist();
-  normalizer = grn_obj_get_info(context, users, GRN_INFO_NORMALIZER, NULL);
+  grn_test_assert_exist("Users");
+  normalizer = grn_obj_get_info(context, table, GRN_INFO_NORMALIZER, NULL);
   grn_test_assert_equal_id(context,
                            GRN_DB_NORMALIZER_ASCII,
                            grn_obj_id(context, normalizer));
@@ -160,3 +168,28 @@ test_invalid_name(void)
     "contains only 0-9, A-Z, a-z, #, - or _: <_Users>",
     "table_create _Users");
 }
+
+void
+test_default_tokenizer_nonexistent(void)
+{
+  grn_test_assert_send_command_error(
+    context,
+    GRN_INVALID_ARGUMENT,
+    "[table][create] unknown default tokenizer is specified: "
+    "<Users> (nonexistent)",
+    "table_create Users TABLE_PAT_KEY ShortText "
+    "--default_tokenizer nonexistent");
+  grn_test_assert_not_exist("Users");
+}
+
+void
+test_normalizer_nonexistent(void)
+{
+  grn_test_assert_send_command_error(
+    context,
+    GRN_INVALID_ARGUMENT,
+    "[table][create] unknown normalizer is specified: <Users> (nonexistent)",
+    "table_create Users TABLE_PAT_KEY ShortText "
+    "--normalizer nonexistent");
+  grn_test_assert_not_exist("Users");
+}




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