/** * Copyright (c) 2005-2013 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. */ package com.python.pydev.refactoring.refactorer.refactorings.rename; import java.io.File; import java.util.HashSet; import java.util.Map; import org.python.pydev.parser.visitors.scope.ASTEntry; import org.python.pydev.shared_core.structure.Tuple; import com.python.pydev.refactoring.wizards.rename.PyRenameAnyLocalProcess; import com.python.pydev.refactoring.wizards.rename.PyRenameAttributeProcess; @SuppressWarnings("rawtypes") public class RenameAttributeRefactoringTest extends RefactoringRenameTestBase { public static void main(String[] args) { try { DEBUG_REFERENCES = false; RenameAttributeRefactoringTest test = new RenameAttributeRefactoringTest(); test.setUp(); test.testRenameAttribute(); test.tearDown(); junit.textui.TestRunner.run(RenameAttributeRefactoringTest.class); } catch (Throwable e) { e.printStackTrace(); } } private Class expectedProcessClass; @Override protected Class getProcessUnderTest() { return expectedProcessClass; } public void testRenameAttribute() throws Exception { expectedProcessClass = PyRenameAttributeProcess.class; //Line 1 = " a.attrInstance = 10" //rename attrInstance Map<Tuple<String, File>, HashSet<ASTEntry>> references = getReferencesForRenameSimple( "reflib.renameattribute.attr2", 1, 8); assertEquals("" + "reflib.renameattribute.attr1\n" + " ASTEntry<attrInstance (NameTok L=3 C=14)>\n" + " Line: 2 self.attrInstance = 1 --> self.new_name = 1\n" + "\n" + "reflib.renameattribute.attr2\n" + " ASTEntry<attrInstance (Name L=3 C=6)>\n" + " Line: 2 #attrInstance comment --> #new_name comment\n" + " ASTEntry<attrInstance (Name L=4 C=6)>\n" + " Line: 3 'attrInstance comment' --> 'new_name comment'\n" + " ASTEntry<attrInstance (NameTok L=2 C=7)>\n" + " Line: 1 a.attrInstance = 10 --> a.new_name = 10\n" + "\n" + "", asStr(references)); } public void testRenameAttribute2() throws Exception { expectedProcessClass = PyRenameAnyLocalProcess.class; Map<Tuple<String, File>, HashSet<ASTEntry>> references = getReferencesForRenameSimple( "reflib.renameattribute2.mod1", 3, 18); assertEquals("" + "reflib.renameattribute2.mod1\n" + " ASTEntry<attribute_to_be_found (NameTok L=4 C=18)>\n" + " Line: 3 if param.attribute_to_be_found: --> if param.new_name:\n" + "\n" + "reflib.renameattribute2.mod2\n" + " ASTEntry<attribute_to_be_found (NameTok L=4 C=14)>\n" + " Line: 3 self.attribute_to_be_found = True --> self.new_name = True\n" + "\n" + "", asStr(references)); } public void testRenameClassAttribute() throws Exception { expectedProcessClass = PyRenameAttributeProcess.class; Map<Tuple<String, File>, HashSet<ASTEntry>> references = getReferencesForRenameSimple( "reflib.renameclassattribute.mod2", 5, 24); assertEquals( "" + "reflib.renameclassattribute.mod1\n" + " ASTEntry<class_attribute_to_be_found (NameTok L=4 C=18)>\n" + " Line: 3 if param.class_attribute_to_be_found: --> if param.new_name:\n" + "\n" + "reflib.renameclassattribute.mod2\n" + " ASTEntry<class_attribute_to_be_found (Name L=3 C=5)>\n" + " Line: 2 class_attribute_to_be_found = True --> new_name = True\n" + " ASTEntry<class_attribute_to_be_found (NameTok L=6 C=23)>\n" + " Line: 5 ClassWithAttr.class_attribute_to_be_found = True --> ClassWithAttr.new_name = True\n" + "\n" + "", asStr(references)); } }