/******************************************************************************* * Copyright (c) 2008, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * compeople AG (Stefan Liebig) - Test fix for bug 121201 - Poor performance behind proxy/firewall *******************************************************************************/ package org.eclipse.equinox.p2.tests.core; import java.io.File; import java.net.*; import org.eclipse.equinox.internal.p2.core.helpers.URLUtil; import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; /** * Tests for the {@link URLUtil} class. */ public class URLUtilTest extends AbstractProvisioningTest { private static final String[] testPaths = new String[] {"abc", "with spaces", "with%percent"}; /** * Tests for {@link URLUtil#toFile(URL)}. */ public void testToFile() { File base = new File(System.getProperty("java.io.tmpdir")); for (int i = 0; i < testPaths.length; i++) { File original = new File(base, testPaths[i]); URI uri = original.toURI(); try { URL encoded = uri.toURL(); File result = URLUtil.toFile(encoded); assertEquals("1." + i, original, result); } catch (MalformedURLException e) { fail("1.99", e); } } } /** * Tests for {@link URLUtil#toFile(URL)}. */ public void testToFileRelative() throws URISyntaxException { for (int i = 0; i < testPaths.length; i++) { File original = new File(testPaths[i]); URI uri = new URI(null, testPaths[i], null); try { URL encoded = new URL("file:" + uri.getRawPath()); File result = URLUtil.toFile(encoded); assertEquals("1." + i, original, result); } catch (MalformedURLException e) { fail("1.99", e); } } } /** * Tests for {@link URLUtil#toURI(URL)}. */ public void testToFileFromLocalURL() throws Exception { File original = new File(System.getProperty("java.io.tmpdir"), "repo"); //this URL is technically not correct because it is not hierarchical, but ensure URLUtil is lenient. URL url = new URL("file:" + original.toString()); File result = URLUtil.toFile(url); assertEquals("1.0", original, result); } public void testToFileFromUNC() throws Exception { File original = new File("//a/b c"); // this tests the two slash UNC path that URL creates URL url = new URL("file:" + original.toString()); File result = URLUtil.toFile(url); assertEquals("1.0", original, result); // this tests the four slash UNC path that URI creates url = original.toURI().toURL(); result = URLUtil.toFile(url); assertEquals("1.1", original, result); } }