IRI base = new IRI("http://example.org/foo/");
assertEquals("http://example.org/", base.resolve("/").toString());
assertEquals("http://example.org/test", base.resolve("/test").toString());
assertEquals("http://example.org/foo/test", base.resolve("test").toString());
assertEquals("http://example.org/test", base.resolve("../test").toString());
assertEquals("http://example.org/foo/test", base.resolve("./test").toString());
assertEquals("http://example.org/foo/", base.resolve("test/test/../../").toString());
assertEquals("http://example.org/foo/?test", base.resolve("?test").toString());
assertEquals("http://example.org/foo/#test", base.resolve("#test").toString());
assertEquals("http://example.org/foo/", base.resolve(".").toString());