diff options
author | Sven Gothel <[email protected]> | 2013-11-28 12:50:12 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-11-28 12:50:12 +0100 |
commit | 67dd9498368f0250180528d4fa10a09854066fea (patch) | |
tree | d912a62139a600d5ef563bb773c79a51245797b6 /src/junit | |
parent | 4c835f0337674a0181c43f448d44d961e27b2f54 (diff) |
IOUtil.encodeToURI(): Only use method if required
Only use IOUtil.encodeToURI() if required,
i.e. 'new URI(String)' but not 'new URI(scheme, ...)' since the latter already encodes the path.
TestIOUtilURIHandling.test00BasicCoding() validates above findings.
Diffstat (limited to 'src/junit')
-rw-r--r-- | src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java b/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java index 6103d9a..ecf950b 100644 --- a/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java +++ b/src/junit/com/jogamp/common/util/TestIOUtilURIHandling.java @@ -168,6 +168,111 @@ public class TestIOUtilURIHandling extends JunitTracer { }; @Test + public void test00BasicCoding() throws IOException, URISyntaxException { + final String string = "Hallo Welt öä"; + System.err.println("sp1 "+string); + { + String sp2 = IOUtil.encodeToURI(string); + String sp3 = IOUtil.encodeToURI(sp2); + System.err.println("sp2 "+sp2); + System.err.println("sp3 "+sp3); + } + final File file = new File(string); + System.err.println("file "+file); + System.err.println("file.path.dec "+file.getPath()); + System.err.println("file.path.abs "+file.getAbsolutePath()); + System.err.println("file.path.can "+file.getCanonicalPath()); + final URI uri0 = file.toURI(); + System.err.println("uri0.string: "+uri0.toString()); + System.err.println("uri0.path : "+uri0.getPath()); + System.err.println("uri0.ascii : "+uri0.toASCIIString()); + boolean ok = true; + { + final URI uri1 = IOUtil.toURISimple(file); + final boolean equalString= uri0.toString().equals(uri1.toString()); + final boolean equalPath = uri0.getPath().equals(uri1.getPath()); + final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString()); + System.err.println("uri1.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR")); + System.err.println("uri1.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR")); + System.err.println("uri1.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR")); + ok = equalString && equalPath && equalASCII && ok; + } + { + final String s2 = IOUtil.slashify(file.getAbsolutePath(), true /* startWithSlash */, file.isDirectory() /* endWithSlash */); + System.err.println("uri2.slashify: "+s2); + { + // Expected !equals due to double-escaping of space %20 -> %25%20 + // Double escaping is due to IOUtil.encodeToURI(s2). + final String s3 = IOUtil.encodeToURI(s2); + System.err.println("uri2.encoded: "+s3); + final URI uri1 = new URI(IOUtil.FILE_SCHEME, null, s3, null); + final boolean equalString= uri0.toString().equals(uri1.toString()); + final boolean equalPath = uri0.getPath().equals(uri1.getPath()); + final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString()); + System.err.println("uri2.string: "+uri1.toString()+" - "+(equalString?"EQUAL":"NOT_EQUAL")); + System.err.println("uri2.path : "+uri1.getPath()+" - "+(equalPath?"EQUAL":"NOT_EQUAL")); + System.err.println("uri2.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"EQUAL":"NOT_EQUAL")); + } + final URI uri1 = new URI(IOUtil.FILE_SCHEME, null, s2, null); + final boolean equalString= uri0.toString().equals(uri1.toString()); + final boolean equalPath = uri0.getPath().equals(uri1.getPath()); + final boolean equalASCII= uri0.toASCIIString().equals(uri1.toASCIIString()); + System.err.println("uri2.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR")); + System.err.println("uri2.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR")); + System.err.println("uri2.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR")); + ok = equalString && equalPath && equalASCII && ok; + } + { + final String s2 = "/"+string; + System.err.println("uri3.orig: "+s2); + final URI uri1 = new URI(IOUtil.FILE_SCHEME, s2, null); + final String rString = "file:/Hallo%20Welt%20öä"; + final String rPath = s2; + final String rASCII = "file:/Hallo%20Welt%20%C3%B6%C3%A4"; + final boolean equalString= rString.equals(uri1.toString()); + final boolean equalPath = rPath.equals(uri1.getPath()); + final boolean equalASCII= rASCII.equals(uri1.toASCIIString()); + System.err.println("uri3.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR")); + System.err.println("uri3.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR")); + System.err.println("uri3.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR")); + ok = equalString && equalPath && equalASCII && ok; + } + { + final String s2 = "//lala.org/"+string; + System.err.println("uri4.orig: "+s2); + final URI uri1 = new URI(IOUtil.HTTP_SCHEME, s2, null); + final String rString = "http://lala.org/Hallo%20Welt%20öä"; + final String rPath = "/"+string; + final String rASCII = "http://lala.org/Hallo%20Welt%20%C3%B6%C3%A4"; + final boolean equalString= rString.equals(uri1.toString()); + final boolean equalPath = rPath.equals(uri1.getPath()); + final boolean equalASCII= rASCII.equals(uri1.toASCIIString()); + System.err.println("uri4.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR")); + System.err.println("uri4.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR")); + System.err.println("uri4.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR")); + ok = equalString && equalPath && equalASCII && ok; + } + { + final String s2 = "http://lala.org/"+string; + final String s2enc = IOUtil.encodeToURI(s2); + System.err.println("uri5.orig: "+s2); + System.err.println("uri5.enc : "+s2enc); + final URI uri1 = new URI(s2enc); + final String rString = "http://lala.org/Hallo%20Welt%20öä"; + final String rPath = "/"+string; + final String rASCII = "http://lala.org/Hallo%20Welt%20%C3%B6%C3%A4"; + final boolean equalString= rString.equals(uri1.toString()); + final boolean equalPath = rPath.equals(uri1.getPath()); + final boolean equalASCII= rASCII.equals(uri1.toASCIIString()); + System.err.println("uri5.string: "+uri1.toString()+" - "+(equalString?"OK":"ERROR")); + System.err.println("uri5.path : "+uri1.getPath()+" - "+(equalPath?"OK":"ERROR")); + System.err.println("uri5.ascii : "+uri1.toASCIIString()+" - "+(equalASCII?"OK":"ERROR")); + ok = equalString && equalPath && equalASCII && ok; + } + Assert.assertTrue("One or more errors occured see stderr above", ok); + } + + @Test public void test01HttpURI2URL() throws IOException, URISyntaxException { testURI2URL(getSimpleTestName("."), uriHttpSArray); } @@ -257,6 +362,11 @@ public class TestIOUtilURIHandling extends JunitTracer { static boolean testFile2URI(String fileSource, String uriEncExpected, String uriDecExpected, String fileExpected) throws IOException, URISyntaxException { final File file = new File(fileSource); + { + final URI uri0 = file.toURI(); + System.err.println("uri.string: "+uri0.toString()); + System.err.println("uri.ascii : "+uri0.toASCIIString()); + } final URI uri0 = IOUtil.toURISimple(file); System.err.println("uri.string: "+uri0.toString()); System.err.println("uri.ascii : "+uri0.toASCIIString()); |