OSDN Git Service

* Fixed bug.
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sat, 5 Apr 2008 08:50:35 +0000 (08:50 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sat, 5 Apr 2008 08:50:35 +0000 (08:50 +0000)
    - chxj_encoding and chxj_rencoding invalid destlen.

git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/RELEASE_0_11_0@1993 1a406e8e-add9-4483-a2c8-d8cac5b7c224

include/mod_chxj.h
src/chxj_chtml10.c
src/chxj_encoding.c
test/chxj_chtml10/.tb.test_chxj_chtml10.c.tags
test/chxj_chtml10/test_chxj_chtml10.c

index 0f35980..b594f51 100644 (file)
@@ -196,13 +196,13 @@ struct emoji_t {
 typedef struct chxjconvrule_entry chxjconvrule_entry;
 
 struct chxjconvrule_entry {
-  char*        pattern;
-  ap_regex_t*  regexp;
+  char         *pattern;
+  ap_regex_t   *regexp;
   int          flags;
   int          action;
-  char*        encoding;
+  char         *encoding;
   int          pc_flag;
-  char*        user_agent;
+  char         *user_agent;
 };
 
 typedef struct tag_handler tag_handler;
index 58dcdd9..e59ee71 100644 (file)
@@ -529,7 +529,7 @@ s_chtml10_start_html_tag(void* pdoc, Node* UNUSED(node))
   /*--------------------------------------------------------------------------*/
   /* start HTML tag                                                           */
   /*--------------------------------------------------------------------------*/
-  W10_L("<html>\n");
+  W10_L("<html>");
 
   return chtml10->out;
 }
@@ -555,7 +555,7 @@ s_chtml10_end_html_tag(void* pdoc, Node* UNUSED(child))
   doc     = chtml10->doc;
   r       = doc->r;
 
-  W10_L("</html>\n");
+  W10_L("</html>");
 
   return chtml10->out;
 }
@@ -620,7 +620,7 @@ s_chtml10_start_head_tag(void* pdoc, Node* UNUSED(node))
   doc     = chtml10->doc;
   r       = doc->r;
 
-  W10_L("<head>\r\n");
+  W10_L("<head>");
 
   return chtml10->out;
 }
@@ -645,7 +645,7 @@ s_chtml10_end_head_tag(void* pdoc, Node* UNUSED(child))
   doc     = chtml10->doc;
   r       = doc->r;
 
-  W10_L("</head>\r\n");
+  W10_L("</head>");
 
   return chtml10->out;
 }
@@ -1305,7 +1305,7 @@ s_chtml10_start_body_tag(void* pdoc, Node* node)
     }
   }
 
-  W10_L(">\r\n");
+  W10_L(">");
 
   return chtml10->out;
 }
@@ -1330,7 +1330,7 @@ s_chtml10_end_body_tag(void* pdoc, Node* UNUSED(child))
   doc     = chtml10->doc;
   r       = doc->r;
 
-  W10_L("</body>\r\n");
+  W10_L("</body>");
 
   return chtml10->out;
 }
index 653adaf..53a45bf 100644 (file)
@@ -22,8 +22,8 @@
 #include <iconv.h>
 
 
-char*
-chxj_encoding(request_rec *r, const char* src, apr_size_t* len)
+char *
+chxj_encoding(request_rec *r, const char *src, apr_size_t *len)
 {
   char*               obuf;
   char*               ibuf;
@@ -100,7 +100,7 @@ chxj_encoding(request_rec *r, const char* src, apr_size_t* len)
       break;
     }
   }
-  *len = olen;
+  *len = strlen(spos);
   iconv_close(cd);
 
   DBG(r,"end   chxj_encoding() len=[%d] obuf=[%.*s]", (int)*len, (int)*len, spos);
@@ -189,7 +189,7 @@ chxj_rencoding(request_rec *r, const char* src, apr_size_t* len)
     }
   }
 
-  *len = olen;
+  *len = strlen(spos);
   iconv_close(cd);
 
   DBG(r,"end   chxj_rencoding() len=[%d] obuf=[%.*s]", (int)*len, (int)*len, spos);
