blob: 7338bb241f1596a222276425ea2a5aba8d66a29a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2017 xored software, Inc. 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:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.ui.tests.refactoring;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.dltk.compiler.util.Util;
import org.eclipse.dltk.core.IScriptFolder;
import org.eclipse.dltk.core.tests.model.AbstractModelTests;
import org.eclipse.dltk.internal.corext.refactoring.util.ModelElementUtil;
import org.eclipse.dltk.ui.tests.DLTKUITestsPlugin;
public class ModelElementUtilTests extends AbstractModelTests {
/**
* @param testProjectName
* @param name
*/
public ModelElementUtilTests(String name) {
super(DLTKUITestsPlugin.PLUGIN_ID, name);
}
public void testGetPackageAndSubpackages() throws CoreException,
IOException {
final String projectName = "subpackages";
setUpScriptProject(projectName);
try {
waitUntilIndexesReady();
IScriptFolder folder0 = getScriptFolder(projectName,
Util.EMPTY_STRING, new Path("folder0"));
IScriptFolder[] subfolders0 = ModelElementUtil
.getPackageAndSubpackages(folder0);
checkFolders(subfolders0, new String[] { folder0.getElementName() });
//
IScriptFolder folder1 = getScriptFolder(projectName,
Util.EMPTY_STRING, new Path("folder1"));
IScriptFolder[] subfolders1 = ModelElementUtil
.getPackageAndSubpackages(folder1);
checkFolders(subfolders1, new String[] { folder1.getElementName(),
folder1.getElementName() + "/A" });
//
IScriptFolder folder2 = getScriptFolder(projectName,
Util.EMPTY_STRING, new Path("folder2"));
IScriptFolder[] subfolders2 = ModelElementUtil
.getPackageAndSubpackages(folder2);
checkFolders(subfolders2, new String[] { folder2.getElementName(),
folder2.getElementName() + "/B",
folder2.getElementName() + "/C" });
}
finally {
deleteProject(projectName);
}
}
/**
* @param folders
* @param names
*/
private void checkFolders(IScriptFolder[] folders, String[] names) {
assertEquals(names.length, folders.length);
final Set<String> set = new HashSet<>();
for (int i = 0; i < folders.length; ++i) {
final String relativePath = folders[i].getPath()
.removeFirstSegments(1).toString();
assertTrue("duplicate entry " + relativePath, set.add(relativePath));
}
for (int i = 0; i < names.length; ++i) {
assertTrue(names[i] + " is not found", set.contains(names[i]));
}
}
}