From 67dd9498368f0250180528d4fa10a09854066fea Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Thu, 28 Nov 2013 12:50:12 +0100 Subject: 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. --- .../jogamp/common/util/TestIOUtilURIHandling.java | 110 +++++++++++++++++++++ 1 file changed, 110 insertions(+) (limited to 'src/junit/com/jogamp') 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 @@ -167,6 +167,111 @@ public class TestIOUtilURIHandling extends JunitTracer { "C:\\gluegen\\#\\gluegen-rt.jar" }, */ }; + @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()); -- cgit v1.2.3