null+****@clear*****
null+****@clear*****
2010年 6月 29日 (火) 12:28:40 JST
Kouhei Sutou 2010-06-29 03:28:40 +0000 (Tue, 29 Jun 2010) New Revision: 04eeab6b5997d50132ab4ac4a17b3f7990bfa379 Log: add tests for grn_text_urlenc. Modified files: test/unit/util/test-string.c Modified: test/unit/util/test-string.c (+44 -0) =================================================================== --- test/unit/util/test-string.c 2010-06-28 10:29:45 +0000 (379d7ac) +++ test/unit/util/test-string.c 2010-06-29 03:28:40 +0000 (57412e5) @@ -33,6 +33,8 @@ void data_normalize_broken(void); void test_normalize_broken(gconstpointer data); void data_charlen_broken(void); void test_charlen_broken(gconstpointer data); +void data_urlenc(void); +void test_urlenc(gconstpointer data); void data_urldec(void); void test_urldec(gconstpointer data); void data_cgidec(void); @@ -315,6 +317,48 @@ test_charlen_broken(gconstpointer data) } void +data_urlenc(void) +{ +#define ADD_DATUM(label, expected, input, input_length) \ + gcut_add_datum(label, \ + "expected", G_TYPE_STRING, expected, \ + "input", G_TYPE_STRING, input, \ + "input-length", G_TYPE_INT, input_length, \ + NULL) + + ADD_DATUM("Japanese", + "%20%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%A7%E3%81%99%E3%80%82%20", + " 日本語です。 ", + -1); + ADD_DATUM("percent", "%251%252%253", "%1%2%3", -1); + +#undef ADD_DATUM +} + +void +test_urlenc(gconstpointer data) +{ + grn_obj buffer; + const gchar *expected, *input; + gint input_length; + + expected = gcut_data_get_string(data, "expected"); + input = gcut_data_get_string(data, "input"); + input_length = gcut_data_get_int(data, "input-length"); + + if (input_length < 0) { + input_length = strchr(input, '\0') - input; + } + + GRN_TEXT_INIT(&buffer, 0); + grn_text_urlenc(&context, &buffer, input, input_length); + cut_assert_equal_substring(expected, + GRN_TEXT_VALUE(&buffer), + GRN_TEXT_LEN(&buffer)); + GRN_OBJ_FIN(&context, &buffer); +} + +void data_urldec(void) { #define ADD_DATUM(label, expected, input, input_length, end_char) \