/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.refactor; import java.io.File; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.teiid.designer.core.refactor.PathPair; /** * */ public class TestRefactorResourceUtils extends TestCase { public static Test suite() { return new TestSuite(TestRefactorResourceUtils.class); } public void testGetRelativePath() throws Exception { PathPair testPair, resultPair; File file = new File("/home/test1/programming/java/td-projects/parts/views/PartsXMLViews.xmi"); String testFilePath = file.getParentFile().getAbsolutePath(); // Rename a project directory testPair = new PathPair( "/home/test1/programming/java/td-projects/parts", "/home/test1/programming/java/td-projects/pgr"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../", resultPair.getSourcePath()); assertEquals("../", resultPair.getTargetPath()); // Move source directory into the same directory as the file testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/views/sources", "/home/test1/programming/java/td-projects/parts/sources"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("sources", resultPair.getSourcePath()); assertEquals("../sources", resultPair.getTargetPath()); // Move source directory into the same directory as the file testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources", "/home/test1/programming/java/td-projects/parts/views/sources"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources", resultPair.getSourcePath()); assertEquals("sources", resultPair.getTargetPath()); // Move source directory into the same directory as the file testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources/subdir", "/home/test1/programming/java/td-projects/parts/views/subdir"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources/subdir", resultPair.getSourcePath()); assertEquals("subdir", resultPair.getTargetPath()); // Move the outside-of-project views directory into testPair = new PathPair( "/home/test1/programming/java/td-projects/otherdir", "/home/test1/programming/java/td-projects/parts/otherdir"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../../otherdir", resultPair.getSourcePath()); assertEquals("../otherdir", resultPair.getTargetPath()); // Rename a sources sub-directory testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources/subdir", "/home/test1/programming/java/td-projects/parts/sources/diffdir"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources/subdir", resultPair.getSourcePath()); assertEquals("../sources/diffdir", resultPair.getTargetPath()); // Rename sources directory with reference to a file in the sources directory testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/sources12345/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources/importedFile.xmi", resultPair.getSourcePath()); assertEquals("../sources12345/importedFile.xmi", resultPair.getTargetPath()); // Rename sources directory ,with reference to a file in the sources directory, to something completely different testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/my12345/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources/importedFile.xmi", resultPair.getSourcePath()); assertEquals("../my12345/importedFile.xmi", resultPair.getTargetPath()); // Move file from sources directory to project directory testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/newImportedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources/importedFile.xmi", resultPair.getSourcePath()); assertEquals("../newImportedFile.xmi", resultPair.getTargetPath()); // Example where path pair is the same testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/sources/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/sources/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../sources/importedFile.xmi", resultPair.getSourcePath()); assertEquals("../sources/importedFile.xmi", resultPair.getTargetPath()); // Example where path pair is the same and a member of the directory file = new File("/home/test1/programming/java/td-projects/parts/folder1"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("importedFile.xmi", resultPair.getSourcePath()); assertEquals("importedFile.xmi", resultPair.getTargetPath()); // Example where path pair is the same and part of the directory hierarchy file = new File("/home/test1/programming/java/td-projects/parts"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("folder1/importedFile.xmi", resultPair.getSourcePath()); assertEquals("folder1/importedFile.xmi", resultPair.getTargetPath()); // Example where path pair is the same and a different part of the directory hierarchy file = new File("/home/test1/programming/java/td-projects/parts/folder2"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../folder1/importedFile.xmi", resultPair.getSourcePath()); assertEquals("../folder1/importedFile.xmi", resultPair.getTargetPath()); // Example where path pair is the same and a different part of the directory hierarchy file = new File("/home/test1/programming/java/td-projects/parts/folder2/subfolder"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi", "/home/test1/programming/java/td-projects/parts/folder1/importedFile.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../../folder1/importedFile.xmi", resultPair.getSourcePath()); assertEquals("../../folder1/importedFile.xmi", resultPair.getTargetPath()); // Example of moving second model which is resident in views with view model back into the sources folder file = new File("/home/test1/programming/java/td-projects/TestRenameModel/views"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/TestRenameModel/views/SecondModel.xmi", "/home/test1/programming/java/td-projects/TestRenameModel/sources/SecondModel.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("SecondModel.xmi", resultPair.getSourcePath()); assertEquals("../sources/SecondModel.xmi", resultPair.getTargetPath()); // Example of renaming a model file = new File("/home/test1/programming/java/td-projects/TestRenameModel"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/TestRenameModel/views/SecondModel.xmi", "/home/test1/programming/java/td-projects/TestRenameModel/views/ThirdModel.xmi"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("views/SecondModel.xmi", resultPair.getSourcePath()); assertEquals("views/ThirdModel.xmi", resultPair.getTargetPath()); // Rename a sources sub-directory file = new File("/home/test1/programming/java/td-projects/TestRenameModel/folder1/folder2"); testFilePath = file.getAbsolutePath(); testPair = new PathPair( "/home/test1/programming/java/td-projects/TestRenameModel/sources/subdir", "/home/test1/programming/java/td-projects/TestRenameModel/sources/diffdir"); resultPair = RefactorResourcesUtils.getRelativePath(testFilePath, testPair); assertEquals("../../sources/subdir", resultPair.getSourcePath()); assertEquals("../../sources/diffdir", resultPair.getTargetPath()); } }