commit - 4f147cdf76dda78f6e60c93ee92d136eca0e4817
commit + 5cc70f14c1532e84bd763a1011f1e531007e34f9
blob - 85308278a62e6b91bb85a43a889150d3034ffc35
blob + 98db940bae04d845894254901297c22ad81658c6
--- test/iritest.c
+++ test/iritest.c
#include "iri.h"
static int
-check(const char *base, const char *ref, const char *expected)
+resolve(const char *base, const char *ref, const char *expected)
{
static struct iri i;
char buf[512];
const char *base = "http://a/b/c/d;p?q";
int ret = 0;
- ret |= check(base, "g:h", "g:h");
- ret |= check(base, "g", "http://a/b/c/g");
- ret |= check(base, "./g", "http://a/b/c/g");
- ret |= check(base, "g/", "http://a/b/c/g/");
- ret |= check(base, "/g", "http://a/g");
+ ret |= resolve(base, "g:h", "g:h");
+ ret |= resolve(base, "g", "http://a/b/c/g");
+ ret |= resolve(base, "./g", "http://a/b/c/g");
+ ret |= resolve(base, "g/", "http://a/b/c/g/");
+ ret |= resolve(base, "/g", "http://a/g");
/*
* the RFC says "http://g" but we always normalize an
* empty path to "/" if there is an authority.
*/
- ret |= check(base, "//g", "http://g/");
+ ret |= resolve(base, "//g", "http://g/");
- ret |= check(base, "?y", "http://a/b/c/d;p?y");
- ret |= check(base, "g?y", "http://a/b/c/g?y");
- ret |= check(base, "#s", "http://a/b/c/d;p?q#s");
- ret |= check(base, "g#s", "http://a/b/c/g#s");
- ret |= check(base, "g?y#s", "http://a/b/c/g?y#s");
- ret |= check(base, ";x", "http://a/b/c/;x");
- ret |= check(base, "g;x", "http://a/b/c/g;x");
- ret |= check(base, "g;x?y#s", "http://a/b/c/g;x?y#s");
- ret |= check(base, "", "http://a/b/c/d;p?q");
- ret |= check(base, ".", "http://a/b/c/");
- ret |= check(base, "./", "http://a/b/c/");
- ret |= check(base, "..", "http://a/b/");
- ret |= check(base, "../", "http://a/b/");
- ret |= check(base, "../g", "http://a/b/g");
- ret |= check(base, "../..", "http://a/");
- ret |= check(base, "../../", "http://a/");
- ret |= check(base, "../../g", "http://a/g");
+ ret |= resolve(base, "?y", "http://a/b/c/d;p?y");
+ ret |= resolve(base, "g?y", "http://a/b/c/g?y");
+ ret |= resolve(base, "#s", "http://a/b/c/d;p?q#s");
+ ret |= resolve(base, "g#s", "http://a/b/c/g#s");
+ ret |= resolve(base, "g?y#s", "http://a/b/c/g?y#s");
+ ret |= resolve(base, ";x", "http://a/b/c/;x");
+ ret |= resolve(base, "g;x", "http://a/b/c/g;x");
+ ret |= resolve(base, "g;x?y#s", "http://a/b/c/g;x?y#s");
+ ret |= resolve(base, "", "http://a/b/c/d;p?q");
+ ret |= resolve(base, ".", "http://a/b/c/");
+ ret |= resolve(base, "./", "http://a/b/c/");
+ ret |= resolve(base, "..", "http://a/b/");
+ ret |= resolve(base, "../", "http://a/b/");
+ ret |= resolve(base, "../g", "http://a/b/g");
+ ret |= resolve(base, "../..", "http://a/");
+ ret |= resolve(base, "../../", "http://a/");
+ ret |= resolve(base, "../../g", "http://a/g");
- ret |= check(base, "../../../g", "http://a/g");
- ret |= check(base, "../../../../g", "http://a/g");
- ret |= check(base, "/./g", "http://a/g");
- ret |= check(base, "/../g", "http://a/g");
- ret |= check(base, "g.", "http://a/b/c/g.");
- ret |= check(base, ".g", "http://a/b/c/.g");
- ret |= check(base, "g..", "http://a/b/c/g..");
- ret |= check(base, "..g", "http://a/b/c/..g");
+ ret |= resolve(base, "../../../g", "http://a/g");
+ ret |= resolve(base, "../../../../g", "http://a/g");
+ ret |= resolve(base, "/./g", "http://a/g");
+ ret |= resolve(base, "/../g", "http://a/g");
+ ret |= resolve(base, "g.", "http://a/b/c/g.");
+ ret |= resolve(base, ".g", "http://a/b/c/.g");
+ ret |= resolve(base, "g..", "http://a/b/c/g..");
+ ret |= resolve(base, "..g", "http://a/b/c/..g");
- ret |= check(base, "./../g", "http://a/b/g");
- ret |= check(base, "./g/.", "http://a/b/c/g/");
- ret |= check(base, "g/./h", "http://a/b/c/g/h");
- ret |= check(base, "g/../h", "http://a/b/c/h");
- ret |= check(base, "g;x=1/./y", "http://a/b/c/g;x=1/y");
- ret |= check(base, "g;x=1/../y", "http://a/b/c/y");
+ ret |= resolve(base, "./../g", "http://a/b/g");
+ ret |= resolve(base, "./g/.", "http://a/b/c/g/");
+ ret |= resolve(base, "g/./h", "http://a/b/c/g/h");
+ ret |= resolve(base, "g/../h", "http://a/b/c/h");
+ ret |= resolve(base, "g;x=1/./y", "http://a/b/c/g;x=1/y");
+ ret |= resolve(base, "g;x=1/../y", "http://a/b/c/y");
- ret |= check(base, "g?y/./x", "http://a/b/c/g?y/./x");
- ret |= check(base, "g?y/../x", "http://a/b/c/g?y/../x");
- ret |= check(base, "g#s/./x", "http://a/b/c/g#s/./x");
- ret |= check(base, "g#s/../x", "http://a/b/c/g#s/../x");
+ ret |= resolve(base, "g?y/./x", "http://a/b/c/g?y/./x");
+ ret |= resolve(base, "g?y/../x", "http://a/b/c/g?y/../x");
+ ret |= resolve(base, "g#s/./x", "http://a/b/c/g#s/./x");
+ ret |= resolve(base, "g#s/../x", "http://a/b/c/g#s/../x");
- ret |= check(base, "http:g", "http:g");
+ ret |= resolve(base, "http:g", "http:g");
return (ret);
}