/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.harmony.luni.tests.java.net; //import dalvik.annotation.TestTargetClass; //import dalvik.annotation.TestTargets; //import dalvik.annotation.TestLevel; //import dalvik.annotation.TestTargetNew; import java.net.URI; import java.net.URISyntaxException; import junit.framework.TestCase; //@TestTargetClass(URI.class) public class URITest extends TestCase { /** * @tests java.net.URI(java.lang.String) @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "NullPointerException checking missed.", method = "URI", args = {java.lang.String.class} ) */ public void test_ConstructorLjava_lang_String() throws URISyntaxException { // Regression test for HARMONY-23 try { new URI("%3"); fail("Assert 0: URI constructor failed to throw exception on invalid input."); } catch (URISyntaxException e) { // Expected assertEquals("Assert 1: Wrong index in URISyntaxException.", 0, e.getIndex()); } // Regression test for HARMONY-25 // if port value is negative, the authority should be considered registry-based. URI uri = new URI("http://host:-8096/path/index.html"); assertEquals("Assert 2: returned wrong port value,", -1, uri.getPort()); assertNull("Assert 3: returned wrong host value,", uri.getHost()); try { uri.parseServerAuthority(); fail("Assert 4: Expected URISyntaxException"); } catch (URISyntaxException e){ // Expected } uri = new URI("http","//myhost:-8096", null); assertEquals("Assert 5: returned wrong port value,", -1, uri.getPort()); assertNull("Assert 6: returned wrong host value,", uri.getHost()); try { uri.parseServerAuthority(); fail("Assert 7: Expected URISyntaxException"); } catch (URISyntaxException e){ // Expected } } /** * @tests java.net.URI(java.lang.String, java.lang.String, java.lang.String) @TestTargetNew( level = TestLevel.PARTIAL, notes = "Exceptions checked only.", method = "URI", args = {java.lang.String.class, java.lang.String.class, java.lang.String.class} ) */ public void test_ConstructorLjava_lang_StringLjava_lang_StringLjava_lang_String() { // scheme can not be empty string try { new URI("","//authority/path", "fragment"); fail ("Assert 0: Expected URISyntaxException with empty URI scheme"); } catch(URISyntaxException e) { // Expected assertEquals("Assert 1: Wrong index in URISyntaxException.", 0, e.getIndex()); } } /** * @tests java.net.URI#relativize(java.net.URI) @TestTargetNew( level = TestLevel.PARTIAL, notes = "NullPointerException checking missed.", method = "relativize", args = {java.net.URI.class} ) */ public void test_relativizeLjava_net_URI() throws URISyntaxException{ URI a = new URI("http://host/dir"); URI b = new URI("http://host/dir/file?query"); assertEquals("Assert 0: URI relativized incorrectly,", new URI("file?query"), a.relativize(b)); // One URI with empty host a = new URI("file:///~/first"); b = new URI("file://tools/~/first"); assertEquals("Assert 1: URI relativized incorrectly,", new URI("file://tools/~/first"), a.relativize(b)); assertEquals("Assert 2: URI relativized incorrectly,", new URI("file:///~/first"), b.relativize(a)); // Both URIs with empty hosts b = new URI("file:///~/second"); assertEquals("Assert 3: URI relativized incorrectly,", new URI("file:///~/second"), a.relativize(b)); assertEquals("Assert 4: URI relativized incorrectly,", new URI("file:///~/first"), b.relativize(a)); } /* @TestTargetNew( level = TestLevel.PARTIAL, notes = "NullPointerException checking missed.", method = "relativize", args = {java.net.URI.class} ) */ public void test_relativizeBasedOneEclipseCoreResources() throws URISyntaxException { URI one = new URI("file:/C:/test/ws"); URI two = new URI("file:/C:/test/ws"); URI empty = new URI(""); assertEquals(empty, one.relativize(two)); one = new URI("file:/C:/test/ws"); two = new URI("file:/C:/test/ws/p1"); URI result = new URI("p1"); assertEquals(result, one.relativize(two)); one = new URI("file:/C:/test/ws/"); assertEquals(result, one.relativize(two)); } /** * @tests java.net.URI#compareTo(java.net.URI) @TestTargetNew( level = TestLevel.PARTIAL_COMPLETE, notes = "", method = "compareTo", args = {java.net.URI.class} ) */ public void test_compareToLjava_net_URI() throws URISyntaxException{ URI uri1, uri2; // URIs whose host names have different casing uri1 = new URI("http://MixedCaseHost/path/resource"); uri2 = new URI("http://mixedcasehost/path/resource"); assertEquals("Assert 0: host name equality failure", 0, uri1.compareTo(uri2)); assertEquals("Assert 1: host name equality failure", 0, uri1.compareTo(uri2)); // URIs with one undefined component (port) uri1 = new URI("http://anyhost:80/path/resource"); uri2 = new URI("http://anyhost/path/resource"); assertTrue("Assert 2: comparison failure", uri1.compareTo(uri2) > 0); assertTrue("Assert 3: comparison failure", uri2.compareTo(uri1) < 0); // URIs with one undefined component (user-info) uri1 = new URI("http://user-info@anyhost/path/resource"); uri2 = new URI("http://anyhost/path/resource"); assertTrue("Assert 4: comparison failure", uri1.compareTo(uri2) > 0); assertTrue("Assert 5: comparison failure", uri2.compareTo(uri1) < 0); } }