diff options
Diffstat (limited to 'plugins/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java')
-rw-r--r-- | plugins/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java | 2133 |
1 files changed, 0 insertions, 2133 deletions
diff --git a/plugins/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java b/plugins/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java deleted file mode 100644 index d5848b611867..000000000000 --- a/plugins/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java +++ /dev/null @@ -1,2133 +0,0 @@ -package com.intellij.structuralsearch; - -import com.intellij.openapi.application.PluginPathManager; -import com.intellij.psi.CommonClassNames; -import com.intellij.testFramework.PlatformTestUtil; -import com.intellij.util.ThrowableRunnable; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; - -/** - * @by Maxim.Mossienko - */ -@SuppressWarnings({"ALL"}) -public class StructuralReplaceTest extends StructuralReplaceTestCase { - public void testReplaceInLiterals() { - String s1 = "String ID_SPEED = \"Speed\";"; - String s2 = "String 'name = \"'string\";"; - String s2_2 = "String 'name = \"'string:[regex( .* )]\";"; - String s3 = "VSegAttribute $name$ = new VSegAttribute(\"$string$\");"; - String expectedResult = "VSegAttribute ID_SPEED = new VSegAttribute(\"Speed\");"; - - String actualResult = replacer.testReplace(s1,s2,s3,options); - assertEquals( - "Matching/replacing literals", - expectedResult, - actualResult - ); - - actualResult = replacer.testReplace(s1,s2_2,s3,options); - assertEquals( - "Matching/replacing literals", - expectedResult, - actualResult - ); - - String s4 = "params.put(\"BACKGROUND\", \"#7B528D\");"; - String s5 = "params.put(\"$FieldName$\", \"#$exp$\");"; - String s6 = "String $FieldName$ = \"$FieldName$\";\n" + - "params.put($FieldName$, \"$exp$\");"; - String expectedResult2 = "String BACKGROUND = \"BACKGROUND\";\n" + - "params.put(BACKGROUND, \"7B528D\");"; - - actualResult = replacer.testReplace(s4,s5,s6,options); - - assertEquals( - "string literal replacement 2", - expectedResult2, - actualResult - ); - - String s7 = "IconLoader.getIcon(\"/ant/property.png\");\n" + - "IconLoader.getIcon(\"/ant/another/property.png\");\n"; - String s8 = "IconLoader.getIcon(\"/'module/'name:[regex( \\w+ )].png\");"; - String s9 = "Icons.$module$.$name$;"; - String expectedResult3 = "Icons.ant.property;\n" + - "IconLoader.getIcon(\"/ant/another/property.png\");\n"; - - actualResult = replacer.testReplace(s7,s8,s9,options); - - assertEquals( - "string literal replacement 3", - expectedResult3, - actualResult - ); - - String s10 = "configureByFile(path + \"1.html\");\n" + - " checkResultByFile(path + \"1_after.html\");\n" + - " checkResultByFile(path + \"1_after2.html\");\n" + - " checkResultByFile(path + \"1_after3.html\");"; - String s11 = "\"'a.html\""; - String s12 = "\"$a$.\"+ext"; - String expectedResult4 = "configureByFile(path + \"1.\"+ext);\n" + - " checkResultByFile(path + \"1_after.\"+ext);\n" + - " checkResultByFile(path + \"1_after2.\"+ext);\n" + - " checkResultByFile(path + \"1_after3.\"+ext);"; - - actualResult = replacer.testReplace(s10,s11,s12,options); - assertEquals( - "string literal replacement 4", - expectedResult4, - actualResult - ); - } - - public void testReplace2() { - String s1 = "package com.www.xxx.yyy;\n" + - "\n" + - "import javax.swing.*;\n" + - "\n" + - "public class Test {\n" + - " public static void main(String[] args) {\n" + - " if (1==1)\n" + - " JOptionPane.showMessageDialog(null, \"MESSAGE\");\n" + - " }\n" + - "}"; - String s2 = "JOptionPane.'showDialog(null, 'msg);"; - String s3 = "//FIXME provide a parent frame\n" + - "JOptionPane.$showDialog$(null, $msg$);"; - - String expectedResult = "package com.www.xxx.yyy;\n" + - "\n" + - "import javax.swing.*;\n" + - "\n" + - "public class Test {\n" + - " public static void main(String[] args) {\n" + - " if (1==1)\n" + - " //FIXME provide a parent frame\n" + - "JOptionPane.showMessageDialog(null, \"MESSAGE\");\n" + - " }\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,s3,options); - assertEquals( - "adding comment to statement inside the if body", - expectedResult, - actualResult - ); - - String s4 = "myButton.setText(\"Ok\");"; - String s5 = "'Instance.'MethodCall:[regex( setText )]('Parameter*:[regex( \"Ok\" )]);"; - String s6 = "$Instance$.$MethodCall$(\"OK\");"; - - String expectedResult2 = "myButton.setText(\"OK\");"; - - actualResult = replacer.testReplace(s4,s5,s6,options); - assertEquals( - "adding comment to statement inside the if body", - expectedResult2, - actualResult - ); - } - - public void testReplace() { - String str = "// searching for several constructions\n" + - " lastTest = \"several constructions match\";\n" + - " matches = testMatcher.findMatches(s5,s4, options);\n" + - " if (matches==null || matches.size()!=3) return false;\n" + - "\n" + - " // searching for several constructions\n" + - " lastTest = \"several constructions 2\";\n" + - " matches = testMatcher.findMatches(s5,s6, options);\n" + - " if (matches.size()!=0) return false;\n" + - "\n" + - " //options.setLooseMatching(true);\n" + - " // searching for several constructions\n" + - " lastTest = \"several constructions 3\";\n" + - " matches = testMatcher.findMatches(s7,s8, options);\n" + - " if (matches.size()!=2) return false;"; - - String str2=" lastTest = 'Descr;\n" + - " matches = testMatcher.findMatches('In,'Pattern, options);\n" + - " if (matches.size()!='Number) return false;"; - String str3 = "assertEquals($Descr$,testMatcher.findMatches($In$,$Pattern$, options).size(),$Number$);"; - String expectedResult1 = "// searching for several constructions\n" + - " lastTest = \"several constructions match\";\n" + - " matches = testMatcher.findMatches(s5, s4, options);\n" + - " if (matches == null || matches.size() != 3) return false;\n" + - "\n" + - " // searching for several constructions\n" + - " assertEquals(\"several constructions 2\", testMatcher.findMatches(s5, s6, options).size(), 0);\n" + - "\n" + - " //options.setLooseMatching(true);\n" + - " // searching for several constructions\n" + - " assertEquals(\"several constructions 3\", testMatcher.findMatches(s7, s8, options).size(), 2);"; - - String str4 = ""; - - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(str,str2,str3,options); - options.setToReformatAccordingToStyle(false); - assertEquals("Basic replacement with formatter",expectedResult1,actualResult); - - actualResult = replacer.testReplace(str,str2,str4,options); - String expectedResult2 = "// searching for several constructions\n" + - " lastTest = \"several constructions match\";\n" + - " matches = testMatcher.findMatches(s5,s4, options);\n" + - " if (matches==null || matches.size()!=3) return false;\n" + - "\n" + - " // searching for several constructions\n" + - "\n" + - " //options.setLooseMatching(true);\n" + - " // searching for several constructions"; - - assertEquals("Empty replacement",expectedResult2,actualResult); - - String str5 = "testMatcher.findMatches('In,'Pattern, options).size()"; - String str6 = "findMatchesCount($In$,$Pattern$)"; - String expectedResult3="// searching for several constructions\n" + - " lastTest = \"several constructions match\";\n" + - " matches = testMatcher.findMatches(s5, s4, options);\n" + - " if (matches == null || matches.size() != 3) return false;\n" + - "\n" + - " // searching for several constructions\n" + - " assertEquals(\"several constructions 2\", findMatchesCount(s5,s6), 0);\n" + - "\n" + - " //options.setLooseMatching(true);\n" + - " // searching for several constructions\n" + - " assertEquals(\"several constructions 3\", findMatchesCount(s7,s8), 2);"; - actualResult = replacer.testReplace(expectedResult1,str5,str6,options); - - assertEquals( "Expression replacement", expectedResult3,actualResult ); - - String str7 = "try { a.doSomething(); b.doSomething(); } catch(IOException ex) { ex.printStackTrace(); throw new RuntimeException(ex); }"; - String str8 = "try { 'Statements+; } catch('_ '_) { 'HandlerStatements+; }"; - String str9 = "$Statements$;"; - String expectedResult4 = "a.doSomething(); b.doSomething();"; - - actualResult = replacer.testReplace(str7,str8,str9,options); - assertEquals( "Multi line match in replacement", expectedResult4,actualResult ); - - String str10 = " parentNode.insert(compositeNode, i);\n" + - " if (asyncMode) {\n" + - " myTreeModel.nodesWereInserted(parentNode,new int[] {i} );\n" + - " }"; - String str11 = " 'parentNode.insert('newNode, 'i);\n" + - " if (asyncMode) {\n" + - " myTreeModel.nodesWereInserted('parentNode,new int[] {'i} );\n" + - " }"; - String str12 = "addChild($parentNode$,$newNode$, $i$);"; - String expectedResult5 = " addChild(parentNode,compositeNode, i);"; - - actualResult = replacer.testReplace(str10,str11,str12,options); - assertEquals( "Array initializer replacement", expectedResult5,actualResult); - - String str13 = " aaa(5,6,3,4,1,2);"; - String str14 = "aaa('t{2,2},3,4,'q{2,2});"; - String str15 = "aaa($q$,3,4,$t$);"; - String expectedResult6 = " aaa(1,2,3,4,5,6);"; - - actualResult = replacer.testReplace(str13,str14,str15,options); - assertEquals("Parameter multiple match",expectedResult6,actualResult); - - String str16 = " int c = a();"; - String str17 = "'t:a ('q*,'p*)"; - String str18 = "$t$($q$,1,$p$)"; - String expectedResult7 = " int c = a(1);"; - - actualResult = replacer.testReplace(str16,str17,str18,options); - assertEquals("Replacement of init in definition + empty substitution",expectedResult7,actualResult); - - String str19 = " aaa(bbb);"; - String str20 = "'t('_);"; - String str21 = "$t$(ccc);"; - String expectedResult8 = " aaa(ccc);"; - - actualResult = replacer.testReplace(str19,str20,str21,options); - assertEquals("One substition replacement",expectedResult8,actualResult); - - String str22 = " instance.setAAA(anotherInstance.getBBB());"; - String str23 = " 'i.'m:set(.+) ('a.'m2:get(.+) ());"; - String str24 = " $a$.set$m2_1$( $i$.get$m_1$() );"; - String expectedResult9 = " anotherInstance.setBBB( instance.getAAA() );"; - - actualResult = replacer.testReplace(str22,str23,str24,options); - assertEquals("Reg exp substitution replacement",expectedResult9,actualResult); - - String str25 = " LaterInvocator.invokeLater(new Runnable() {\n" + - " public void run() {\n" + - " LOG.info(\"refreshFilesAsync, modalityState=\" + ModalityState.current());\n" + - " myHandler.getFiles().refreshFilesAsync(new Runnable() {\n" + - " public void run() {\n" + - " semaphore.up();\n" + - " }\n" + - " });\n" + - " }\n" + - " });"; - String str26 = " LaterInvocator.invokeLater('Params{1,10});"; - String str27 = " com.intellij.openapi.application.ApplicationManager.getApplication().invokeLater($Params$);"; - String expectedResult10 = " com.intellij.openapi.application.ApplicationManager.getApplication().invokeLater(new Runnable() {\n" + - " public void run() {\n" + - " LOG.info(\"refreshFilesAsync, modalityState=\" + ModalityState.current());\n" + - " myHandler.getFiles().refreshFilesAsync(new Runnable() {\n" + - " public void run() {\n" + - " semaphore.up();\n" + - " }\n" + - " });\n" + - " }\n" + - " });"; - - actualResult = replacer.testReplace(str25,str26,str27,options); - assertEquals("Anonymous in parameter",expectedResult10,actualResult); - - String str28 = "UTElementNode elementNode = new UTElementNode(myProject, processedElement, psiFile,\n" + - " processedElement.getTextOffset(), true,\n" + - " !myUsageViewDescriptor.toMarkInvalidOrReadonlyUsages(), null);"; - String str29 = "new UTElementNode('param, 'directory, 'null, '0, 'true, !'descr.toMarkInvalidOrReadonlyUsages(),\n" + - " 'referencesWord)"; - String str30 = "new UTElementNode($param$, $directory$, $null$, $0$, $true$, true,\n" + - " $referencesWord$)"; - - String expectedResult11 = "UTElementNode elementNode = new UTElementNode(myProject, processedElement, psiFile, processedElement.getTextOffset(), true, true,\n" + - " null);"; - actualResult = replacer.testReplace(str28,str29,str30,options); - assertEquals("Replace in def initializer",expectedResult11,actualResult); - - String s31 = "a = b; b = c; a=a; c=c;"; - String s32 = "'a = 'a;"; - String s33 = "1 = 1;"; - String expectedResult12 = "a = b; b = c; 1 = 1; 1 = 1;"; - - actualResult = replacer.testReplace(s31,s32,s33,options); - assertEquals( - "replace silly assignments", - expectedResult12, - actualResult - ); - - String s34 = "ParamChecker.isTrue(1==1, \"!!!\");"; - String s35 = "ParamChecker.isTrue('expr, 'msg)"; - String s36 = "assert $expr$ : $msg$"; - - String expectedResult13 = "assert 1==1 : \"!!!\";"; - actualResult = replacer.testReplace(s34,s35,s36,options); - assertEquals( - "replace with assert", - expectedResult13, - actualResult - ); - - String s37 = "try { \n" + - " ParamChecker.isTrue(1==1, \"!!!\");\n \n" + - " // comment we want to leave\n \n" + - " ParamChecker.isTrue(2==2, \"!!!\");\n" + - "} catch(Exception ex) {}"; - String s38 = "try {\n" + - " 'Statement{0,100};\n" + - "} catch(Exception ex) {}"; - String s39 = "$Statement$;"; - - String expectedResult14 = "ParamChecker.isTrue(1==1, \"!!!\");\n \n" + - " // comment we want to leave\n \n" + - " ParamChecker.isTrue(2==2, \"!!!\");"; - actualResult = replacer.testReplace(s37,s38,s39,options); - assertEquals( - "remove try with comments inside", - expectedResult14, - actualResult - ); - - String s40 = "ParamChecker.instanceOf(queryKey, GroupBySqlTypePolicy.GroupKey.class);"; - String s41 = "ParamChecker.instanceOf('obj, 'class.class);"; - String s42 = "assert $obj$ instanceof $class$ : \"$obj$ is an instance of \" + $obj$.getClass() + \"; expected \" + $class$.class;"; - String expectedResult15 = "assert queryKey instanceof GroupBySqlTypePolicy.GroupKey : \"queryKey is an instance of \" + queryKey.getClass() + \"; expected \" + GroupBySqlTypePolicy.GroupKey.class;"; - - actualResult = replacer.testReplace(s40,s41,s42,options); - assertEquals( - "Matching/replacing .class literals", - expectedResult15, - actualResult - ); - - String s43 = "class Wpd {\n" + - " static final String TAG_BEAN_VALUE = \"\";\n" + - "}\n" + - "XmlTag beanTag = rootTag.findSubTag(Wpd.TAG_BEAN_VALUE);"; - String s44 = "'Instance?.findSubTag( 'Parameter:[exprtype( *String ) ])"; - String s45 = "jetbrains.fabrique.util.XmlApiUtil.findSubTag($Instance$, $Parameter$)"; - String expectedResult16 = "class Wpd {\n" + - " static final String TAG_BEAN_VALUE = \"\";\n" + - "}\n" + - "XmlTag beanTag = jetbrains.fabrique.util.XmlApiUtil.findSubTag(rootTag, Wpd.TAG_BEAN_VALUE);"; - - actualResult = replacer.testReplace(s43,s44,s45,options); - assertEquals( - "Matching/replacing static fields", - expectedResult16, - actualResult - ); - - String s46 = "Rectangle2D rec = new Rectangle2D.Double(\n" + - " drec.getX(),\n" + - " drec.getY(),\n" + - " drec.getWidth(),\n" + - " drec.getWidth());"; - String s47 = "$Instance$.$MethodCall$()"; - String s48 = "OtherClass.round($Instance$.$MethodCall$(),5)"; - String expectedResult17 = "Rectangle2D rec = new Rectangle2D.Double(\n" + - " OtherClass.round(drec.getX(),5),\n" + - " OtherClass.round(drec.getY(),5),\n" + - " OtherClass.round(drec.getWidth(),5),\n" + - " OtherClass.round(drec.getWidth(),5));"; - actualResult = replacer.testReplace(s46,s47,s48,options); - - assertEquals( - "Replace in constructor", - expectedResult17, - actualResult - ); - - String s49 = "class A {}\n" + - "class B extends A {}\n" + - "A a = new B();"; - String s50 = "A 'b = new 'B:*A ();"; - String s51 = "A $b$ = new $B$(\"$b$\");"; - String expectedResult18 = "class A {}\n" + - "class B extends A {}\n" + - "A a = new B(\"a\");"; - - actualResult = replacer.testReplace(s49,s50,s51,options); - - assertEquals( - "Class navigation", - expectedResult18, - actualResult - ); - - String s52 = "try {\n" + - " aaa();\n" + - "} finally {\n" + - " System.out.println();" + - "}\n" + - "try {\n" + - " aaa2();\n" + - "} catch(Exception ex) {\n" + - " aaa3();\n" + - "}\n" + - "finally {\n" + - " System.out.println();\n" + - "}\n" + - "try {\n" + - " aaa4();\n" + - "} catch(Exception ex) {\n" + - " aaa5();\n" + - "}\n"; - String s53 = "try { 'a; } finally {\n" + - " 'b;" + - "}"; - String s54 = "$a$;"; - String expectedResult19 = "aaa();\n" + - "try {\n" + - " aaa2();\n" + - "} catch(Exception ex) {\n" + - " aaa3();\n" + - "}\n" + - "finally {\n" + - " System.out.println();\n" + - "}\n" + - "try {\n" + - " aaa4();\n" + - "} catch(Exception ex) {\n" + - " aaa5();\n" + - "}\n"; - - actualResult = replacer.testReplace(s52,s53,s54,options); - - assertEquals( - "Try/ catch/ finally is replace with try/finally", - expectedResult19, - actualResult - ); - - String s55 = "for(Iterator<String> iterator = stringlist.iterator(); iterator.hasNext();) {\n" + - " String str = iterator.next();\n" + - " System.out.println( str );\n" + - "}"; - String s56 = "for (Iterator<$Type$> $variable$ = $container$.iterator(); $variable$.hasNext();) {\n" + - " $Type$ $var$ = $variable$.next();\n" + - " $Statements$;\n" + - "}"; - String s57 = "for($Type$ $var$:$container$) {\n" + - " $Statements$;\n" + - "}"; - String expectedResult20 = "for(String str :stringlist) {\n" + - " System.out.println( str );\n" + - "}"; - - actualResult = replacer.testReplace(s55,s56,s57,options); - - assertEquals( - "for with foreach", - expectedResult20, - actualResult - ); - - String s58 = "class A {\n" + - " static Set<String> b_MAP = new HashSet<String>();\n" + - " int c;\n" + - "}"; - String s59 = "'a:[ regex( (.*)_MAP ) ]"; - String s60 = "$a_1$_SET"; - String expectedResult21 = "class A {\n" + - " static Set<String> b_SET = new HashSet<String>();\n" + - " int c;\n" + - "}"; - - actualResult = replacer.testReplace(s58,s59,s60,options); - - assertEquals( - "replace symbol in definition", - expectedResult21, - actualResult - ); - - String s64 = "int x = 42;\n" + - "int y = 42; // Stuff"; - String s65 = "'Type 'Variable = 'Value; // 'Comment"; - String s66 = "/**\n" + - " *$Comment$\n" + - " */\n" + - "$Type$ $Variable$ = $Value$;"; - String expectedResult23 = "int x = 42;\n" + - "/**\n" + - " * Stuff\n" + - " */\n" + - "int y = 42;"; - - actualResult = replacer.testReplace(s64,s65,s66,options); - - assertEquals( - "Replacement of the comment with javadoc", - expectedResult23, - actualResult - ); - - String s61 = "try { 1=1; } catch(Exception e) { 1=1; } catch(Throwable t) { 2=2; }"; - String s62 = "try { 'a; } catch(Exception e) { 'b; }"; - String s63 = "try { $a$; } catch(Exception1 e) { $b$; } catch(Exception2 e) { $b$; }"; - String expectedResult22 = "try { 1=1; } catch(Exception1 e) { 1=1; } catch(Exception2 e) { 1=1; } catch (Throwable t) { 2=2; }"; - - actualResult = replacer.testReplace(s61,s62,s63,options); - - assertEquals( - "try replacement by another try will leave the unmatched catch", - expectedResult22, - actualResult - ); - - } - - public void testReplaceExpr() { - String s1 = "new SimpleDateFormat(\"yyyyMMddHHmmss\")"; - String s2 = "'expr"; - String s3 = "new AtomicReference<DateFormat>($expr$)"; - String expectedResult = "new AtomicReference<DateFormat>(new SimpleDateFormat(\"yyyyMMddHHmmss\"))"; - - actualResult = replacer.testReplace(s1, s2, s3, options); - - assertEquals("Replacement of top-level expression only", expectedResult, actualResult); - - String s4 = "get(\"smth\")"; - String s5 = "'expr"; - String s6 = "new Integer($expr$)"; - String expectedResult1 = "new Integer(get(\"smth\"))"; - - actualResult = replacer.testReplace(s4, s5, s6, options); - assertEquals("Replacement of top-level expression only", expectedResult1, actualResult); - } - - public void testReplaceParameter() { - String s1 = "class A { void b(int c, int d, int e) {} }"; - String s2 = "int d"; - String s3 = "int d2"; - String expectedResult = "class A { void b(int c, int d2, int e) {} }"; - - actualResult = replacer.testReplace(s1,s2,s3,options); - - assertEquals( - "replace method parameter", - expectedResult, - actualResult - ); - } - - public void testReplaceWithComments() { - String s1 = "map.put(key, value); // line 1"; - String s2 = "map.put(key, value); // line 1"; - String s3 = "map.put(key, value); // line 1"; - String expectedResult = "map.put(key, value); // line 1"; - - actualResult = replacer.testReplace(s1,s2,s3,options); - - assertEquals( - "replace self with comment after", - expectedResult, - actualResult - ); - - String s4 = "if (true) System.out.println(\"1111\"); else System.out.println(\"2222\");\n" + - "while(true) System.out.println(\"1111\");"; - String s5 = "System.out.println('Test);"; - String s6 = "/* System.out.println($Test$); */"; - actualResult = replacer.testReplace(s4,s5,s6,options); - String expectedResult2 = "if (true) /* System.out.println(\"1111\"); */; else /* System.out.println(\"2222\"); */;\n" + - "while(true) /* System.out.println(\"1111\"); */;"; - - assertEquals( - "replace with comment", - expectedResult2, - actualResult - ); - } - - public void testSeveralStatements() { - String s1 = "{\n" + - " System.out.println(1);\n" + - " System.out.println(2);\n" + - " System.out.println(3);\n" + - " }\n" + - "{\n" + - " System.out.println(1);\n" + - " System.out.println(2);\n" + - " System.out.println(3);\n" + - " }\n" + - "{\n" + - " System.out.println(1);\n" + - " System.out.println(2);\n" + - " System.out.println(3);\n" + - " }"; - String s2 = - " System.out.println(1);\n" + - " System.out.println(2);\n" + - " System.out.println(3);\n"; - String s3 = " System.out.println(3);\n" + - " System.out.println(2);\n" + - " System.out.println(1);\n"; - String expectedResult1 = " {\n" + - " System.out.println(3);\n" + - " System.out.println(2);\n" + - " System.out.println(1);\n" + - " }\n" + - " {\n" + - " System.out.println(3);\n" + - " System.out.println(2);\n" + - " System.out.println(1);\n" + - " }\n" + - " {\n" + - " System.out.println(3);\n" + - " System.out.println(2);\n" + - " System.out.println(1);\n" + - " }"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s1,s2,s3,options); - options.setToReformatAccordingToStyle(false); - assertEquals( - "three statements replacement", - expectedResult1, - actualResult - ); - - String s4 = "ProgressManager.getInstance().startNonCancelableAction();\n" + - " try {\n" + - " read(id, READ_PARENT);\n" + - " return myViewport.parent;\n" + - " }\n" + - " finally {\n" + - " ProgressManager.getInstance().finishNonCancelableAction();\n" + - " }"; - String s5 = "ProgressManager.getInstance().startNonCancelableAction();\n" + - " try {\n" + - " '_statement{2,2};\n" + - " }\n" + - " finally {\n" + - " ProgressManager.getInstance().finishNonCancelableAction();\n" + - " }"; - String s6 = "$statement$;"; - String expectedResult2 = "read(id, READ_PARENT);\n" + - " return myViewport.parent;"; - actualResult = replacer.testReplace(s4,s5,s6,options); - assertEquals( - "extra ;", - expectedResult2, - actualResult - ); - - String s7 = "public class A {\n" + - " void f() {\n" + - " new Runnable() {\n" + - " public void run() {\n" + - " l();\n" + - " }\n" + - "\n" + - " private void l() {\n" + - " int i = 9;\n" + - " int j = 9;\n" + - " }\n" + - " };\n" + - " new Runnable() {\n" + - " public void run() {\n" + - " l();\n" + - " }\n" + - "\n" + - " private void l() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - "}"; - String s8 = "new Runnable() {\n" + - " public void run() {\n" + - " 'l ();\n" + - " }\n" + - " private void 'l () {\n" + - " 'st{2,2};\n" + - " }\n" + - "};"; - String s9 = "new My() {\n" + - " public void f() {\n" + - " $st$;\n" + - " }\n" + - "};"; - - String expectedResult3 = "public class A {\n" + - " void f() {\n" + - " new My() {\n" + - " public void f() {\n" + - " int i = 9;\n" + - " int j = 9;\n" + - " }\n" + - " };\n" + - " new My() {\n" + - " public void f() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - "}"; - boolean formatAccordingToStyle = options.isToReformatAccordingToStyle(); - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s7,s8,s9,options); - assertEquals( - "extra ; 2", - expectedResult3, - actualResult - ); - - String s10 = "public class A {\n" + - " void f() {\n" + - " new Runnable() {\n" + - " public void run() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " public void run2() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - "\n" + - " };\n" + - " new Runnable() {\n" + - " public void run() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " public void run2() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - "\n" + - " };\n" + - "new Runnable() {\n" + - " public void run() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " public void run2() {\n" + - " l2();\n" + - " l2();\n" + - " }\n" + - "\n" + - " };\n" + - " }\n" + - "\n" + - " private void l() {\n" + - " int i = 9;\n" + - " int j = 9;\n" + - " }\n" + - "}\n" + - "\n" + - "abstract class My {\n" + - " abstract void f();\n" + - "}"; - String s11 = "new Runnable() {\n" + - " public void run() {\n" + - " 'l{2,2};\n" + - " }\n" + - " public void run2() {\n" + - " 'l{2,2};\n" + - " }\n" + - "\n" + - " };"; - String s12 = "new My() {\n" + - " public void f() {\n" + - " $l$;\n" + - " }\n" + - " };"; - String expectedResult4 = "public class A {\n" + - " void f() {\n" + - " new My() {\n" + - " public void f() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " };\n" + - " new My() {\n" + - " public void f() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - " };\n" + - " new Runnable() {\n" + - " public void run() {\n" + - " l();\n" + - " l();\n" + - " }\n" + - "\n" + - " public void run2() {\n" + - " l2();\n" + - " l2();\n" + - " }\n" + - "\n" + - " };\n" + - " }\n" + - "\n" + - " private void l() {\n" + - " int i = 9;\n" + - " int j = 9;\n" + - " }\n" + - "}\n" + - "\n" + - "abstract class My {\n" + - " abstract void f();\n" + - "}"; - - actualResult = replacer.testReplace(s10,s11,s12,options); - assertEquals( - "same multiple occurences 2 times", - expectedResult4, - actualResult - ); - - options.setToReformatAccordingToStyle(formatAccordingToStyle); - - String s13 = " PsiLock.LOCK.acquire();\n" + - " try {\n" + - " return value;\n" + - " }\n" + - " finally {\n" + - " PsiLock.LOCK.release();\n" + - " }"; - String s13_2 = " PsiLock.LOCK.acquire();\n" + - " try {\n" + - " if (true) { return value; }\n" + - " }\n" + - " finally {\n" + - " PsiLock.LOCK.release();\n" + - " }"; - String s13_3 = " PsiLock.LOCK.acquire();\n" + - " try {\n" + - " if (true) { return value; }\n\n" + - " if (true) { return value; }\n" + - " }\n" + - " finally {\n" + - " PsiLock.LOCK.release();\n" + - " }"; - String s14 = " PsiLock.LOCK.acquire();\n" + - " try {\n" + - " 'T{1,1000};\n" + - " }\n" + - " finally {\n" + - " PsiLock.LOCK.release();\n" + - " }"; - String s15 = "synchronized(PsiLock.LOCK) {\n" + - " $T$;\n" + - "}"; - - String expectedResult5 = " synchronized (PsiLock.LOCK) {\n" + - " return value;\n" + - " }"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s13,s14,s15,options); - options.setToReformatAccordingToStyle(false); - - assertEquals( - "extra ; over return", - expectedResult5, - actualResult - ); - - String expectedResult6 = " synchronized (PsiLock.LOCK) {\n" + - " if (true) {\n" + - " return value;\n" + - " }\n" + - " }"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s13_2,s14,s15,options); - options.setToReformatAccordingToStyle(false); - - assertEquals( - "extra ; over if", - expectedResult6, - actualResult - ); - - String expectedResult7 = " synchronized (PsiLock.LOCK) {\n" + - " if (true) {\n" + - " return value;\n" + - " }\n" + - "\n" + - " if (true) {\n" + - " return value;\n" + - " }\n" + - " }"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s13_3,s14,s15,options); - options.setToReformatAccordingToStyle(false); - assertEquals( - "newlines in matches of several lines", - expectedResult7, - actualResult - ); - - String s16 = "public class SSTest {\n" + - " Object lock;\n" + - " public Object getProducts (String[] productNames) {\n" + - " synchronized (lock) {\n" + - " Object o = new Object ();\n" + - " assert o != null;\n" + - " return o;\n" + - " }\n" + - " }\n" + - "}"; - String s16_2 = "public class SSTest {\n" + - " Object lock;\n" + - " public void getProducts (String[] productNames) {\n" + - " synchronized (lock) {\n" + - " boolean[] v = {true};\n" + - " }\n" + - " }\n" + - "}"; - - String s17 = "synchronized(lock) {\n" + - " 'Statement*;\n" + - "}"; - - String s18 = "$Statement$;"; - String expectedResult8 = "public class SSTest {\n" + - " Object lock;\n" + - " public Object getProducts (String[] productNames) {\n" + - " Object o = new Object ();\n" + - " assert o != null;\n" + - " return o;\n" + - " }\n" + - "}"; - String expectedResult8_2 = "public class SSTest {\n" + - " Object lock;\n" + - " public void getProducts (String[] productNames) {\n" + - " boolean[] v = {true};\n" + - " }\n" + - "}"; - - actualResult = replacer.testReplace(s16,s17,s18,options); - assertEquals( - "extra ;", - expectedResult8, - actualResult - ); - - actualResult = replacer.testReplace(s16_2,s17,s18,options); - assertEquals( - "missed ;", - expectedResult8_2, - actualResult - ); - } - - public void testClassReplacement() { - boolean formatAccordingToStyle = options.isToReformatAccordingToStyle(); - options.setToReformatAccordingToStyle(true); - - String s1 = "class A { public void b() {} }"; - String s2 = "class 'a { 'Other* }"; - String s3 = "class $a$New { Logger LOG; $Other$ }"; - String expectedResult = " class ANew {\n" + - " Logger LOG;\n\n" + - " public void b() {\n" + - " }\n" + - " }"; - String actualResult; - actualResult = replacer.testReplace(s1,s2,s3,options); - assertEquals( - "Basic class replacement", - expectedResult, - actualResult - ); - - String s4 = "class A { class C {} public void b() {} int f; }"; - String s5 = "class 'a { 'Other* }"; - String s6 = "class $a$ { Logger LOG; $Other$ }"; - String expectedResult2 = " class A {\n" + - " Logger LOG;\n\n" + - " class C {\n" + - " }\n\n" + - " public void b() {\n" + - " }\n\n" + - " int f;\n" + - " }"; - - actualResult = replacer.testReplace(s4,s5,s6,options); - assertEquals( - "Order of members in class replacement", - expectedResult2, - actualResult - ); - - String s7 = "class A extends B { int c; void b() {} { a = 1; } }"; - String s8 = "class 'A extends B { 'Other* }"; - String s9 = "class $A$ extends B2 { $Other$ }"; - String expectedResult3 = " class A extends B2 {\n" + - " int c;\n\n" + - " void b() {\n" + - " }\n\n" + - " {\n" + - " a = 1;\n" + - " }\n" + - " }"; - - actualResult = replacer.testReplace(s7,s8,s9,options); - assertEquals("Unsupported pattern exception",actualResult,expectedResult3); - options.setToReformatAccordingToStyle(formatAccordingToStyle); - - String s10 = "/** @example */\n" + - "class A {\n" + - " class C {}\n" + - " public void b() {}\n" + - " int f;\n" + - "}"; - String s11 = "class 'a { 'Other* }"; - String s12 = "public class $a$ {\n" + - " $Other$\n" + - "}"; - String expectedResult4 = "/** @example */\n" + - " public class A {\n" + - " class C {\n" + - " }\n\n" + - " public void b() {\n" + - " }\n\n" + - " int f;\n" + - " }"; - - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s10,s11,s12,options); - options.setToReformatAccordingToStyle(false); - assertEquals("Make class public",expectedResult4,actualResult); - - String s13 = "class CustomThread extends Thread {\n" + - "public CustomThread(InputStream in, OutputStream out, boolean closeOutOnExit) {\n" + - " super(CustomThreadGroup.getThreadGroup(), \"CustomThread\");\n" + - " setDaemon(true);\n" + - " if (in instanceof BufferedInputStream) {\n" + - " bis = (BufferedInputStream)in;\n" + - " } else {\n" + - " bis = new BufferedInputStream(in);\n" + - " }\n" + - " this.out = out;\n" + - " this.closeOutOnExit = closeOutOnExit;\n" + - "}\n" + - "}"; - String s14 = "class 'Class extends Thread {\n" + - " 'Class('ParameterType* 'ParameterName*) {\n" + - "\t super (CustomThreadGroup.getThreadGroup(), 'superarg* );\n" + - " 'Statement*;\n" + - " }\n" + - "}"; - String s15 = "class $Class$ extends CustomThread {\n" + - " $Class$($ParameterType$ $ParameterName$) {\n" + - "\t super($superarg$);\n" + - " $Statement$;\n" + - " }\n" + - "}"; - - String expectedResult5 = " class CustomThread extends CustomThread {\n" + - " CustomThread(InputStream in, OutputStream out, boolean closeOutOnExit) {\n" + - " super(\"CustomThread\");\n" + - " setDaemon(true);\n" + - " if (in instanceof BufferedInputStream) {\n" + - " bis = (BufferedInputStream) in;\n" + - " } else {\n" + - " bis = new BufferedInputStream(in);\n" + - " }\n" + - " this.out = out;\n" + - " this.closeOutOnExit = closeOutOnExit;\n" + - " }\n" + - " }"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s13,s14,s15,options); - options.setToReformatAccordingToStyle(false); - assertEquals("Constructor replacement",expectedResult5,actualResult); - - String s16 = "public class A {}\n" + - "final class B {}"; - String s17 = "class 'A { 'Other* }"; - String s17_2 = "class 'A { private Log log = LogFactory.createLog(); 'Other* }"; - String s18 = "class $A$ { private Log log = LogFactory.createLog(); $Other$ }"; - String s18_2 = "class $A$ { $Other$ }"; - - actualResult = replacer.testReplace(s16,s17,s18,options); - String expectedResult6 = "public class A { private Log log = LogFactory.createLog(); }\n" + - "final class B { private Log log = LogFactory.createLog(); }"; - assertEquals("Modifier list for class",expectedResult6,actualResult); - - actualResult = replacer.testReplace(actualResult,s17_2,s18_2,options); - String expectedResult7 = "public class A { }\n" + - "final class B { }"; - assertEquals("Removing field",expectedResult7,actualResult); - - String s19 = "public class A extends Object implements Cloneable {}\n"; - String s20 = "class 'A { 'Other* }"; - String s21 = "class $A$ { private Log log = LogFactory.createLog(); $Other$ }"; - - actualResult = replacer.testReplace(s19,s20,s21,options); - String expectedResult8 = "public class A extends Object implements Cloneable { private Log log = LogFactory.createLog(); }\n"; - assertEquals("Extends / implements list for class",expectedResult8,actualResult); - - String s22 = "public class A<T> { int Afield; }\n"; - String s23 = "class 'A { 'Other* }"; - String s24 = "class $A$ { private Log log = LogFactory.createLog(); $Other$ }"; - - actualResult = replacer.testReplace(s22,s23,s24,options); - String expectedResult9 = "public class A<T> { private Log log = LogFactory.createLog(); int Afield; }\n"; - assertEquals("Type parameters for the class",expectedResult9,actualResult); - - String s25 = "class A {\n" + - " // comment before\n" + - " protected short a; // comment after\n" + - "}"; - String s26 = "short a;"; - String s27 = "Object a;"; - String expectedResult10 = "class A {\n" + - " // comment before\n" + - " protected Object a; // comment after\n" + - "}"; - - actualResult = replacer.testReplace(s25,s26,s27,options); - - assertEquals( - "Replacing dcl with saving access modifiers", - expectedResult10, - actualResult - ); - - String s28 = "aaa"; - String s29 = "class 'Class {\n" + - " 'Class('ParameterType 'ParameterName) {\n" + - " 'Class('ParameterName);\n" + - " }\n" + - "}"; - String s30 = "class $Class$ {\n" + - " $Class$($ParameterType$ $ParameterName$) {\n" + - " this($ParameterName$);\n" + - " }\n" + - "}"; - String expectedResult11 = "aaa"; - - actualResult = replacer.testReplace(s28,s29,s30,options); - - assertEquals( - "Complex class replacement", - expectedResult11, - actualResult - ); - - String s31 = "class A {\n" + - " int a; // comment\n" + - " char b;\n" + - " int c; // comment2\n" + - "}"; - - String s32 = "'Type 'Variable = 'Value?; //'Comment"; - String s33 = "/**$Comment$*/\n" + - "$Type$ $Variable$ = $Value$;"; - - String expectedResult12 = " class A {\n" + - " /**\n" + - " * comment\n" + - " */\n" + - " int a;\n" + - " char b;\n" + - " /**\n" + - " * comment2\n" + - " */\n" + - " int c;\n" + - " }"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s31,s32,s33,options); - options.setToReformatAccordingToStyle(false); - - assertEquals( - "Replacing comments with javadoc for fields", - expectedResult12, - actualResult - ); - - String s34 = "/**\n" + - " * This interface stores XXX\n" + - " * <p/>\n" + - " */\n" + - "public interface X {\n" + - " public static final String HEADER = Headers.HEADER;\n" + - "\n" + - "}"; - - String s35 = "public interface 'MessageInterface {\n" + - " public static final String 'X = 'VALUE;\n" + - " 'blah*" + - "}"; - String s36 = "public interface $MessageInterface$ {\n" + - " public static final String HEADER = $VALUE$;\n" + - " $blah$\n" + - "}"; - - String expectedResult13 = "/**\n" + - " * This interface stores XXX\n" + - " * <p/>\n" + - " */\n" + - "public interface X {\n" + - " public static final String HEADER = Headers.HEADER;\n" + - " \n" + - "}"; - - actualResult = replacer.testReplace(s34,s35,s36,options, true); - - assertEquals( - "Replacing interface with interface, saving comments properly", - expectedResult13, - actualResult - ); - } - - public void testClassReplacement3() { - if (true) return; - final String actualResult; - String s37 = "class A { int a = 1; void B() {} int C(char ch) { int z = 1; } int b = 2; }"; - - String s38 = "class 'A { 'T* 'M*('PT* 'PN*) { 'S*; } 'O* }"; - String s39 = "class $A$ { $T$ $M$($PT$ $PN$) { System.out.println(\"$M$\"); $S$; } $O$ }"; - - String expectedResult14 = "class A { int a = 1; void B( ) { System.out.println(\"B\"); } int C(char ch) { System.out.println(\"C\"); int z = 1; } int b = 2;}"; - String expectedResult14_2 = "class A { int a = 1; void B( ) { System.out.println(\"B\"); } int C(char ch) { System.out.println(\"C\"); int z = 1; } int b = 2;}"; - - actualResult = replacer.testReplace(s37,s38,s39,options, true); - - assertEquals( - "Multiple methods replacement", - expectedResult14, - actualResult - ); - } - - public void testClassReplacement4() { - final String actualResult; - String s1 = "class A {\n" + - " int a = 1;\n" + - " int b;\n" + - " private int c = 2;\n" + - "}"; - - String s2 = "@Modifier(\"PackageLocal\") 'Type 'Instance = 'Init?;"; - String s3 = "public $Type$ $Instance$ = $Init$;"; - - String expectedResult = "class A {\n" + - " public int a = 1;\n" + - " public int b ;\n" + - " private int c = 2;\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,s3,options, true); - - assertEquals( - "Multiple fields replacement", - expectedResult, - actualResult - ); - } - - public void testClassReplacement5() { - final String actualResult; - String s1 = "public class X {\n" + - " /**\n" + - " * zzz\n" + - " */\n" + - " void f() {\n" + - "\n" + - " }\n" + - "}"; - - String s2 = "class 'c {\n" + - " /**\n" + - " * zzz\n" + - " */\n" + - " void f(){}\n" + - "}"; - String s3 = "class $c$ {\n" + - " /**\n" + - " * ppp\n" + - " */\n" + - " void f(){}\n" + - "}"; - - String expectedResult = "public class X {\n" + - " /**\n" + - " * ppp\n" + - " */\n" + - " void f(){}\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,s3,options, true); - - assertEquals( - "Not preserving comment if it is present", - expectedResult, - actualResult - ); - } - - public void testClassReplacement6() { - String actualResult; - String s1 = "public class X {\n" + - " /**\n" + - " * zzz\n" + - " */\n" + - " private void f(int i) {\n" + - " //s\n" + - " }\n" + - "}"; - String s1_2 = "public class X {\n" + - " /**\n" + - " * zzz\n" + - " */\n" + - " private void f(int i) {\n" + - " int a = 1;\n" + - " //s\n" + - " }\n" + - "}"; - - String s2 = "class 'c {\n" + - " /**\n" + - " * zzz\n" + - " */\n" + - " void f('t 'p){'s+;}\n" + - "}"; - String s3 = "class $c$ {\n" + - " /**\n" + - " * ppp\n" + - " */\n" + - " void f($t$ $p$){$s$;}\n" + - "}"; - - String expectedResult = "public class X {\n" + - " /**\n" + - " * ppp\n" + - " */\n" + - " private void f(int i ){//s\n" + - "}\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,s3,options); - - assertEquals( - "Correct class replacement", - expectedResult, - actualResult - ); - - String expectedResult2 = "public class X {\n" + - " /**\n" + - " * ppp\n" + - " */\n" + - " private void f(int i ){int a = 1;\n" + - " //s\n" + - "}\n" + - "}"; - - actualResult = replacer.testReplace(s1_2,s2,s3,options); - - assertEquals( - "Correct class replacement, 2", - expectedResult2, - actualResult - ); - } - - public void testClassReplacement7() { - String s1 = "/**\n" + - "* Created by IntelliJ IDEA.\n" + - "* User: cdr\n" + - "* Date: Nov 15, 2005\n" + - "* Time: 4:23:29 PM\n" + - "* To change this template use File | Settings | File Templates.\n" + - "*/\n" + - "public class CC {\n" + - " /** My Comment */ int a = 3; // aaa\n" + - " // bbb\n" + - " long c = 2;\n" + - " void f() {\n" + - " }\n" + - "}"; - String s2 = "/**\n" + - "* Created by IntelliJ IDEA.\n" + - "* User: 'USER\n" + - "* Date: 'DATE\n" + - "* Time: 'TIME\n" + - "* To change this template use File | Settings | File Templates.\n" + - "*/\n" + - "class 'c {\n" + - " 'other*\n" + - "}"; - String s3 = "/**\n" + - "* by: $USER$\n" + - "*/\n" + - "class $c$ {\n" + - " $other$\n" + - "}"; - String expectedResult = "/**\n" + - "* by: cdr\n" + - "*/\n" + - "public class CC {\n" + - " /** My Comment */ int a = 3; // aaa\n" + - "// bbb\n" + - " long c = 2;\n" + - "void f() {\n" + - " }\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,s3,options,true); - - assertEquals( - "Class with comment replacement", - expectedResult, - actualResult - ); - } - - public void testClassReplacement8() { - String s1 = "public class CC {\n" + - " /** AAA*/ int b = 1; // comment\n" + - "}"; - String s2 = "int b = 1;"; - String s3 = "long c = 2;"; - String expectedResult = "public class CC {\n" + - " /** AAA*/ long c = 2; // comment\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,s3,options,true); - - assertEquals( - "Class field replacement with simple pattern", - expectedResult, - actualResult - ); - } - - @NotNull - @Override - protected String getTestDataPath() { - return PluginPathManager.getPluginHomePath("structuralsearch") + "/testData/"; - } - - public void testClassReplacement9() throws IOException { - String s1 = loadFile("before1.java"); - String s2 = "class 'A extends 'TestCaseCass:[regex( .*TestCase ) ] {\n" + - " 'OtherStatement*;\n" + - " public void 'testMethod*:[regex( test.* )] () {\n" + - " }\n" + - " 'OtherStatement2*;\n" + - "}"; - String s3 = "class $A$ extends $TestCaseCass$ {\n" + - " $OtherStatement$;\n" + - " $OtherStatement2$;\n" + - "}"; - String expectedResult = loadFile("after1.java"); - - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s1,s2,s3,options,true); - - assertEquals( - "Class replacement 9", - expectedResult, - actualResult - ); - } - - public void testReplaceReturnWithArrayInitializer() { - String searchIn = "return ( new String[]{CoreVars.CMUAudioPort + \"\"} );"; - String searchFor = "return ( 'A );"; - String replaceBy = "return $A$;"; - String expectedResult = "return new String[]{CoreVars.CMUAudioPort + \"\"};"; - - actualResult = replacer.testReplace(searchIn,searchFor,replaceBy,options); - - assertEquals( - "ReplaceReturnWithArrayInitializer", - expectedResult, - actualResult - ); - } - - public void _testClassReplacement10() throws IOException { - String s1 = loadFile("before2.java"); - String s2 = "class '_Class {\n" + - " '_ReturnType+ '_MethodName+('_ParameterType* '_Parameter*){\n" + - " '_content*;\n" + - " }\n" + - " '_remainingclass*" + - "}"; - String s3 = "class $Class$ {\n" + - " $remainingclass$\n" + - " @Override $ReturnType$ $MethodName$($ParameterType$ $Parameter$){\n" + - " $content$;\n" + - " }\n" + - "}"; - String expectedResult = loadFile("after2.java"); - - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s1,s2,s3,options,true); - - assertEquals( - "Class replacement 10", - expectedResult, - actualResult - ); - } - - public void testCatchReplacement() throws Exception { - String s1 = "try {\n" + - " aaa();\n" + - "} catch(Exception ex) {\n" + - " LOG.assertTrue(false);\n" + - "}"; - String s2 = "{ LOG.assertTrue(false); }"; - String s3 = "{ if (false) LOG.assertTrue(false); }"; - String expectedResult = "try {\n" + - " aaa();\n" + - "} catch (Exception ex) {\n" + - " if (false) LOG.assertTrue(false);\n" + - "}"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s1,s2,s3,options); - options.setToReformatAccordingToStyle(false); - - assertEquals( - "Catch replacement by block", - expectedResult, - actualResult - ); - } - - public void testSavingAccessModifiersDuringClassReplacement() { - String actualResult; - - String s43 = "public @Deprecated class Foo implements Comparable<Foo> {\n int x;\n void m(){}\n }"; - String s44 = "class 'Class implements 'Interface { 'Content* }"; - String s45 = "@MyAnnotation\n" + - "class $Class$ implements $Interface$ {$Content$}"; - String expectedResult16 = "@MyAnnotation public @Deprecated\n" + - "class Foo implements Comparable<Foo> {int x;\n" + - "void m(){}}"; - - actualResult = replacer.testReplace(s43,s44,s45,options, true); - assertEquals( - "Preserving var modifiers and generic information in type during replacement", - expectedResult16, - actualResult - ); - } - - public void testDontRequireSpecialVarsForUnmatchedContent() { - String actualResult; - - String s43 = "public @Deprecated class Foo implements Comparable<Foo> {\n int x;\n void m(){}\n }"; - String s44 = "class 'Class implements 'Interface {}"; - String s45 = "@MyAnnotation\n" + - "class $Class$ implements $Interface$ {}"; - String expectedResult16 = "@MyAnnotation public @Deprecated\n" + - "class Foo implements Comparable<Foo> {int x;\nvoid m(){}}"; - - actualResult = replacer.testReplace(s43,s44,s45,options, true); - assertEquals( - "Preserving class modifiers and generic information in type during replacement", - expectedResult16, - actualResult - ); - } - - public void _testClassReplacement2() { - final String actualResult; - String s40 = "class A {\n" + - " /* special comment*/\n" + - " private List<String> a = new ArrayList();\n" + - " static {\n" + - " int a = 1;" + - " }\n" + - "}"; - String s41 = "class 'Class {\n" + - " 'Stuff2*\n" + - " 'FieldType 'FieldName = 'Init?;\n" + - " static {\n" + - " 'Stmt*;\n" + - " }\n" + - " 'Stuff*\n" + - "}"; - String s42 = "class $Class$ {\n" + - " $Stuff2$\n" + - " $FieldType$ $FieldName$ = build$FieldName$Map();\n" + - " private static $FieldType$ build$FieldName$Map() {\n" + - " $FieldType$ $FieldName$ = $Init$;\n" + - " $Stmt$;\n" + - " return $FieldName$;\n" + - " }\n" + - " $Stuff$\n" + - "}"; - String expectedResult15 = "class A {\n" + - " \n" + - " /* special comment*/\n" + - " private List<String> a = buildaMap();\n" + - " private static List<String> buildaMap() {\n" + - " List<String> a = new ArrayList();\n" + - " int a = 1;\n" + - " return a;\n" + - " }\n" + - " \n" + - "}"; - - actualResult = replacer.testReplace(s40,s41,s42,options, true); - - assertEquals( - "Preserving var modifiers and generic information in type during replacement", - expectedResult15, - actualResult - ); - - String s46 = "class Foo { int xxx; void foo() { assert false; } void yyy() {}}"; - String s47 = "class 'Class { void 'foo:[regex( foo )](); }"; - String s48 = "class $Class$ { void $foo$(int a); }"; - String expectedResult17 = "class Foo { int xxx; void foo(int a) { assert false; } void yyy() {}}"; - - String actualResult2 = replacer.testReplace(s46,s47,s48,options, true); - assertEquals( - "Preserving method bodies", - expectedResult17, - actualResult2 - ); - } - - public void testReplaceExceptions() { - String s1 = "a=a;"; - String s2 = "'a"; - String s3 = "$b$"; - - try { - replacer.testReplace(s1,s2,s3,options); - assertTrue("Undefined replace variable is not checked",false); - } catch(UnsupportedPatternException ex) { - - } - - String s4 = "a=a;"; - String s5 = "a=a;"; - String s6 = "a=a"; - - try { - replacer.testReplace(s4,s5,s6,options); - assertTrue("Undefined no ; in replace",false); - } catch(UnsupportedPatternException ex) { - } - - try { - replacer.testReplace(s4,s6,s5,options); - assertTrue("Undefined no ; in search",false); - } catch(UnsupportedPatternException ex) { - } - } - - public void testActualParameterReplacementInConstructorInvokation() { - String s1 = "filterActions[0] = new Action(TEXT,\n" + - " LifeUtil.getIcon(\"search\")) {\n" + - " void test() {\n" + - " int a = 1;\n" + - " }\n" + - "};"; - String s2 = "LifeUtil.getIcon(\"search\")"; - String s3 = "StdIcons.SEARCH_LIFE"; - String expectedResult = "filterActions[0] = new Action(TEXT,\n" + - " StdIcons.SEARCH_LIFE) {\n" + - " void test() {\n" + - " int a = 1;\n" + - " }\n" + - "};"; - options.setToReformatAccordingToStyle(true); - options.setToShortenFQN(true); - - String actualResult = replacer.testReplace(s1, s2, s3, options); - assertEquals("Replace in anonymous class parameter", expectedResult, actualResult); - options.setToShortenFQN(false); - options.setToReformatAccordingToStyle(false); - } - - public void testRemove() { - String s1 = "class A {\n" + - " /* */\n" + - " void a() {\n" + - " }\n" + - " /*\n" + - " */\n" + - " int b = 1;\n" + - " /*\n" + - " *\n" + - " */\n" + - " class C {}\n" + - " {\n" + - " /* aaa */\n" + - " int a;\n" + - " /* */\n" + - " a = 1;\n" + - " }\n" + - "}"; - String s2 = "/* 'a:[regex( .* )] */"; - String s2_2 = "/* */"; - String s3 = ""; - String expectedResult = "class A {\n" + - " void a() {\n" + - " }\n" + - "\n" + - " int b = 1;\n" + - "\n" + - " class C {\n" + - " }\n" + - "\n" + - " {\n" + - " int a;\n" + - " a = 1;\n" + - " }\n" + - "}"; - options.setToReformatAccordingToStyle(true); - actualResult = replacer.testReplace(s1,s2,s3,options); - options.setToReformatAccordingToStyle(false); - - assertEquals( - "Removing comments", - expectedResult, - actualResult - ); - - String expectedResult2 = "class A {\n" + - " void a() {\n" + - " }\n" + - " /*\n" + - " */\n" + - " int b = 1;\n" + - " /*\n" + - " *\n" + - " */\n" + - " class C {}\n" + - " {\n" + - " /* aaa */\n" + - " int a;\n" + - " a = 1;\n" + - " }\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2_2,s3,options); - - assertEquals( - "Removing comments", - expectedResult2, - actualResult - ); - } - - public void testTryCatchInLoop() throws Exception { - String code = "for (int i = 0; i < MIMEHelper.MIME_MAP.length; i++)\n" + - "{\n" + - " String s = aFileNameWithOutExtention + MIMEHelper.MIME_MAP[i][0][0];\n" + - " try\n" + - " {\n" + - " if (ENABLE_Z107_READING)\n" + - " { in = aFileNameWithOutExtention.getClass().getResourceAsStream(s); }\n" + - " else\n" + - " { data = ResourceHelper.readResource(s); }\n" + - " mime = MIMEHelper.MIME_MAP[i][1][0];\n" + - " break;\n" + - " }\n" + - " catch (final Exception e)\n" + - " { continue; }\n" + - "}"; - String toFind = "try { 'TryStatement*; } catch(Exception 'ExceptionDcl) { 'CatchStatement*; }"; - String replacement = "try { $TryStatement$; }\n" + "catch(Throwable $ExceptionDcl$) { $CatchStatement$; }"; - String expectedResult = "for (int i = 0; i < MIMEHelper.MIME_MAP.length; i++)\n" + - "{\n" + - " String s = aFileNameWithOutExtention + MIMEHelper.MIME_MAP[i][0][0];\n" + - " try { if (ENABLE_Z107_READING)\n" + - " { in = aFileNameWithOutExtention.getClass().getResourceAsStream(s); }\n" + - " else\n" + - " { data = ResourceHelper.readResource(s); }\n" + - " mime = MIMEHelper.MIME_MAP[i][1][0];\n" + - " break; }\n" + - "catch(final Throwable e) { continue; }\n" + - "}"; - - actualResult = replacer.testReplace(code,toFind,replacement,options); - - assertEquals( - "Replacing try/catch in loop", - expectedResult, - actualResult - ); - } - - public void testReformatAndShortenClassRefPerformance() throws IOException { - final String testName = getTestName(false); - final String ext = "java"; - final String message = "Reformat And Shorten Class Ref Performance"; - - options.setToReformatAccordingToStyle(true); - options.setToShortenFQN(true); - - PlatformTestUtil.startPerformanceTest("SSR should work fast", 3500, new ThrowableRunnable() { - public void run() { - doTest(testName, ext, message); - } - } - ).cpuBound().assertTiming(); - - options.setToReformatAccordingToStyle(false); - options.setToShortenFQN(false); - } - - private void doTest(final String testName, final String ext, final String message) { - try { - String source = loadFile(testName + "_source." + ext); - String pattern = loadFile(testName + "_pattern." + ext); - String replacement = loadFile(testName + "_replacement." + ext); - String expected = loadFile(testName + "_result." + ext); - - actualResult = replacer.testReplace(source,pattern,replacement,options); - - assertEquals( - message, - expected, - actualResult - ); - } - catch (IOException e) { - throw new RuntimeException(e); - } - } - - public void testLeastSurprise() { - String s1 = "@Nullable (a=String.class) @String class Test {\n" + - " void aaa(String t) {\n" + - " String a = String.valueOf(' ');" + - " String2 a2 = String2.valueOf(' ');" + - " }\n" + - "}"; - String s2 = "'String:String"; - String s2_2 = "String"; - String s2_3 = "'String:java\\.lang\\.String"; - String s2_4 = "java.lang.String"; - String replacement = CommonClassNames.JAVA_UTIL_LIST; - String expected = "@Nullable (a=java.util.List.class) @java.util.List class Test {\n" + - " void aaa(java.util.List t) {\n" + - " java.util.List a = java.util.List.valueOf(' ');" + - " String2 a2 = String2.valueOf(' ');" + - " }\n" + - "}"; - - actualResult = replacer.testReplace(s1,s2,replacement,options); - - assertEquals( - expected, - actualResult - ); - - actualResult = replacer.testReplace(s1,s2_2,replacement,options); - - assertEquals( - expected, - actualResult - ); - - actualResult = replacer.testReplace(s1,s2_3,replacement,options); - - assertEquals( - expected, - actualResult - ); - - actualResult = replacer.testReplace(s1,s2_4,replacement,options); - - assertEquals( - expected, - actualResult - ); - } - - public void testLeastSurprise2() { - String s1 = "class B { int s(int a) { a = 1; a = 2; c(a); } }"; - String s2 = "a"; - String replacement = "a2"; - String expected = "class B { int s(int a2) { a2 = 1; a2 = 2; c(a2); } }"; - - actualResult = replacer.testReplace(s1,s2,replacement,options); - - assertEquals( - expected, - actualResult - ); - } - - public void testReplaceTry() { - String s1 = "try {\n" + - " em.persist(p);\n" + - " } catch (PersistenceException e) {\n" + - " // good\n" + - " }"; - String s2 = "try { 'TryStatement; } catch('ExceptionType 'ExceptionDcl) { /* 'CommentContent */ }"; - String replacement = "try { $TryStatement$; } catch($ExceptionType$ $ExceptionDcl$) { _logger.warning(\"$CommentContent$\", $ExceptionDcl$); }"; - String expected = "try { em.persist(p); } catch(PersistenceException e) { _logger.warning(\" good\", e); }"; - - actualResult = replacer.testReplace(s1,s2,replacement,options); - - assertEquals( - expected, - actualResult - ); - } - - public void testReplaceExtraSemicolon() { - String s1 = "try {\n" + - " String[] a = {\"a\"};\n" + - " System.out.println(\"blah\");\n" + - "} finally {\n" + - "}\n"; - String s2 = "try {\n" + " 'statement*;\n" + "} finally {\n" + " \n" + "}"; - String replacement = "$statement$;"; - String expected = "String[] a = {\"a\"};\n" + - " System.out.println(\"blah\");\n"; - - actualResult = replacer.testReplace(s1,s2,replacement,options); - - assertEquals( - expected, - actualResult - ); - - String s1_2 = "try {\n" + - " if (args == null) return ;\n" + - " while(true) return ;\n" + - " System.out.println(\"blah2\");\n" + - "} finally {\n" + - "}"; - String expected_2 = "if (args == null) return ;\n" + - " while(true) return ;\n" + - " System.out.println(\"blah2\");"; - - actualResult = replacer.testReplace(s1_2,s2,replacement,options); - - assertEquals( - expected_2, - actualResult - ); - - String s1_3 = "{\n" + - " try {\n" + - " System.out.println(\"blah1\");\n" + - "\n" + - " System.out.println(\"blah2\");\n" + - " } finally {\n" + - " }\n" + - "}"; - String expected_3 = "{\n" + - " System.out.println(\"blah1\");\n" + - "\n" + - " System.out.println(\"blah2\");\n" + - "}"; - actualResult = replacer.testReplace(s1_3,s2,replacement,options); - - assertEquals( - expected_3, - actualResult - ); - - String s1_4 = "{\n" + - " try {\n" + - " System.out.println(\"blah1\");\n" + - " // indented comment\n" + - " System.out.println(\"blah2\");\n" + - " } finally {\n" + - " }\n" + - "}"; - String expected_4 = "{\n" + - " System.out.println(\"blah1\");\n" + - " // indented comment\n" + - " System.out.println(\"blah2\");\n" + - "}"; - actualResult = replacer.testReplace(s1_4,s2,replacement,options); - - assertEquals( - expected_4, - actualResult - ); - } - - public void _testReplaceFinalModifier() throws Exception { - String s1 = "class Foo {\n" + - " void foo(final int i,final int i2, final int i3) {\n" + - " final int x = 5;\n" + - " }\n" + - "}"; - String s2 = "final '_type 'var = '_init?"; - String s3 = "$type$ $var$ = $init$"; - - String expected = "2 = 1;\nint b = a;\nb2 = 3;"; - - actualResult = replacer.testReplace(s1,s2,s3,options); - - assertEquals( - expected, - actualResult - ); - } - - public void testRemovingRedundancy() throws Exception { - String s1 = "int a = 1;\n" + - "a = 2;\n" + - "int b = a;\n" + - "b2 = 3;"; - String s2 = "int 'a = 'i;\n" + - "'st*;\n" + - "'a = 'c;"; - String s3 = "$st$;\n" + - "$c$ = $i$;"; - - String expected = "2 = 1;\nint b = a;\nb2 = 3;"; - - actualResult = replacer.testReplace(s1,s2,s3,options); - - assertEquals( - expected, - actualResult - ); - - String s2_2 = "int 'a = 'i;\n" + - "'st*;\n" + - "int 'c = 'a;"; - String s3_2 = "$st$;\n" + - "int $c$ = $i$;"; - String expected_2 = "a = 2;\nint b = 1;\nb2 = 3;"; - - actualResult = replacer.testReplace(s1,s2_2,s3_2,options); - - assertEquals( - expected_2, - actualResult - ); - } - - public void testReplaceWithEmptyString() { - String source = "public class Peepers {\n public long serialVersionUID = 1L; \n}"; - String search = "long serialVersionUID = $value$;"; - String replace = ""; - String expectedResult = "public class Peepers { \n}"; - - String actualResult = replacer.testReplace(source, search, replace, options, true); - - assertEquals( - expectedResult, - actualResult - ); - } - - public void testReplaceMultipleFieldsInSingleDeclaration() { - String source = "abstract class MyClass implements java.util.List {\n private String a, b;\n}"; - String search = "class 'Name implements java.util.List {\n 'ClassContent*\n}"; - String replace = "class $Name$ {\n $ClassContent$\n}"; - String expectedResult = "abstract class MyClass {\n private String a,b;\n}"; - - String actualResult = replacer.testReplace(source, search, replace, options, true); - - assertEquals( - expectedResult, - actualResult - ); - } - - public void testReplaceInImplementsList() { - String source = "import java.io.Externalizable;\n" + - "import java.io.Serializable;\n" + - "abstract class MyClass implements Serializable, java.util.List, Externalizable {}"; - String search = "class 'TestCase implements java.util.List, 'others* {\n 'MyClassContent\n}"; - String replace = "class $TestCase$ implements $others$ {\n $MyClassContent$\n}"; - String expectedResult = "import java.io.Externalizable;\n" + - "import java.io.Serializable;\n" + - "abstract class MyClass implements Externalizable,Serializable {\n \n}"; - - String actualResult = replacer.testReplace(source, search, replace, options, true); - assertEquals( - expectedResult, - actualResult - ); - } - - public void testReplaceFieldWithEndOfLineComment() { - String source = "class MyClass {\n" + - " private String b;// comment\n" + - " public void foo() {\n" + - " }\n" + - "}"; - String search = "class 'Class {\n 'Content*\n}"; - String replace = "class $Class$ {\n" + - " void x() {}\n" + - " $Content$\n" + - " void bar() {}\n" + - "}"; - String expectedResult = "class MyClass {\n" + - " void x() {}\n" + - " private String b;// comment\n" + - "public void foo() {\n" + - " }\n" + - " void bar() {}\n" + - "}"; - - String actualResult = replacer.testReplace(source, search, replace, options, true); - assertEquals( - expectedResult, - actualResult - ); - } -}
\ No newline at end of file |