blob: 8426b42c0f99dd7c9f7679556a2f5820932cb037 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 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.wst.jsdt.web.core.tests;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.wst.jsdt.web.core.internal.PathUtils;
import junit.framework.Assert;
import junit.framework.TestCase;
/**
* <p>Unit tests for the {@link PathUtils} class.</p>
*
*/
public class PathUtilsTests extends TestCase {
/**
* <p>Default constructor</p>
*/
public PathUtilsTests() {
super("Path Utils Tests");
}
public void testOneSegmentParentWithOneSegmentPattern_SegmentCountTest_0() {
runCountPatternSegmentsThatMatchParentTest("foo", "foo", 1);
}
public void testOneSegmentParentWithOneSegmentPattern_SegmentCountTest_1() {
runCountPatternSegmentsThatMatchParentTest("/foo", "foo", 1);
}
public void testOneSegmentParentWithOneSegmentPattern_SegmentCountTest_2() {
runCountPatternSegmentsThatMatchParentTest("/foo", "foo", 1);
}
public void testOneSegmentParentWithOneSegmentPattern_SegmentCountTest_3() {
runCountPatternSegmentsThatMatchParentTest("foo", "/foo", 1);
}
public void testOneSegmentParentWithOneSegmentPattern_SegmentCountTest_4() {
runCountPatternSegmentsThatMatchParentTest("/foo", "/foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_0() {
runCountPatternSegmentsThatMatchParentTest("foo/bar", "foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_1() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar", "foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_2() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar", "foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_3() {
runCountPatternSegmentsThatMatchParentTest("foo/bar", "/foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_4() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar", "/foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_5() {
runCountPatternSegmentsThatMatchParentTest("foo/bar/", "foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_6() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar/", "foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_7() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar/", "foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_8() {
runCountPatternSegmentsThatMatchParentTest("foo/bar/", "/foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_9() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar/", "/foo", 1);
}
public void testOneSegmentParentWithTwoSegmentPattern_SegmentCountTest_10() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar/", "/boo", 0);
}
public void testTwoSegmentParentWithThreeSegmentPattern_SegmentCountTest_0() {
runCountPatternSegmentsThatMatchParentTest("/foo/bar/blarg", "/foo/bar", 2);
}
public void testStar_SegmentCountTest_0() {
runCountPatternSegmentsThatMatchParentTest("/foo/*/blarg", "foo/bar", 2);
}
public void testStar_SegmentCountTest_1() {
runCountPatternSegmentsThatMatchParentTest("/foo/*", "foo", 1);
}
public void testStar_SegmentCountTest_2() {
runCountPatternSegmentsThatMatchParentTest("/foo/*", "foo/blarg", 2);
}
public void testStar_SegmentCountTest_3() {
runCountPatternSegmentsThatMatchParentTest("/foo/*", "foo", 1);
}
public void testStarStar_SegmentCountTest_0() {
runCountPatternSegmentsThatMatchParentTest("/foo/**", "foo", 1);
}
public void testStarStar_SegmentCountTest_1() {
runCountPatternSegmentsThatMatchParentTest("/foo/**", "foo/bar", 2);
}
public void testStarStar_SegmentCountTest_2() {
runCountPatternSegmentsThatMatchParentTest("/foo/**", "foo/bar/blarg", 3);
}
public void testStarStar_SegmentCountTest_3() {
runCountPatternSegmentsThatMatchParentTest("/foo/**/blarg", "foo/bar/blarg", 3);
}
public void testStarStar_SegmentCountTest_4() {
runCountPatternSegmentsThatMatchParentTest("/foo/**/blarg", "foo/bar/boo/blarg", 3);
}
public void testStarStar_SegmentCountTest_5() {
runCountPatternSegmentsThatMatchParentTest("/foo/**/blarg/nerg", "foo/bar/boo/blarg", 3);
}
public void testQuestionMark_SegmentCountTest_0() {
runCountPatternSegmentsThatMatchParentTest("foo?bar", "/fooZbar", 1);
}
public void testQuestionMark_SegmentCountTest_1() {
runCountPatternSegmentsThatMatchParentTest("foo?bar", "/foobar", 0);
}
public void testOneSegmentParentWithOneSegmentPattern_TransformPatternTest_0() {
runMakePatternRelativeToParentTest("foo", "foo", null);
}
public void testOneSegmentParentWithOneSegmentPattern_TransformPatternTest_1() {
runMakePatternRelativeToParentTest("/foo", "foo", null);
}
public void testOneSegmentParentWithOneSegmentPattern_TransformPatternTest_2() {
runMakePatternRelativeToParentTest("/foo", "foo", null);
}
public void testOneSegmentParentWithOneSegmentPattern_TransformPatternTest_3() {
runMakePatternRelativeToParentTest("foo", "foo", null);
}
public void testOneSegmentParentWithOneSegmentPattern_TransformPatternTest_4() {
runMakePatternRelativeToParentTest("/foo", "foo", null);
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_0() {
runMakePatternRelativeToParentTest("foo/bar", "foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_1() {
runMakePatternRelativeToParentTest("/foo/bar", "foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_2() {
runMakePatternRelativeToParentTest("/foo/bar", "foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_3() {
runMakePatternRelativeToParentTest("foo/bar", "/foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_4() {
runMakePatternRelativeToParentTest("/foo/bar", "/foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_5() {
runMakePatternRelativeToParentTest("foo/bar/", "foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_6() {
runMakePatternRelativeToParentTest("/foo/bar/", "foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_7() {
runMakePatternRelativeToParentTest("/foo/bar/", "foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_8() {
runMakePatternRelativeToParentTest("foo/bar/", "/foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_9() {
runMakePatternRelativeToParentTest("/foo/bar/", "/foo", "bar/");
}
public void testOneSegmentParentWithTwoSegmentPattern_TransformPatternTest_10() {
runMakePatternRelativeToParentTest("/foo/bar/", "/boo", null);
}
public void testTwoSegmentParentWithThreeSegmentPattern_TransformPatternTest_0() {
runMakePatternRelativeToParentTest("/foo/bar/blarg", "/foo/bar", "blarg/");
}
public void testStar_TransformPatternTest_0() {
runMakePatternRelativeToParentTest("/foo/*/blarg", "foo/bar", "blarg/");
}
public void testStar_TransformPatternTest_1() {
runMakePatternRelativeToParentTest("/foo/*", "foo", "*/");
}
public void testStar_TransformPatternTest_2() {
runMakePatternRelativeToParentTest("/foo/*", "foo/blarg/", null);
}
public void testStar_TransformPatternTest_3() {
runMakePatternRelativeToParentTest("/foo/*", "foo", "*/");
}
public void testStarStar_TransformPatternTest_0() {
runMakePatternRelativeToParentTest("/foo/**", "foo", "**/");
}
public void testStarStar_TransformPatternTest_1() {
runMakePatternRelativeToParentTest("/foo/**", "foo/bar/", null);
}
public void testStarStar_TransformPatternTest_2() {
runMakePatternRelativeToParentTest("/foo/**", "foo/bar/blarg/", null);
}
public void testStarStar_TransformPatternTest_3() {
runMakePatternRelativeToParentTest("/foo/**/blarg", "foo/bar/blarg/", null);
}
public void testStarStar_TransformPatternTest_4() {
runMakePatternRelativeToParentTest("/foo/**/blarg", "foo/bar/boo/blarg/", null);
}
public void testStarStar_TransformPatternTest_5() {
runMakePatternRelativeToParentTest("/foo/**/blarg/nerg", "foo/bar/boo/blarg", "nerg/");
}
public void testQuestionMark_TransformPatternTest_0() {
runMakePatternRelativeToParentTest("foo?bar", "/fooZbar", null);
}
public void testQuestionMark_TransformPatternTest_1() {
runMakePatternRelativeToParentTest("foo?bar", "/foobar", null);
}
public void testQuestionMark_TransformPatternTest_2() {
runMakePatternRelativeToParentTest("foo?bar/awesome", "/fooZbar", "awesome/");
}
public void testQuestionMark_TransformPatternTest_3() {
runMakePatternRelativeToParentTest("foo?bar/awesome", "/foobar", null);
}
/**
* <p>Runs a test on {@link PathUtils#countPatternSegmentsThatMatchParent(IPath, IPath)}</p>
*
* @param pattern the pattern path to test
* @param parentPath the parent path to test
* @param expectedMatchedSegments the expected number of segments in the pattern that match the parent
*/
private static void runCountPatternSegmentsThatMatchParentTest(String pattern, String parentPath,
int expectedMatchedSegments) {
int matchedSegments = PathUtils.countPatternSegmentsThatMatchParent(
new Path(pattern), new Path(parentPath));
Assert.assertEquals("Number of matched path segments does not equal expected.", //$NON-NLS-1$
expectedMatchedSegments, matchedSegments);
}
/**
*
* <p>Runs a test on {@link PathUtils#makePatternRelativeToParent(IPath, IPath)}</p>
*
* @param pattern the pattern path to test
* @param parent the parent path to test
* @param expected the expected pattern path made relative to the parent path
*/
private static void runMakePatternRelativeToParentTest(String pattern, String parent, String expected) {
IPath transformedPattern = PathUtils.makePatternRelativeToParent(
new Path(pattern), new Path(parent));
IPath expectedPath = null;
if(expected != null) {
expectedPath = new Path(expected);
}
Assert.assertEquals("Transformed pattern does not match expected.",
expectedPath, transformedPattern);
}
}