package org.exist.xmldb; import java.net.URI; import java.net.URISyntaxException; import junit.framework.TestCase; import org.exist.test.TestConstants; public class XmldbURITest extends TestCase { public void testXmldbURIConstructors() { try{ XmldbURI.xmldbUriFor("."); XmldbURI.xmldbUriFor(".."); XmldbURI.xmldbUriFor("/db"); XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI.xmldbUriFor("xmldb:exist://localhost/db"); XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db"); XmldbURI.xmldbUriFor("//localhost:8080/db"); XmldbURI.xmldbUriFor("./db"); XmldbURI.xmldbUriFor("../db"); XmldbURI.xmldbUriFor("/db/test"); XmldbURI.xmldbUriFor("xmldb:exist:///db/test"); XmldbURI.xmldbUriFor("xmldb:exist://localhost/db/test"); XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db/test"); XmldbURI.xmldbUriFor("//localhost:8080/db/test"); XmldbURI.xmldbUriFor("./"); XmldbURI.xmldbUriFor("../"); XmldbURI.xmldbUriFor("/db/"); XmldbURI.xmldbUriFor("xmldb:exist:///db/"); XmldbURI.xmldbUriFor("xmldb:exist://localhost/db/"); XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db/"); XmldbURI.xmldbUriFor("//localhost:8080/db/"); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testFailingXmldbURIConstructors() { try{ XmldbURI.xmldbUriFor("exist:///db"); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } try{ XmldbURI.xmldbUriFor("exist://localhost/db"); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } try{ XmldbURI.xmldbUriFor("exist://localhost:8080/db"); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } try{ XmldbURI.xmldbUriFor("["); fail("Invalid constructor threw no exception!"); } catch (URISyntaxException e) { } } public void testXmldbURIConstructor1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist:///db"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor2() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8080, xmldbURI.getPort()); assertEquals("/exist/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8080/exist/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8080, xmldbURI.getPort()); assertEquals("/exist/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor3() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8088/xmlrpc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals("xmlrpc", xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor4() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/webdav"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8088/webdav"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor5() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db/"); assertEquals("/db", xmldbURI.getCollectionPath()); //assertEquals("xmldb:exist:///db", xmldbURI.toString()); xmldbURI = XmldbURI.create("xmldb:exist:///db/"); assertEquals("/db", xmldbURI.getCollectionPath()); //assertEquals("xmldb:exist:///db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor6() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist2://localhost:8088/webdav/db"); assertEquals("exist2", xmldbURI.getInstanceName()); xmldbURI = XmldbURI.create("xmldb:exist2://localhost:8088/webdav/db"); assertEquals("exist2", xmldbURI.getInstanceName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor7() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8088/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor8() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8088/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor9() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/xmlrpc/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/xmlrpc/webdav", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_WEBDAV, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor10() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/webdav/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/webdav/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist://localhost:8088/webdav/xmlrpc/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(8088, xmldbURI.getPort()); assertEquals("/webdav/xmlrpc", xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_XMLRPC, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor11() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost/db"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals("localhost", xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_REST, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor12() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db/aa/bb/ccc"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db/aa/bb/ccc", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); xmldbURI = XmldbURI.create("xmldb:exist:///db/aa/bb/ccc"); assertEquals("exist", xmldbURI.getInstanceName()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db/aa/bb/ccc", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); } catch (URISyntaxException e) { fail(e.getMessage()); } } /* * These are no longer faulty */ public void testXmldbURIConstructor13() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db?param=value"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("param=value",xmldbURI.getQuery()); xmldbURI = XmldbURI.create("xmldb:exist:///db?param=value"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("param=value",xmldbURI.getQuery()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor14() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); xmldbURI = XmldbURI.create("xmldb:exist:///db#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIConstructor15() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db?param=value#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); assertEquals("param=value",xmldbURI.getQuery()); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db?param=value#123"); assertEquals("exist", xmldbURI.getInstanceName()); assertNull(xmldbURI.getHost()); assertEquals(-1, xmldbURI.getPort()); assertNull(xmldbURI.getContext()); assertEquals("/db", xmldbURI.getCollectionPath()); assertEquals(XmldbURI.API_LOCAL, xmldbURI.getApiName()); assertEquals("123",xmldbURI.getFragment()); assertEquals("param=value",xmldbURI.getQuery()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIFaultyConstructor1() { boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("exist:///db"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.create("exist:///db"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } public void testXmldbURIFaultyConstructor2() { boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:///db"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.create("xmldb:///db"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } public void testXmldbURIFaultyConstructor3() { boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.create("xmldb:exist://"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } public void testXmldbURIFaultyConstructor4() { boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://"); } catch (URISyntaxException e) { exceptionThrown = true; } assertTrue(exceptionThrown); exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.create("xmldb:exist://"); } catch (Exception e) { exceptionThrown = true; } assertTrue(exceptionThrown); } /* * These test are irrelevant for immutable URIs */ /* public void testXmldbURIChangePart1() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); xmldbURI.setInstanceName("exist2"); assertEquals("xmldb:exist2://localhost:8088/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart2() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); xmldbURI.setHost("remotehost"); assertEquals("xmldb:exist://remotehost:8088/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart3() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); xmldbURI.setPort(8080); assertEquals("xmldb:exist://localhost:8080/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart4() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); xmldbURI.setPort(-1); assertEquals("xmldb:exist://localhost/xmlrpc/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIChangePart5() { try { XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8088/xmlrpc/webdav/db"); xmldbURI.setContext("/webdav"); assertEquals("xmldb:exist://localhost:8088/webdav/db", xmldbURI.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } */ public void testXmldbURICompareTo1() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///db/collection1"); assertTrue(xmldbURI1.compareTo(xmldbURI2) < 0); assertTrue(xmldbURI2.compareTo(xmldbURI1) > 0); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURICompareTo2() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db/collection1"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///db/collection1"); assertEquals(0, xmldbURI1.compareTo(xmldbURI2)); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURICompareTo3() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///collection1"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///collection2"); assertTrue(xmldbURI1.compareTo(xmldbURI2) < 0); assertTrue(xmldbURI2.compareTo(xmldbURI1) > 0); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURICompareTo4() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist1:///db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist2:///db"); assertTrue(xmldbURI1.compareTo(xmldbURI2) < 0); assertTrue(xmldbURI2.compareTo(xmldbURI1) > 0); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIEquals1() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIEquals2() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIEquals3() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc"); assertTrue(xmldbURI1.equals(xmldbURI2)); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIEquals4() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc/db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc/db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIEquals5() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist1://localhost:8088/db"); XmldbURI xmldbURI2 = XmldbURI.xmldbUriFor("xmldb:exist1://localhost:8088/db"); assertTrue(xmldbURI1.equals(xmldbURI2)); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIIsAbsolute1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db"); assertTrue(xmldbURI.isAbsolute()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIIsAbsolute2() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("."); assertFalse(xmldbURI.isAbsolute()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIIsAbsolute3() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor(".."); assertFalse(xmldbURI.isAbsolute()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIIsContextAbsolute1() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/exist/xmlrpc/db"); assertTrue(xmldbURI1.isContextAbsolute()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURINormalizeContext1() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/./xmlrpc/db"); XmldbURI xmldbURI2 = xmldbURI1.normalizeContext(); assertEquals("xmldb:exist://localhost:8080/exist/xmlrpc/db", xmldbURI2.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURINormalizeContext2() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/../xmlrpc/db"); XmldbURI xmldbURI2 = xmldbURI1.normalizeContext(); assertEquals("xmldb:exist://localhost:8080/xmlrpc/db", xmldbURI2.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURINormalizeContext3() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///db"); XmldbURI xmldbURI2 = xmldbURI1.normalizeContext(); assertEquals("xmldb:exist:///db", xmldbURI2.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRelativizeContext1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/exist/xmlrpc/db"); URI uri = new URI("/exist/xmlrpc"); assertEquals("/exist/xmlrpc", xmldbURI.relativizeContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRelativizeContext2() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/exist/xmlrpc/db"); URI uri = new URI("/exist/exist/xmlrpc"); assertEquals("/exist/exist/xmlrpc", xmldbURI.relativizeContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRelativizeContext3() { boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///db"); URI uri = new URI("/db"); assertEquals("/exist/exist/xmlrpc", xmldbURI.relativizeContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } catch (NullPointerException e) { exceptionThrown = true; } } public void testXmldbURIResolveContext1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/a/b/xmlrpc/db"); URI uri = new URI(".."); //Strange but it's like this assertEquals("/a/b/", xmldbURI.resolveContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIResolveContext2() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/a/b/xmlrpc/db"); URI uri = new URI("../.."); //Strange but it's like this assertEquals("/a/", xmldbURI.resolveContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIResolveContext3() { boolean exceptionThrown = false; try{ //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///a/db"); URI uri = new URI(".."); xmldbURI.resolveContext(uri); } catch (URISyntaxException e) { fail(e.getMessage()); } catch (NullPointerException e) { exceptionThrown = true; } assertTrue(exceptionThrown); } public void testXmldbURIResolveContext4() { try{ //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); //Up and up... URI uri = new URI("/../../.."); //Strange but it's like this assertEquals("/../../..", xmldbURI.resolveContext(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIIsCollectionNameAbsolute1() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); assertTrue(xmldbURI1.isCollectionPathAbsolute()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURINormalizeCollectionName1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/./collection"); assertEquals("xmldb:exist://localhost:8080/xmlrpc/db/collection", xmldbURI.normalizeCollectionPath().toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURINormalizeCollectionName2() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/../collection"); XmldbURI xmldbURI2 = xmldbURI1.normalizeCollectionPath(); assertEquals("xmldb:exist://localhost:8080/xmlrpc/collection", xmldbURI2.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURINormalizeCollectionName3() { try{ XmldbURI xmldbURI1 = XmldbURI.xmldbUriFor("xmldb:exist:///"); XmldbURI xmldbURI2 = xmldbURI1.normalizeCollectionPath(); assertEquals("xmldb:exist:///", xmldbURI2.toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRelativizeCollectionName1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/db/collection"); URI uri = new URI("/db/collection"); assertEquals("/db/collection", xmldbURI.relativizeCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRelativizeCollectionName2() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/collection"); URI uri = new URI("/db/db/collection"); assertEquals("/db/db/collection", xmldbURI.relativizeCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRelativizeCollectionName3() { boolean exceptionThrown = false; try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///"); URI uri = new URI("/"); assertEquals("", xmldbURI.relativizeCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } catch (NullPointerException e) { exceptionThrown = true; } } public void testXmldbURIResolveCollectionName1() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/a/b"); URI uri = new URI(".."); assertEquals("/db/a/", xmldbURI.resolveCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIResolveCollectionName2() { try{ XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db/a/b"); URI uri = new URI("../.."); assertEquals("/db/", xmldbURI.resolveCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIResolveCollectionName3() { try{ //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///"); URI uri = new URI(".."); assertEquals("/..", xmldbURI.resolveCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIResolveCollectionName4() { try{ //Null context here ;-) XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist://localhost:8080/xmlrpc/db"); //Up and up... URI uri = new URI("/../../.."); //Strange but it's like this assertEquals("/../../..", xmldbURI.resolveCollectionPath(uri).toString()); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURICollectionPathEncoding1() { try{ //Should return decoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.getCollectionPath(),"/xmlrpc/"+TestConstants.DECODED_SPECIAL_NAME); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURICollectionPathEncoding2() { try{ //Should return encoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.getRawCollectionPath(),"/xmlrpc/"+TestConstants.SPECIAL_NAME); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURILastSegment() { try{ //Should return encoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor("/test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); xmldbURI = XmldbURI.xmldbUriFor(TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.lastSegment(),TestConstants.SPECIAL_URI); assertEquals(TestConstants.SPECIAL_URI.lastSegment(),TestConstants.SPECIAL_URI); assertEquals(XmldbURI.EMPTY_URI.lastSegment(),XmldbURI.EMPTY_URI); assertEquals(XmldbURI.create("/").lastSegment(),XmldbURI.EMPTY_URI); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testXmldbURIRemoveLastSegment() { try{ //Should return encoded path XmldbURI xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test")); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/test")); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc")); xmldbURI = XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("xmldb:exist:///xmlrpc")); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("test")); xmldbURI = XmldbURI.xmldbUriFor("test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("test")); xmldbURI = XmldbURI.xmldbUriFor("/test/"+TestConstants.SPECIAL_NAME); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("/test")); xmldbURI = XmldbURI.xmldbUriFor("/test/"+TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.xmldbUriFor("/test")); xmldbURI = XmldbURI.xmldbUriFor(TestConstants.SPECIAL_NAME+"/"); assertEquals(xmldbURI.removeLastSegment(),XmldbURI.EMPTY_URI); assertEquals(TestConstants.SPECIAL_URI.removeLastSegment(),XmldbURI.xmldbUriFor("")); } catch (URISyntaxException e) { fail(e.getMessage()); } } public void testAppenders(){ String append_txt_1 = "test/new_test.xml"; XmldbURI root = XmldbURI.ROOT_COLLECTION_URI; XmldbURI append_uri_1 = root.append(append_txt_1); assertEquals( root.toString() +"/"+ append_txt_1 , append_uri_1.toString() ); assertEquals( TestConstants.TEST_COLLECTION_URI.toString() + "/" + TestConstants.TEST_BINARY_URI.toString() , (TestConstants.TEST_COLLECTION_URI.append(TestConstants.TEST_BINARY_URI)).toString() ); } public static void main(String[] args) { junit.textui.TestRunner.run(XmldbURITest.class); } }