### Eclipse Workspace Patch 1.0 #P org.codehaus.groovy.eclipse.quickfix.test Index: src/org/codehaus/groovy/eclipse/quickfix/test/QuickAssistTests.java =================================================================== --- src/org/codehaus/groovy/eclipse/quickfix/test/QuickAssistTests.java (revision 23145) +++ src/org/codehaus/groovy/eclipse/quickfix/test/QuickAssistTests.java (working copy) @@ -21,6 +21,7 @@ import org.codehaus.groovy.eclipse.quickassist.AbstractGroovyCompletionProposal; import org.codehaus.groovy.eclipse.quickassist.ConvertToClosureCompletionProposal; +import org.codehaus.groovy.eclipse.quickassist.ConvertToForLoopProposal; import org.codehaus.groovy.eclipse.quickassist.ConvertToMethodCompletionProposal; import org.codehaus.groovy.eclipse.quickassist.ConvertToMultiLineStringCompletionProposal; import org.codehaus.groovy.eclipse.quickassist.ConvertToSingleLineStringCompletionProposal; @@ -291,7 +292,82 @@ "def bar = 1 + 4", SplitAssigmentCompletionProposal.class); } - private void assertConversion(String original, String expected, String searchFor, Class proposalClass) throws Exception, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { + + public void testConvertToForLoop1() throws Exception { + assertConversion(//default argument using anonymous list + "[1,2,3].each{ println it }\n", + "for (it in [1, 2, 3]){\n" + + "println it\n" + + "}\n", + "each", + ConvertToForLoopProposal.class); + } + + public void testConvertToForLoop1a() throws Exception { + assertConversion(//default argument using anonymous list + "[1,2,3].each{ println it }\n", + "for (it in [1, 2, 3]){\n" + + "println it\n" + + "}\n", + "[1,2,3].each{ println it }", + ConvertToForLoopProposal.class); + } + + public void testConvertToForLoop2() throws Exception { + assertConversion(//one argument using anonymous list + "[1,2,3].each{ x ->\n" + + "println x\n" + + "}", + "for (x in [1, 2, 3]){\n" + + "println x\n" + + "}", + "each", + ConvertToForLoopProposal.class); + } + + public void testConvertToForLoop2a() throws Exception { + assertConversion(//one argument using anonymous list + "[1,2,3].each{ x ->\n" + + "println x\n" + + "}", + "for (x in [1, 2, 3]){\n" + + "println x\n" + + "}", + "[1,2,3].each{ x ->\n" + + "println x\n" + + "}", + ConvertToForLoopProposal.class); + } + + public void testConvertToForLoop3() throws Exception { + //one argument using anonymous list without println statement + assertConversion( + "[1,2,3].each{ x ->\n" + + "a += x\n" + + "}", + "for (x in [1, 2, 3]){\n" + + " a += x\n" + + "}", + "each", + ConvertToForLoopProposal.class); + } + + public void testConvertToForLoop3a() throws Exception { + //one argument using anonymous list without println statement + assertConversion( + "[1,2,3].each{ x ->\n" + + "a += x\n" + + "}", + "for (x in [1, 2, 3]){\n" + + " a += x\n" + + "}", + "[1,2,3].each{ x ->\n" + + "a += x\n" + + "}", + ConvertToForLoopProposal.class); + } + + private void assertConversion(String original, String expected, String searchFor, Class proposalClass) throws Exception, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { int start = searchFor == null ? 0 : original.indexOf(searchFor); int length = searchFor == null ? 0 : searchFor.length(); assertConversion(original, expected, start, length, proposalClass);