OSDN Git Service

* Added test code of the qs_get_selected_value() function.
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Fri, 2 May 2008 18:42:19 +0000 (18:42 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Fri, 2 May 2008 18:42:19 +0000 (18:42 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/RELEASE_0_12_0@2608 1a406e8e-add9-4483-a2c8-d8cac5b7c224

include/chxj_tag_util.h
src/chxj_hdml.c
src/chxj_tag_util.c
test/chxj_tag_util/test_chxj_tag_util.c

index 40580c2..21db287 100644 (file)
@@ -28,6 +28,7 @@ extern char *qs_get_value_attr  (Doc *doc, Node *tag, apr_pool_t *pool);
 extern char *qs_get_checked_attr(Doc *doc, Node *tag, apr_pool_t *pool);
 extern char *qs_get_type_attr   (Doc *doc, Node *tag, apr_pool_t *pool);
 extern char *qs_get_selected_value_text(Doc *doc, Node *node, apr_pool_t *pool);
+extern char *qs_get_selected_value(Doc *doc, Node *node, apr_pool_t *pool);
 
 extern char* qs_get_name_attr(
   Doc*         doc,
@@ -60,10 +61,6 @@ extern int qs_is_checked_checkbox_attr(
   request_rec* r);
 
 
-extern char* qs_get_selected_value(
-  Doc*         doc, 
-  Node*        node,
-  request_rec* r);
 
 
 
index 7f9f301..b4e839a 100644 (file)
@@ -2385,7 +2385,7 @@ s_hdml_start_select_tag(void *pdoc, Node *node)
                               value,
                               s_get_form_no(r, hdml),
                               hdml->var_cnt[hdml->pure_form_cnt]));
-      selval = qs_get_selected_value(doc, node, r);
+      selval = qs_get_selected_value(doc, node, r->pool);
       if (! selval) {
         DBG(r, "selected value not found");
         selval = qs_alloc_zero_byte_string(r->pool);
index 1525938..573b9eb 100644 (file)
@@ -236,12 +236,12 @@ qs_get_selected_value_text(Doc *doc, Node *node, apr_pool_t *pool)
  * @param doc    [i]  The pointer to the Doc structure to be scanned is 
  *                    specified. 
  * @param node   [i]  The SELECT tag node is specified.
- * @param r    [i] To use POOL, the pointer to request_rec is specified.
+ * @param pool   [i] To use POOL.
  * @return The value of tag that maintains the SELECTED attribute is 
  *         returned. NULL is returned when not found. 
  */
 char *
-qs_get_selected_value(Doc *doc, Node *node, request_rec *r)
+qs_get_selected_value(Doc *doc, Node *node, apr_pool_t *pool)
 {
   Node *child;
   char *result    = NULL;
@@ -268,7 +268,7 @@ qs_get_selected_value(Doc *doc, Node *node, request_rec *r)
       }
     }
 
-    if ((result = qs_get_selected_value(doc, child, r)) != NULL) {
+    if ((result = qs_get_selected_value(doc, child, pool)) != NULL) {
       return result;
     }
   }
index 9e4ded6..236e618 100644 (file)
@@ -60,6 +60,14 @@ void test_qs_get_selected_value_text_002();
 void test_qs_get_selected_value_text_003();
 void test_qs_get_selected_value_text_004();
 void test_qs_get_selected_value_text_005();
+/*===========================================================================*/
+/* qs_get_selected_value()                                                   */
+/*===========================================================================*/
+void test_qs_get_selected_value_001();
+void test_qs_get_selected_value_002();
+void test_qs_get_selected_value_003();
+void test_qs_get_selected_value_004();
+void test_qs_get_selected_value_005();
 /* pend */
 
 void test_log_rerror(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...)
@@ -127,6 +135,14 @@ main()
   CU_add_test(str_util_suite, "qs_get_selected_value_text() 003",                      test_qs_get_selected_value_text_003);
   CU_add_test(str_util_suite, "qs_get_selected_value_text() 004",                      test_qs_get_selected_value_text_004);
   CU_add_test(str_util_suite, "qs_get_selected_value_text() 005",                      test_qs_get_selected_value_text_005);
+  /*=========================================================================*/
+  /* qs_get_selected_value()                                                 */
+  /*=========================================================================*/
+  CU_add_test(str_util_suite, "qs_get_selected_value() 001",                           test_qs_get_selected_value_001);
+  CU_add_test(str_util_suite, "qs_get_selected_value() 002",                           test_qs_get_selected_value_002);
+  CU_add_test(str_util_suite, "qs_get_selected_value() 003",                           test_qs_get_selected_value_003);
+  CU_add_test(str_util_suite, "qs_get_selected_value() 004",                           test_qs_get_selected_value_004);
+  CU_add_test(str_util_suite, "qs_get_selected_value() 005",                           test_qs_get_selected_value_005);
   /* aend */
 
   CU_basic_run_tests();
@@ -145,6 +161,7 @@ main()
     apr_pool_create(&p, NULL); \
     memset(&doc, 0, sizeof(Doc)); \
     doc.pool = p; \
+    doc.buf.pool = p; \
   } \
   while (0)
 
