From e063f00b674db979d5e634a9dda4f631b3c0614b Mon Sep 17 00:00:00 2001 From: Jesse Weinstein Date: Mon, 11 Mar 2013 16:36:31 -0400 Subject: [PATCH] Bug 240692 -- Fix rename for templates Just a failing test, so far. Change-Id: Idb923862614ff2f1b7736495d8a2d8967e278de7 Reviewed-on: https://git.eclipse.org/r/11064 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../rename/RenameTemplatesTests.java | 102 +++++++++++------- 1 file changed, 64 insertions(+), 38 deletions(-) diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java index 1adde370a20..fa30925b358 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/refactoring/rename/RenameTemplatesTests.java @@ -24,44 +24,70 @@ import org.eclipse.ltk.core.refactoring.RefactoringStatus; */ public class RenameTemplatesTests extends RenameTests { - public RenameTemplatesTests(String name) { - super(name); - } + public RenameTemplatesTests(String name) { + super(name); + } - public static Test suite(){ - return suite(true); - } + public static Test suite() { + return suite(true); + } - public static Test suite( boolean cleanup ) { - TestSuite suite = new TestSuite(RenameTemplatesTests.class); - if (cleanup) { - suite.addTest( new RefactoringTests("cleanupProject") ); //$NON-NLS-1$ - } - return suite; - } - - public void testClassTemplate() throws Exception { - StringWriter writer = new StringWriter(); - writer.write("template \n"); //$NON-NLS-1$ - writer.write("class Array { \n"); //$NON-NLS-1$ - writer.write("public: \n"); //$NON-NLS-1$ - writer.write(" Array(unsigned sz) {} \n"); //$NON-NLS-1$ - writer.write(" ~Array(){} \n"); //$NON-NLS-1$ - writer.write(" Type& operator[] (unsigned idx); \n"); //$NON-NLS-1$ - writer.write("}; \n"); //$NON-NLS-1$ - writer.write("template \n"); //$NON-NLS-1$ - writer.write("inline Type& Array::operator[] (unsigned index) {\n"); //$NON-NLS-1$ - writer.write(" return 1; \n"); //$NON-NLS-1$ - writer.write("}; \n"); //$NON-NLS-1$ - String contents = writer.toString(); - IFile cpp= importFile("test.cpp", contents ); //$NON-NLS-1$ - - int offset1= contents.indexOf("Array"); //$NON-NLS-1$ - - RefactoringStatus stat= checkConditions(cpp, offset1, "WELT"); //$NON-NLS-1$ - assertRefactoringOk(stat); - - Change ch= getRefactorChanges(cpp, offset1, "WELT"); //$NON-NLS-1$ - assertTotalChanges(4, ch); - } + public static Test suite(boolean cleanup) { + TestSuite suite = new TestSuite(RenameTemplatesTests.class); + if (cleanup) { + suite.addTest(new RefactoringTests("cleanupProject")); + } + return suite; + } + + public void testClassTemplate() throws Exception { + StringWriter writer = new StringWriter(); + writer.write("template \n"); + writer.write("class Array { \n"); + writer.write("public: \n"); + writer.write(" Array(unsigned sz) {} \n"); + writer.write(" ~Array(){} \n"); + writer.write(" Type& operator[] (unsigned idx); \n"); + writer.write("}; \n"); + writer.write("template \n"); + writer.write("inline Type& Array::operator[] (unsigned index) {\n"); + writer.write(" return 1; \n"); + writer.write("}; \n"); + String contents = writer.toString(); + IFile cpp = importFile("test.cpp", contents); + + int offset1 = contents.indexOf("Array"); + + RefactoringStatus stat = checkConditions(cpp, offset1, "WELT"); + assertRefactoringOk(stat); + + Change ch = getRefactorChanges(cpp, offset1, "WELT"); + assertTotalChanges(4, ch); + } + + public void _testRenameSpecializations_bug240692() throws Exception { + StringWriter writer = new StringWriter(); + + writer.write("template \n"); + writer.write("class CSome {\n"); + writer.write("public:\n"); + writer.write(" void Foo() {};\n"); + writer.write("};\n"); + + writer.write("int main ()\n"); + writer.write("{\n"); + writer.write(" CSome A;\n"); + writer.write(" A.Foo();\n"); + writer.write(" return 0;\n"); + writer.write("}\n"); + String contents = writer.toString(); + IFile cpp = importFile("test.cpp", contents); + + int offset1 = contents.indexOf("Foo"); + + RefactoringStatus stat = checkConditions(cpp, offset1, "Baz"); + assertRefactoringOk(stat); + + assertTotalChanges(2, getRefactorChanges(cpp, offset1, "Baz")); + } }