index f4e53ea..f8ef90f 100644 (file)
@@ -4,23 +4,48 @@
 !_TAG_PROGRAM_NAME     Exuberant Ctags //
 !_TAG_PROGRAM_URL      http://ctags.sourceforge.net    /official site/
 !_TAG_PROGRAM_VERSION  5.6     //
-APR_INIT       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        91;"    macro   line:91
-APR_TERM       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        101;"   macro   line:101
+APR_INIT       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        117;"   macro   line:117
+APR_TERM       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        127;"   macro   line:127
 CHXJ_TEST      /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        5;"     macro   line:5
-COOKIE_INIT    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        106;"   macro   line:106
-SPEC_INIT      /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        111;"   macro   line:111
-TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        133;"   macro   line:133
-TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        151;"   macro   line:151
-TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        155;"   macro   line:155
-TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        173;"   macro   line:173
-chxj_apply_convrule    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^chxj_apply_convrule(request_rec* r, apr_array_header_t* convrules)$/;"        function        line:85
-chxj_qr_code_blob_handler      /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^char *chxj_qr_code_blob_handler(request_rec* r, const char* indata, size_t* len)$/;"  function        line:58
-main   /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^main()$/;"    function        line:117
-test_chtml10_001       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_001() $/;"  function        line:131
-test_chtml10_002       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_002() $/;"  function        line:153
-test_get_module_config /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void * test_get_module_config(const ap_conf_vector_t *cv, const module *m)$/;"        function        line:79
-test_log_error /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_log_error(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...)$/;"       function        line:48
-test_log_rerror        /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_log_rerror(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...)$/;"      function        line:39
-test_os_escape_path    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^char *test_os_escape_path(apr_pool_t *p, const char *path, int partial)$/;"   function        line:63
-test_run_http_scheme   /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^const char *test_run_http_scheme(request_rec *r)$/;"  function        line:73
-test_set_content_type  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_set_content_type(request_rec *r, const char *ct)$/;"        function        line:68
+COOKIE_INIT    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        132;"   macro   line:132
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        192;"   macro   line:192
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        212;"   macro   line:212
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        217;"   macro   line:217
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        237;"   macro   line:237
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        242;"   macro   line:242
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        262;"   macro   line:262
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        267;"   macro   line:267
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        287;"   macro   line:287
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        292;"   macro   line:292
+RESULT_STRING  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        312;"   macro   line:312
+SPEC_INIT      /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        137;"   macro   line:137
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        146;"   macro   line:146
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        164;"   macro   line:164
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        168;"   macro   line:168
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        186;"   macro   line:186
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        191;"   macro   line:191
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        211;"   macro   line:211
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        216;"   macro   line:216
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        236;"   macro   line:236
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        241;"   macro   line:241
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        261;"   macro   line:261
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        266;"   macro   line:266
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        286;"   macro   line:286
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        291;"   macro   line:291
+TEST_STRING    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        311;"   macro   line:311
+chxj_apply_convrule    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^chxj_apply_convrule(request_rec* r, apr_array_header_t* convrules)$/;"        function        line:109
+chxj_qr_code_blob_handler      /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^char *chxj_qr_code_blob_handler(request_rec* r, const char* indata, size_t* len)$/;"  function        line:80
+main   /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^main()$/;"    function        line:44
+test_chtml10_001       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_001() $/;"  function        line:144
+test_chtml10_002       /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_002() $/;"  function        line:166
+test_chtml10_a_tag_name_attribute_001  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_a_tag_name_attribute_001() $/;"     function        line:214
+test_chtml10_a_tag_name_attribute_002  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_a_tag_name_attribute_002() $/;"     function        line:239
+test_chtml10_a_tag_name_attribute_003  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_a_tag_name_attribute_003() $/;"     function        line:264
+test_chtml10_a_tag_name_attribute_004  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_a_tag_name_attribute_004() $/;"     function        line:289
+test_chtml10_comment_tag_001   /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_chtml10_comment_tag_001() $/;"      function        line:189
+test_get_module_config /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void * test_get_module_config(const ap_conf_vector_t *cv, const module *m)$/;"        function        line:101
+test_log_error /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_log_error(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...)$/;"       function        line:70
+test_log_rerror        /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_log_rerror(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...)$/;"      function        line:61
+test_os_escape_path    /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^char *test_os_escape_path(apr_pool_t *p, const char *path, int partial)$/;"   function        line:85
+test_run_http_scheme   /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^const char *test_run_http_scheme(request_rec *r)$/;"  function        line:95
+test_set_content_type  /home/konno/work/mod_chxj/mod_chxj/test/chxj_chtml10/test_chxj_chtml10.c        /^void test_set_content_type(request_rec *r, const char *ct)$/;"        function        line:90
index c0cd649..d291ced 100644 (file)
 
 void test_chtml10_001();
 void test_chtml10_002();
