summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/nsurl.c149
1 files changed, 147 insertions, 2 deletions
diff --git a/test/nsurl.c b/test/nsurl.c
index 08e6a8283..514f3a6af 100644
--- a/test/nsurl.c
+++ b/test/nsurl.c
@@ -630,6 +630,120 @@ START_TEST(nsurl_has_component_test)
}
END_TEST
+static const struct test_pairs fragment_tests[] = {
+ { "http://www.f.org/a/b/c#def", "http://www.f.org/a/b/c" },
+};
+
+/**
+ * defragment url
+ */
+START_TEST(nsurl_defragment_test)
+{
+ nserror err;
+ nsurl *url;
+ nsurl *res_url;
+ const struct test_pairs *tst = &fragment_tests[_i];
+
+ /* not testing create, this should always succeed */
+ err = nsurl_create(tst->test, &url);
+ ck_assert(err == NSERROR_OK);
+
+ err = nsurl_defragment(url, &res_url);
+ if (tst->res == NULL) {
+ /* result must be invalid (bad input) */
+ ck_assert(err != NSERROR_OK);
+ } else {
+ /* result must be valid */
+ ck_assert(err == NSERROR_OK);
+
+ ck_assert_str_eq(nsurl_access(res_url), tst->res);
+
+ nsurl_unref(res_url);
+ }
+ nsurl_unref(url);
+
+}
+END_TEST
+
+/**
+ * refragment url
+ */
+START_TEST(nsurl_refragment_test)
+{
+ nserror err;
+ nsurl *url;
+ nsurl *res_url;
+ const struct test_pairs *tst = &fragment_tests[_i];
+ lwc_string *frag;
+
+ /* not testing create, this should always succeed */
+ err = nsurl_create(tst->test, &url);
+ ck_assert(err == NSERROR_OK);
+
+ /* grab the fragment - not testing should succeed */
+ frag = nsurl_get_component(url, NSURL_FRAGMENT);
+ ck_assert(frag != NULL);
+ nsurl_unref(url);
+
+ /* not testing create, this should always succeed */
+ err = nsurl_create(tst->res, &url);
+ ck_assert(err == NSERROR_OK);
+
+ err = nsurl_refragment(url, frag, &res_url);
+ if (tst->res == NULL) {
+ /* result must be invalid (bad input) */
+ ck_assert(err != NSERROR_OK);
+ } else {
+ /* result must be valid */
+ ck_assert(err == NSERROR_OK);
+
+ ck_assert_str_eq(nsurl_access(res_url), tst->test);
+
+ nsurl_unref(res_url);
+ }
+
+ lwc_string_unref(frag);
+
+ nsurl_unref(url);
+}
+END_TEST
+
+static const struct test_pairs parent_tests[] = {
+ { "http://www.f.org/a/b/c", "http://www.f.org/a/b/" },
+};
+
+/**
+ * generate parent url
+ */
+START_TEST(nsurl_parent_test)
+{
+ nserror err;
+ nsurl *url;
+ nsurl *res_url;
+ const struct test_pairs *tst = &parent_tests[_i];
+
+ /* not testing create, this should always succeed */
+ err = nsurl_create(tst->test, &url);
+ ck_assert(err == NSERROR_OK);
+
+ err = nsurl_parent(url, &res_url);
+ if (tst->res == NULL) {
+ /* result must be invalid (bad input) */
+ ck_assert(err != NSERROR_OK);
+ } else {
+ /* result must be valid */
+ ck_assert(err == NSERROR_OK);
+
+ ck_assert_str_eq(nsurl_access(res_url), tst->res);
+
+ nsurl_unref(res_url);
+ }
+ nsurl_unref(url);
+
+}
+END_TEST
+
+
/**
* url reference (copy) and unreference(free)
*/
@@ -1043,7 +1157,9 @@ Suite *nsurl_suite(void)
TCase *tc_replace_query;
TCase *tc_join;
TCase *tc_compare;
+ TCase *tc_fragment;
TCase *tc_component;
+ TCase *tc_parent;
s = suite_create("nsurl");
@@ -1183,7 +1299,6 @@ Suite *nsurl_suite(void)
tcase_add_loop_test(tc_join,
nsurl_join_test,
0, NELEMS(join_tests));
-
tcase_add_loop_test(tc_join,
nsurl_join_complex_test,
0, NELEMS(join_complex_tests));
@@ -1204,6 +1319,23 @@ Suite *nsurl_suite(void)
suite_add_tcase(s, tc_compare);
+ /* fragment */
+ tc_fragment = tcase_create("Fragment");
+
+ tcase_add_unchecked_fixture(tc_fragment,
+ corestring_create,
+ corestring_teardown);
+
+ tcase_add_loop_test(tc_fragment,
+ nsurl_defragment_test,
+ 0, NELEMS(parent_tests));
+ tcase_add_loop_test(tc_fragment,
+ nsurl_refragment_test,
+ 0, NELEMS(parent_tests));
+
+ suite_add_tcase(s, tc_fragment);
+
+
/* component */
tc_component = tcase_create("Component");
@@ -1214,13 +1346,26 @@ Suite *nsurl_suite(void)
tcase_add_loop_test(tc_component,
nsurl_get_component_test,
0, NELEMS(component_tests));
-
tcase_add_loop_test(tc_component,
nsurl_has_component_test,
0, NELEMS(component_tests));
suite_add_tcase(s, tc_component);
+
+ /* parent */
+ tc_parent = tcase_create("Parent");
+
+ tcase_add_unchecked_fixture(tc_parent,
+ corestring_create,
+ corestring_teardown);
+
+ tcase_add_loop_test(tc_parent,
+ nsurl_parent_test,
+ 0, NELEMS(parent_tests));
+
+ suite_add_tcase(s, tc_parent);
+
return s;
}