/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* Created on Dec 10, 2006
* @author Fabio
*/
package com.python.pydev.refactoring.refactorer.refactorings.rename;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import org.python.pydev.parser.visitors.scope.ASTEntry;
import com.python.pydev.refactoring.wizards.rename.PyRenameClassProcess;
/**
* Class that should test the renaming of classes within a number of modules in
* the workspace.
*
* TODO: fix faling test because it should not get 'onlystringrefs'
*
* @author Fabio
*/
public class RenameClassRefactoringTest extends RefactoringRenameTestBase {
public static void main(String[] args) {
try {
DEBUG_REFERENCES = true;
RenameClassRefactoringTest test = new RenameClassRefactoringTest();
test.setUp();
test.testRename1();
test.tearDown();
junit.textui.TestRunner.run(RenameClassRefactoringTest.class);
} catch (Throwable e) {
e.printStackTrace();
}
}
protected Class getProcessUnderTest() {
return PyRenameClassProcess.class;
}
public void testRename1() throws Exception {
Map<String, HashSet<ASTEntry>> references = getReferencesForRenameSimple("reflib.renameclass.renfoo", 0, 8);
assertTrue(references.containsKey(CURRENT_MODULE_IN_REFERENCES)); //the current module must also be there
assertFalse(references.containsKey("reflib.renameclass.renfoo")); //the current module does not have a separated key here
assertFalse(references.containsKey("reflib.renameclass.__init__"));
//the modules with a duplicate definition here should not be in the results.
assertTrue(references.containsKey("reflib.renameclass.accessdup"));
assertTrue(references.containsKey("reflib.renameclass.duprenfoo"));
assertEquals(4, references.get(CURRENT_MODULE_IN_REFERENCES).size());
assertContains(1, 7, references.get(CURRENT_MODULE_IN_REFERENCES));
assertContains(4, 7, references.get(CURRENT_MODULE_IN_REFERENCES));
assertContains(6, 11, references.get(CURRENT_MODULE_IN_REFERENCES));
assertContains(7, 10, references.get(CURRENT_MODULE_IN_REFERENCES));
assertEquals(4, references.get("reflib.renameclass.accessfoo").size());
assertContains(1, 20, references.get("reflib.renameclass.accessfoo"));
assertContains(4, 7, references.get("reflib.renameclass.accessfoo"));
assertContains(5, 11, references.get("reflib.renameclass.accessfoo"));
assertContains(6, 9, references.get("reflib.renameclass.accessfoo"));
assertEquals(8, references.size());
}
public void testRename2() throws Exception {
Map<String, HashSet<ASTEntry>> references = getReferencesForRenameSimple("reflib.renameclass.accessfoo", 0, 22);
assertTrue(references.containsKey("reflib.renameclass.accessfoo") == false); //the current module does not have a separated key here
assertTrue(references.containsKey(CURRENT_MODULE_IN_REFERENCES)); //the current module must also be there
assertTrue(references.containsKey("reflib.renameclass.renfoo")); //the module where it is actually defined
}
public void testRenameLocalClass() throws Exception {
Map<String, HashSet<ASTEntry>> references = getReferencesForRenameSimple("reflib.renamelocaltoken.__init__", 1,
12);
assertTrue(references.containsKey(CURRENT_MODULE_IN_REFERENCES));
assertEquals(1, references.size());
Collection<ASTEntry> entries = references.get(CURRENT_MODULE_IN_REFERENCES);
assertEquals(2, entries.size());
}
public void testRename3() throws Exception {
Map<String, HashSet<ASTEntry>> references = getReferencesForRenameSimple("reflib.renameclass2.defuser", 2, 8);
assertTrue(references.containsKey("reflib.renameclass2.defuser") == false); //the current module does not have a separated key here
assertTrue(references.containsKey(CURRENT_MODULE_IN_REFERENCES)); //the current module must also be there
assertTrue(references.containsKey("reflib.renameclass2.sub1.__init__"));
assertTrue(references.containsKey("reflib.renameclass2.sub1.defmod"));
assertTrue(references.containsKey("reflib.renameclass2.defuser2"));
}
public void testRename4() throws Exception {
Map<String, HashSet<ASTEntry>> references = getReferencesForRenameSimple("reflib.renameclass.renkkk", 0, 8);
assertTrue(references.containsKey(CURRENT_MODULE_IN_REFERENCES)); //the current module must also be there
assertEquals(1, references.size());
Collection<ASTEntry> refs = references.get(CURRENT_MODULE_IN_REFERENCES);
for (ASTEntry entry : refs) {
assertTrue((entry.node.beginColumn == 1 && entry.node.beginLine == 1)
|| (entry.node.beginColumn == 9 && entry.node.beginLine == 4));
assertEquals("ActionProvider", entry.getName());
}
}
}