+void test_chtml10_comment_tag_001();
+void test_chtml10_a_tag_name_attribute_001(); 
+void test_chtml10_a_tag_name_attribute_002();
+void test_chtml10_a_tag_name_attribute_003();
+void test_chtml10_a_tag_name_attribute_004();
+
+int
+main()
+{
+  CU_pSuite chtml10_suite;
+  CU_initialize_registry();
+  chtml10_suite = CU_add_suite("test chxj_exchange_chtml10()", NULL, NULL);
+  CU_add_test(chtml10_suite, "test void src1",             test_chtml10_001);
+  CU_add_test(chtml10_suite, "test void src2",             test_chtml10_002);
+  CU_add_test(chtml10_suite, "test comment tag1",          test_chtml10_comment_tag_001);
+  CU_add_test(chtml10_suite, "test a tag name attr1",      test_chtml10_a_tag_name_attribute_001); 
+  CU_add_test(chtml10_suite, "test a tag name attr2",      test_chtml10_a_tag_name_attribute_002); 
+  CU_add_test(chtml10_suite, "test a tag name attr3 with japanese.", test_chtml10_a_tag_name_attribute_003); 
+  CU_add_test(chtml10_suite, "test a tag name attr4 with japanese.", test_chtml10_a_tag_name_attribute_004); 
+  CU_basic_run_tests();
+  CU_cleanup_registry();
+
+  return(0);
+}
 
 void test_log_rerror(const char *file, int line, int level, apr_status_t status, const request_rec *r, const char *fmt, ...)
 {
@@ -78,14 +102,18 @@ const char *test_run_http_scheme(request_rec *r)
 
 void * test_get_module_config(const ap_conf_vector_t *cv, const module *m)
 {
-  return NULL;
+  static mod_chxj_config cfg;
+  memset(&cfg, 0, sizeof(mod_chxj_config));
+  return &cfg;
 }
 
 chxjconvrule_entry *
 chxj_apply_convrule(request_rec* r, apr_array_header_t* convrules)
 {
-  chxjconvrule_entry entries;
-  return NULL;
+  static chxjconvrule_entry entries;
+  memset(&entries, 0, sizeof(chxjconvrule_entry));
+  entries.encoding = apr_pstrdup(r->pool, "UTF8");
+  return &entries;
 }
 
 #define APR_INIT \
@@ -113,19 +141,6 @@ chxj_apply_convrule(request_rec* r, apr_array_header_t* convrules)
     X.html_spec_type = CHXJ_SPEC_Chtml_1_0; \
   } while (0)
 
-int
-main()
-{
-  CU_pSuite chtml10_suite;
-  CU_initialize_registry();
-  chtml10_suite = CU_add_suite("test chxj_exchange_chtml10()", NULL, NULL);
-  CU_add_test(chtml10_suite, "test void src1",             test_chtml10_001);
-  CU_add_test(chtml10_suite, "test void src2",             test_chtml10_002);
-  CU_basic_run_tests();
-  CU_cleanup_registry();
-
-  return(0);
-}
 
 
 void test_chtml10_001() 
@@ -173,3 +188,135 @@ void test_chtml10_002()
 #undef TEST_STRING
 }
 
