/******************************************************************************* * Copyright (c) 2007, 2012 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 *******************************************************************************/ package org.eclipse.core.tests.filesystem; import java.net.URI; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.URIUtil; import org.eclipse.core.runtime.*; import org.eclipse.core.tests.internal.filesystem.wrapper.WrapperFileSystem; /** * Tests API methods of the class {@link org.eclipse.core.filesystem.URIUtil}. */ public class URIUtilTest extends FileSystemTest { public static Test suite() { return new TestSuite(URIUtilTest.class); } public URIUtilTest() { super(""); } public URIUtilTest(String name) { super(name); } /** * Tests API method {@link org.eclipse.core.filesystem.URIUtil#equals(java.net.URI, java.net.URI)}. */ public void testEquals() { if (EFS.getLocalFileSystem().isCaseSensitive()) { //test that case variants are not equal URI one = new java.io.File("c:\\temp\\test").toURI(); URI two = new java.io.File("c:\\TEMP\\test").toURI(); assertTrue("1.0", !URIUtil.equals(one, two)); } else { //test that case variants are equal URI one = new java.io.File("c:\\temp\\test").toURI(); URI two = new java.io.File("c:\\TEMP\\test").toURI(); assertTrue("1.0", URIUtil.equals(one, two)); } } /** * Tests API method {@link org.eclipse.core.filesystem.URIUtil#toURI(org.eclipse.core.runtime.IPath)}. */ public void testPathToURI() { if (Platform.getOS().equals(Platform.OS_WIN32)) { //path with spaces assertEquals("1.0", "/c:/temp/with spaces", URIUtil.toURI("c:\\temp\\with spaces").getSchemeSpecificPart()); } else { //path with spaces assertEquals("2.0", "/tmp/with spaces", URIUtil.toURI("/tmp/with spaces").getSchemeSpecificPart()); } } /** * Tests API method {@link org.eclipse.core.filesystem.URIUtil#toURI(String)}. */ public void testStringToURI() { if (Platform.getOS().equals(Platform.OS_WIN32)) { assertEquals("1.0", "/c:/temp/with spaces", URIUtil.toURI(new Path("c:\\temp\\with spaces")).getSchemeSpecificPart()); } else { assertEquals("1.0", "/tmp/with spaces", URIUtil.toURI(new Path("/tmp/with spaces")).getSchemeSpecificPart()); } } /** * Tests API method {@link org.eclipse.core.filesystem.URIUtil#toPath(java.net.URI)}. */ public void testToPath() throws Exception { // Relative path String pathString = "test/path with/spaces to_file.txt"; assertEquals("1.0", new Path(pathString), URIUtil.toPath(URIUtil.toURI(pathString, false))); // Absolute path if (Platform.getOS().equals(Platform.OS_WIN32)) { pathString = "c:/test/path with/spaces to_file.txt"; } else { pathString = "/test/path with/spaces to_file.txt"; } assertEquals("2.0", new Path(pathString), URIUtil.toPath(URIUtil.toURI(pathString))); // User defined file system assertEquals("3.0", new Path(pathString), URIUtil.toPath(WrapperFileSystem.getWrappedURI(URIUtil.toURI(pathString)))); } /** * Test API methods {@link org.eclipse.core.filesystem.URIUtil#toURI(IPath)}, * {@link org.eclipse.core.filesystem.URIUtil#toURI(String)))} results equality */ public void testToURIAbsolute() { String pathString = null; if (Platform.getOS().equals(Platform.OS_WIN32)) { pathString = "c:/test/path with/spaces to_file.txt"; } else { pathString = "/test/path with/spaces to_file.txt"; } IPath path = new Path(pathString); URI uri01 = URIUtil.toURI(path); URI uri02 = URIUtil.toURI(pathString); assertEquals("1.0", uri01, uri02); } /** * Test API methods {@link org.eclipse.core.filesystem.URIUtil#toURI(IPath)}, * {@link org.eclipse.core.filesystem.URIUtil#toURI(String)))} results equality */ public void testToURIRelative() { String pathString = "test/path with/spaces to_file.txt"; IPath path = new Path(pathString); URI uri01 = URIUtil.toURI(path); URI uri02 = URIUtil.toURI(pathString, false); assertEquals("1.0", uri01, uri02); assertTrue("1.1", !uri01.isAbsolute()); assertTrue("1.2", !uri02.isAbsolute()); } /** * Test API methods {@link org.eclipse.core.filesystem.URIUtil#toURI(org.eclipse.core.runtime.IPath))}. * {@link org.eclipse.core.filesystem.URIUtil#toPath(URI)} transformation with relative and absolute paths */ public void testFromPathToURI() { //absolute path IPath aPath = null; if (Platform.getOS().equals(Platform.OS_WIN32)) { aPath = new Path("c:/test/path with spaces/to_file.txt"); } else { aPath = new Path("/test/path with spaces/to_file.txt"); } //relative path IPath rPath = new Path("relative/with spaces/path/to_file.txt"); URI aUri = URIUtil.toURI(aPath); URI rUri = URIUtil.toURI(rPath); assertEquals("1.0", aPath.toString(), URIUtil.toPath(aUri).toString()); assertEquals("2.0", rPath.toString(), URIUtil.toPath(rUri).toString()); } public void testBug291323_doubleDotLocationPath() { URI aUri = URIUtil.toURI(".."); URI bUri = URIUtil.toURI(""); assertEquals("1.0", URIUtil.toPath(bUri).toString(), URIUtil.toPath(aUri).toString()); } }