blob: 669f13b927ddaa0622c5427c06ce21eb0cc39742 [file] [log] [blame]
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler.util;
import junit.framework.TestCase;
import java.io.File;
import java.net.URI;
public class PathsTest extends TestCase {
public void testRelativePathToFile_inChildDir_1() {
testPathToFile("mylib.lib", "childDir/other.lib", "childDir/other.lib");
}
public void testRelativePathToFile_inChildDir_2() {
testPathToFile("dir/mylib.lib", "childDir/other.lib", "dir/childDir/other.lib");
}
public void testRelativePathToFile_inParentDir_1() {
testPathToFile("mylib.lib", "../other.lib", "../other.lib");
}
public void testRelativePathToFile_inParentDir_2() {
testPathToFile("dir/mylib.lib", "../other.lib", "other.lib");
}
public void testRelativePathToFile_inSameDir_1() {
testPathToFile("mylib.lib", "other.lib", "other.lib");
}
public void testRelativePathToFile_inSameDir_2() {
testPathToFile("dir/mylib.lib", "other.lib", "dir/other.lib");
}
public void testRelativePathToFile_inSiblingDir_1() {
testPathToFile("mylib.lib", "../alt/other.lib", "../alt/other.lib");
}
public void testRelativePathToFile_inSiblingDir_2() {
testPathToFile("dir/mylib.lib", "../alt/other.lib", "alt/other.lib");
}
private void testPathToFile(String baseFilePath, String relPath,
String expectedPath) {
File baseFile1 = new File(baseFilePath);
File actual1 = Paths.relativePathToFile(baseFile1, relPath);
String expectedPath1 = expectedPath;
assertEquals(expectedPath1, actual1.getPath());
File baseFile2 = baseFile1.getAbsoluteFile();
File actual2 = Paths.relativePathToFile(baseFile2, relPath);
String expectedPath2 = URI.create(actual1.getAbsolutePath()).normalize().getPath();
assertEquals(expectedPath2, actual2.getPath());
}
//==========================================================================
public void testRelativePathFor_inChildDir_1() {
testPathFor("mylib.lib", "childDir/other.lib", "childDir/other.lib");
}
public void testRelativePathFor_inChildDir_2() {
testPathFor("dir/mylib.lib", "dir/childDir/other.lib", "childDir/other.lib");
}
public void testRelativePathFor_inParentDir_1() {
testPathFor("mylib.lib", "../other.lib", "../other.lib");
}
public void testRelativePathFor_inParentDir_2() {
testPathFor("dir/mylib.lib", "other.lib", "../other.lib");
}
public void testRelativePathFor_inParentDir_3() {
testPathFor("grandDir/dir/mylib.lib", "grandDir/other.lib", "../other.lib");
}
public void testRelativePathFor_inSameDir_1() {
testPathFor("mylib.lib", "other.lib", "other.lib");
}
public void testRelativePathFor_inSameDir_2() {
testPathFor("dir/mylib.lib", "dir/other.lib", "other.lib");
}
public void testRelativePathFor_inSameDir_3() {
testPathFor("grandDir/dir/mylib.lib", "grandDir/dir/other.lib", "other.lib");
}
public void testRelativePathFor_inSameDir_4() {
testPathFor("grandDir/dir/amylib.lib", "grandDir/dir/aother.lib", "aother.lib");
}
public void testRelativePathFor_inSameDir_5() {
testPathFor("grandDir/dir/abmylib.lib", "grandDir/dir/abother.lib", "abother.lib");
}
public void testRelativePathFor_inSiblingDir_1() {
testPathFor("mylib.lib", "../otherdir/other.lib", "../otherdir/other.lib");
}
public void testRelativePathFor_inSiblingDir_2() {
testPathFor("dir/mylib.lib", "otherdir/other.lib", "../otherdir/other.lib");
}
public void testRelativePathFor_inSiblingDir_3() {
testPathFor("grandDir/dir/mylib.lib", "grandDir/otherdir/other.lib", "../otherdir/other.lib");
}
public void testRelativePathFor_inSiblingDir_4() {
testPathFor("src/mylib.lib", "src-dir/other.lib", "../src-dir/other.lib");
}
private void testPathFor(String baseFilePath, String relFilePath,
String expected) {
File baseFile1 = new File(baseFilePath);
File relativeFile1 = new File(relFilePath);
String actual1 = Paths.relativePathFor(baseFile1, relativeFile1);
assertEquals(expected, actual1);
File baseFile2 = baseFile1.getAbsoluteFile();
File relativeFile2 = relativeFile1.getAbsoluteFile();
String actual2 = Paths.relativePathFor(baseFile2, relativeFile2);
assertEquals(expected, actual2);
}
}