+void test_chtml10_comment_tag_001() 
+{
+#define  TEST_STRING "<html><!--</html><body>--><head></head><body></body></html>"
+#define  RESULT_STRING "<html><head></head><body></body></html>"
+  char  *ret;
+  device_table spec;
+  chxjconvrule_entry entry;
+  cookie_t cookie;
+  apr_size_t destlen;
+  APR_INIT;
+
+  COOKIE_INIT(cookie);
+
+  SPEC_INIT(spec);
+
+  ret = chxj_exchange_chtml10(&r, &spec, TEST_STRING, sizeof(TEST_STRING)-1, &destlen, &entry, &cookie);
+fprintf(stderr, "%s",ret);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
+  CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);
+
+  APR_TERM;
+#undef TEST_STRING
+#undef RESULT_STRING
+}
+void test_chtml10_a_tag_name_attribute_001() 
+{
+#define  TEST_STRING "<html><head></head><body><a name=\"abc\">abc</a></body></html>"
+#define  RESULT_STRING "<html><head></head><body><a name=\"abc\">abc</a></body></html>"
+  char  *ret;
+  device_table spec;
+  chxjconvrule_entry entry;
+  cookie_t cookie;
+  apr_size_t destlen;
+  APR_INIT;
+
+  COOKIE_INIT(cookie);
+
+  SPEC_INIT(spec);
+
+  ret = chxj_exchange_chtml10(&r, &spec, TEST_STRING, sizeof(TEST_STRING)-1, &destlen, &entry, &cookie);
+fprintf(stderr, "%s",ret);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
+  CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);
+
+  APR_TERM;
+#undef TEST_STRING
+#undef RESULT_STRING
+}
+void test_chtml10_a_tag_name_attribute_002() 
+{
+#define  TEST_STRING "<html><head></head><body><a name=\"\">abc</a></body></html>"
+#define  RESULT_STRING "<html><head></head><body><a name=\"\">abc</a></body></html>"
+  char  *ret;
+  device_table spec;
+  chxjconvrule_entry entry;
+  cookie_t cookie;
+  apr_size_t destlen;
+  APR_INIT;
+
+  COOKIE_INIT(cookie);
+
+  SPEC_INIT(spec);
+
+  ret = chxj_exchange_chtml10(&r, &spec, TEST_STRING, sizeof(TEST_STRING)-1, &destlen, &entry, &cookie);
+fprintf(stderr, "%s",ret);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
+  CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);
+
+  APR_TERM;
+#undef TEST_STRING
+#undef RESULT_STRING
+}
+void test_chtml10_a_tag_name_attribute_003() 
+{
+#define  TEST_STRING "<html><head></head><body><a name=\"あああ\">abc</a></body></html>"
+#define  RESULT_STRING "<html><head></head><body><a name=\"あああ\">abc</a></body></html>"
+  char  *ret;
+  char  *tmp;
+  device_table spec;
+  chxjconvrule_entry entry;
+  cookie_t cookie;
+  apr_size_t destlen;
+  APR_INIT;
+
+  COOKIE_INIT(cookie);
+
+  SPEC_INIT(spec);
+
+  destlen = sizeof(TEST_STRING)-1;
+  tmp = chxj_encoding(&r, TEST_STRING, &destlen);
+  ret = chxj_exchange_chtml10(&r, &spec, tmp, destlen, &destlen, &entry, &cookie);
+  ret = chxj_rencoding(&r, ret, &destlen);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
+  CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);
+
+  APR_TERM;
+#undef TEST_STRING
+#undef RESULT_STRING
+}
+void test_chtml10_a_tag_name_attribute_004() 
+{
+#define  TEST_STRING "<html><head></head><body><a name=\"アアア\">abc</a></body></html>"
+#define  RESULT_STRING "<html><head></head><body><a name=\"アアア\">abc</a></body></html>"
+  char  *ret;
+  char  *tmp;
+  device_table spec;
+  chxjconvrule_entry entry;
+  cookie_t cookie;
+  apr_size_t destlen;
+  APR_INIT;
+
+  COOKIE_INIT(cookie);
+
+  SPEC_INIT(spec);
+  destlen = sizeof(TEST_STRING)-1;
+
+  tmp = chxj_encoding(&r, TEST_STRING, &destlen);
+  ret = chxj_exchange_chtml10(&r, &spec, tmp, destlen, &destlen, &entry, &cookie);
+  ret = chxj_rencoding(&r, ret, &destlen);
+  CU_ASSERT(ret != NULL);
+  CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
+  CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);
+
+  APR_TERM;
+#undef TEST_STRING
+#undef RESULT_STRING
+}
+