blob: 6df3feb55ee2014aae1db4b5f3c186ba67845ebe [file] [log] [blame]
/*
* 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.tools.ant.launch;
import junit.framework.TestCase;
import java.net.URISyntaxException;
import java.io.File;
/** Test the locator in the ant-launch JAR */
public class LocatorTest extends TestCase {
/**
* No-arg constructor to enable serialization. This method is not intended to be used by mere mortals without calling
* setName().
*/
public LocatorTest() {
}
/** Constructs a test case with the given name. */
public LocatorTest(String name) {
super(name);
}
private String resolve(String uri) {
String j14= Locator.fromURI(uri);
String j13 = Locator.fromURIJava13(uri);
assertEquals("Different fromURI conversion.\nJava1.4="+j14+"\nJava1.3="+j13+"\n",
j14, j13);
return j14;
}
private void resolveTo(String uri,String expectedResult) {
String result = resolve(uri);
assertResolved(uri, expectedResult, result);
}
private void assertResolved(String uri, String expectedResult, String result) {
assertEquals("Expected "+uri+" to resolve to \n"+expectedResult+"\n but got\n"+result+"\n",
expectedResult,result);
}
/**
* This asserts that we can round trip the path to a URI and back again
* @param path
*/
private void assertResolves(String path) throws Exception {
String asuri = new File(path).toURI().toASCIIString();
logURI(path +" => "+asuri);
resolveTo(asuri,path);
}
private void resolveTo13(String uri, String expectedResult) {
String result = Locator.fromURIJava13(uri);
assertResolved(uri, expectedResult, result);
}
private void logURI(String path) throws URISyntaxException{
String s = new File(path).toURI().toASCIIString();
System.out.println(path+" => "+s);
}
/**
* this isnt really a valid URI, except maybe in IE
* @throws Exception
*/
public void testNetworkURI() throws Exception {
resolveTo("file:\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar","\\\\PC03\\jclasses\\lib\\ant-1.7.0.jar");
}
/**
* This is not being tested as we don't appear to generate paths like this in the launcher
* @throws Exception
*/
public void NotestTripleForwardSlashNetworkURI() throws Exception {
resolveTo("file:///PC03/jclasses/lib/ant-1.7.0.jar", "///PC03/jclasses/lib/ant-1.7.0.jar");
}
public void testUnixNetworkPath() throws Exception {
resolveTo("file://cluster/home/ant/lib", "//cluster/home/ant/lib");
}
public void testUnixNetworkPath13() throws Exception {
resolveTo13("file://cluster/home/ant/lib", "//cluster/home/ant/lib");
}
public void testUnixPath() throws Exception {
resolveTo("file:/home/ant/lib", "/home/ant/lib");
}
public void testSpacedURI() throws Exception {
resolveTo("file:C:\\Program Files\\Ant\\lib","C:\\Program Files\\Ant\\lib");
}
public void testHttpURI() throws Exception {
String url = "http://ant.apache.org";
try {
Locator.fromURI(url);
} catch (IllegalArgumentException e) {
String message = e.getMessage();
assertTrue(message,message.indexOf(Locator.ERROR_NOT_FILE_URI)>=0);
assertTrue(message, message.indexOf(url) >= 0);
}
}
public void testInternationalURI() throws Exception {
assertResolves("/L\\u00f6wenbrau/aus/M\\u00fcnchen");
}
public void testOddLowAsciiURI() throws Exception {
assertResolves("/hash#/ and /percent%");
}
}