summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/U_tests.json50
-rwxr-xr-xtests/it_html.t48
2 files changed, 53 insertions, 45 deletions
diff --git a/tests/U_tests.json b/tests/U_tests.json
new file mode 100644
index 0000000..bf8d129
--- /dev/null
+++ b/tests/U_tests.json
@@ -0,0 +1,50 @@
+[
+
+ {
+ "args": ["/foo.html", {"bar": {"gna": 42, "qux": {"quux": "<Zürich>", "gnöp": "fasel"}}}],
+ "exp": "/foo.html?bar[gna]=42&bar[qux][quux]=%3CZ%C3%BCrich%3E&bar[qux][gn%C3%B6p]=fasel",
+ "name": "U() with nested arrays"
+ },
+
+ {
+ "args": ["/foo.html?a=b&bar=qux&c=d", {"bar": "baz"}],
+ "exp": "/foo.html?a=b&bar=baz&c=d",
+ "name": "U() args override get params in base url"
+ },
+
+ {
+ "args": ["/foo.html?bar.qux=a.b", {"c.d": "e.f", "g h": "i j"}],
+ "exp": "/foo.html?bar.qux=a.b&c.d=e.f&g+h=i+j",
+ "name": "U() dots and spaces in arg names are preserved"
+ },
+
+ {
+ "args": ["/foo.html?bar=qux#frag=frog", {"baz": "gna"}],
+ "exp": "/foo.html?bar=qux&baz=gna#frag=frog",
+ "name": "U() fragment after params"
+ },
+
+ {
+ "args": ["Jet d'eau"],
+ "exp": "Jet%20d%27eau",
+ "name": "U() with single quotes in URL"
+ },
+
+ {
+ "args": ["/test.html?foo=bar?qux=gna", {"?q": "?r"}],
+ "exp": "/test.html?foo=bar%3Fqux%3Dgna&%3Fq=%3Fr",
+ "name": "U() quoting of ? in args but not base"
+ },
+
+ {
+ "args": ["%% %1%x %1x%x1%xx%11%ff%FF"],
+ "exp": "%25%25%20%251%25x%20%251x%25x1%25xx%11%ff%FF",
+ "name": "U() quoting of % if not followed by 2 hex digits"
+ },
+
+ {
+ "args": ["a\\b"],
+ "exp": "a/b",
+ "name": "U() converting of \\ to /"
+ }
+]
diff --git a/tests/it_html.t b/tests/it_html.t
index 875cccd..9231010 100755
--- a/tests/it_html.t
+++ b/tests/it_html.t
@@ -183,51 +183,9 @@ is(
'empty tags removal'
);
-is(
- U("/foo.html", array('bar' => array('gna' => 42, 'qux' => array('quux' => "<Zürich>", 'gnöp' => "fasel")))),
- '/foo.html?bar[gna]=42&bar[qux][quux]=%3CZ%C3%BCrich%3E&bar[qux][gn%C3%B6p]=fasel',
- 'U() with nested arrays'
-);
-
-is(
- U("/foo.html?a=b&bar=qux&c=d", array('bar' => "baz")),
- '/foo.html?a=b&bar=baz&c=d',
- 'U() args override get params in base url'
-);
-
-is(
- U("/foo.html?bar.qux=a.b", array('c.d' => "e.f", 'g h' => "i j")),
- '/foo.html?bar.qux=a.b&c.d=e.f&g+h=i+j',
- 'U() dots and spaces in arg names are preserved'
-);
-
-is(
- U("/foo.html?bar=qux#frag=frog", array('baz' => "gna")),
- '/foo.html?bar=qux&baz=gna#frag=frog',
- 'U() fragment after params'
-);
-is(
- U("Jet d'eau"),
- 'Jet%20d%27eau',
- 'U() with single quotes in URL'
-);
-
-is(
- U('/test.html?foo=bar?qux=gna', array('?q' => '?r')),
- '/test.html?foo=bar%3Fqux%3Dgna&%3Fq=%3Fr',
- 'U() quoting of ? in args but not base'
-);
-is(
- U('%% %1%x %1x%x1%xx%11%ff%FF'),
- '%25%25%20%251%25x%20%251x%25x1%25xx%11%ff%FF',
- 'U() quoting of % if not followed by 2 hex digits'
-);
-
-is(
- U('a\\b'),
- 'a/b',
- 'U() converting of \ to /'
-);
+foreach (search::json_decode(file_get_contents(dirname($argv[0]) . '/U_tests.json')) as $test) {
+ is(U(...$test['args']), $test['exp'], $test['name']);
+}
is(it_html::entity_decode("&auml;"), "ä");
is(it_html::entity_decode("&#x4a;"), "J");