From 510efac384e912df4b344d605c75fd54f9a2b17b Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Fri, 10 Mar 2017 10:22:17 +0000 Subject: add nsurl get_utf8 test case --- test/nsurl.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 7 deletions(-) (limited to 'test/nsurl.c') diff --git a/test/nsurl.c b/test/nsurl.c index 5b56a42e8..798a1ffb6 100644 --- a/test/nsurl.c +++ b/test/nsurl.c @@ -53,6 +53,16 @@ struct test_compare { bool res; }; +/* Fixtures */ + +static void corestring_create(void) +{ + ck_assert(corestrings_init() == NSERROR_OK); +} + +/** + * iterator for any remaining strings in teardown fixture + */ static void netsurf_lwc_iterator(lwc_string *str, void *pw) { fprintf(stderr, @@ -62,6 +72,15 @@ static void netsurf_lwc_iterator(lwc_string *str, void *pw) lwc_string_data(str)); } +static void corestring_teardown(void) +{ + corestrings_fini(); + + lwc_iterate_strings(netsurf_lwc_iterator, NULL); +} + +/* tests */ + static const char *base_str = "http://a/b/c/d;p?q"; static const struct test_pairs create_tests[] = { @@ -1153,22 +1172,71 @@ START_TEST(nsurl_api_assert_parent_test) END_TEST -/* Fixtures */ +/* utf8 test case */ -static void corestring_create(void) +/** + * utf8 tests + */ +static const struct test_pairs utf8_tests[] = { + { "http://a.xn--11b4c3d/a", "http://a.कॉम/a" }, + { "https://smog.xn--3oq18vl8pn36a/test", "https://smog.大众汽车/test"}, + +}; + + +/** + * get utf8 test + */ +START_TEST(nsurl_get_utf8_test) { - ck_assert(corestrings_init() == NSERROR_OK); + nserror err; + nsurl *url; + const struct test_pairs *tst = &utf8_tests[_i]; + char *utf8out; + size_t utf8out_len; + + /* not testing create, this should always succeed */ + err = nsurl_create(tst->test, &url); + ck_assert(err == NSERROR_OK); + + err = nsurl_get_utf8(url, &utf8out, &utf8out_len); + ck_assert(err == NSERROR_OK); + + ck_assert_str_eq(utf8out, tst->res); + + free(utf8out); + + nsurl_unref(url); } +END_TEST -static void corestring_teardown(void) + +/** + * test case for utf8 output + */ +static TCase *nsurl_utf8_case_create(void) { - corestrings_fini(); + TCase *tc; + tc = tcase_create("UTF-8 output"); - lwc_iterate_strings(netsurf_lwc_iterator, NULL); + tcase_add_unchecked_fixture(tc, + corestring_create, + corestring_teardown); + + tcase_add_loop_test(tc, + nsurl_get_utf8_test, + 0, NELEMS(utf8_tests)); + + return tc; } -/* suite generation */ + +/* test suite */ + +/** + * nsurl suite generation + */ static Suite *nsurl_suite(void) { Suite *s; @@ -1389,9 +1457,14 @@ static Suite *nsurl_suite(void) suite_add_tcase(s, tc_parent); + /* UTF-8 output */ + suite_add_tcase(s, nsurl_utf8_case_create()); + + return s; } + int main(int argc, char **argv) { int number_failed; -- cgit v1.2.3