@@ -0,0 +1,1939 @@
+package spark.resource;%0A%0Aimport org.junit.Test;%0A%0Aimport static org.junit.Assert.assertEquals;%0A%0Apublic class UriPathTest %7B%0A    @Test%0A    public void canonical() throws Exception %7B%0A        String%5B%5D%5B%5D canonical = %7B%0A            %7B%22/aaa/bbb/%22, %22/aaa/bbb/%22%7D,%0A            %7B%22/aaa//bbb/%22, %22/aaa//bbb/%22%7D,%0A            %7B%22/aaa///bbb/%22, %22/aaa///bbb/%22%7D,%0A            %7B%22/aaa/./bbb/%22, %22/aaa/bbb/%22%7D,%0A            %7B%22/aaa/../bbb/%22, %22/bbb/%22%7D,%0A            %7B%22/aaa/./../bbb/%22, %22/bbb/%22%7D,%0A            %7B%22/aaa/bbb/ccc/../../ddd/%22, %22/aaa/ddd/%22%7D,%0A            %7B%22./bbb/%22, %22bbb/%22%7D,%0A            %7B%22./aaa/../bbb/%22, %22bbb/%22%7D,%0A            %7B%22./%22, %22%22%7D,%0A            %7B%22.//%22, %22.//%22%7D,%0A            %7B%22.///%22, %22.///%22%7D,%0A            %7B%22/.%22, %22/%22%7D,%0A            %7B%22//.%22, %22//%22%7D,%0A            %7B%22///.%22, %22///%22%7D,%0A            %7B%22/%22, %22/%22%7D,%0A            %7B%22aaa/bbb%22, %22aaa/bbb%22%7D,%0A            %7B%22aaa/%22, %22aaa/%22%7D,%0A            %7B%22aaa%22, %22aaa%22%7D,%0A            %7B%22/aaa/bbb%22, %22/aaa/bbb%22%7D,%0A            %7B%22/aaa//bbb%22, %22/aaa//bbb%22%7D,%0A            %7B%22/aaa/./bbb%22, %22/aaa/bbb%22%7D,%0A            %7B%22/aaa/../bbb%22, %22/bbb%22%7D,%0A            %7B%22/aaa/./../bbb%22, %22/bbb%22%7D,%0A            %7B%22./bbb%22, %22bbb%22%7D,%0A            %7B%22./aaa/../bbb%22, %22bbb%22%7D,%0A            %7B%22aaa/bbb/..%22, %22aaa/%22%7D,%0A            %7B%22aaa/bbb/../%22, %22aaa/%22%7D,%0A            %7B%22/aaa//../bbb%22, %22/aaa/bbb%22%7D,%0A            %7B%22/aaa/./../bbb%22, %22/bbb%22%7D,%0A            %7B%22./%22, %22%22%7D,%0A            %7B%22.%22, %22%22%7D,%0A            %7B%22%22, %22%22%7D,%0A            %7B%22..%22, null%7D,%0A            %7B%22./..%22, null%7D,%0A            %7B%22aaa/../..%22, null%7D,%0A            %7B%22/foo/bar/../../..%22, null%7D,%0A            %7B%22/../foo%22, null%7D,%0A            %7B%22/foo/.%22, %22/foo/%22%7D,%0A            %7B%22a%22, %22a%22%7D,%0A            %7B%22a/%22, %22a/%22%7D,%0A            %7B%22a/.%22, %22a/%22%7D,%0A            %7B%22a/..%22, %22%22%7D,%0A            %7B%22a/../..%22, null%7D,%0A            %7B%22/foo/../../bar%22, null%7D,%0A            %7B%22/foo/../bar//%22, %22/bar//%22%7D,%0A        %7D;%0A%0A        for (String%5B%5D aCanonical : canonical) %7B%0A            assertEquals(%22canonical %22 + aCanonical%5B0%5D, aCanonical%5B1%5D, UriPath.canonical(aCanonical%5B0%5D));%0A        %7D%0A    %7D%0A%0A%7D%0A

Add UriPathTest