@@ -519,6 +536,92 @@ void test_qs_get_selected_value_text_005()
 #undef RESULT_STRING
 #undef TEST_STRING
 }
+/*===========================================================================*/
+/* qs_get_selected_value()                                                   */
+/*===========================================================================*/
+void test_qs_get_selected_value_001()
+{
+#define TEST_STRING "<select><option value='1' selected>a</option><option value='2'>b</option></select>"
+#define RESULT_STRING "1"
+  Node *node;
+  char *ret;
+  APR_INIT;
+  node = qs_parse_string(&doc, TEST_STRING, sizeof(TEST_STRING)); 
+  ret = qs_get_selected_value(&doc, node, p);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(ret, RESULT_STRING) == 0);
+
+  APR_TERM;
+#undef RESULT_STRING
+#undef TEST_STRING
+}
+void test_qs_get_selected_value_002()
+{
+#define TEST_STRING "<select><option value='1'>a</option><option value='2' selected>b</option></select>"
+#define RESULT_STRING "2"
+  Node *node;
+  char *ret;
+  APR_INIT;
+  node = qs_parse_string(&doc, TEST_STRING, sizeof(TEST_STRING)); 
+  ret = qs_get_selected_value(&doc, node, p);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(ret, RESULT_STRING) == 0);
+
+  APR_TERM;
+#undef RESULT_STRING
+#undef TEST_STRING
+}
+void test_qs_get_selected_value_003()
+{
+#define TEST_STRING "<select><option value='1' selected></option></select>"
+#define RESULT_STRING "1"
+  Node *node;
+  char *ret;
+  APR_INIT;
+  node = qs_parse_string(&doc, TEST_STRING, sizeof(TEST_STRING)); 
+  ret = qs_get_selected_value(&doc, node, p);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(ret, RESULT_STRING) == 0);
+
+  APR_TERM;
+#undef RESULT_STRING
+#undef TEST_STRING
+}
+void test_qs_get_selected_value_004()
+{
+#define TEST_STRING "<select><option value='1'><option value='2'></option></select>"
+#define RESULT_STRING NULL
+  Node *node;
+  char *ret;
+  APR_INIT;
+  node = qs_parse_string(&doc, TEST_STRING, sizeof(TEST_STRING)); 
+  ret = qs_get_selected_value(&doc, node, p);
+  CU_ASSERT(ret == RESULT_STRING);
+
+  APR_TERM;
+#undef RESULT_STRING
+#undef TEST_STRING
+}
+void test_qs_get_selected_value_005()
+{
+#define TEST_STRING "<select></select>"
+#define RESULT_STRING NULL
+  Node *node;
+  char *ret;
+  APR_INIT;
+  node = qs_parse_string(&doc, TEST_STRING, sizeof(TEST_STRING)); 
+  ret = qs_get_selected_value(&doc, node, p);
+  CU_ASSERT(ret == RESULT_STRING);
+
+  APR_TERM;
+#undef RESULT_STRING
+#undef TEST_STRING
+}
 /*
  * vim:ts=2 et
  */