diff --git a/plugins/rearranger/src/com/wrq/rearranger/defaultConfiguration.xml b/plugins/rearranger/src/com/wrq/rearranger/defaultConfiguration.xml index d3a0cf0463fb..f153990a0491 100644 --- a/plugins/rearranger/src/com/wrq/rearranger/defaultConfiguration.xml +++ b/plugins/rearranger/src/com/wrq/rearranger/defaultConfiguration.xml @@ -281,9 +281,7 @@ \n//\ --------------------------\ INNER\ CLASSES\ - --------------------------\n - + fillString="" useProjectWidthForFill="true" fillWidth="0">\n// -------------------------- INNER CLASSES --------------------------\n diff --git a/plugins/rearranger/test/src/com/wrq/rearranger/RearrangerTest.groovy b/plugins/rearranger/test/src/com/wrq/rearranger/RearrangerTest.groovy index 0b1e748e5c6a..7487b73ca465 100644 --- a/plugins/rearranger/test/src/com/wrq/rearranger/RearrangerTest.groovy +++ b/plugins/rearranger/test/src/com/wrq/rearranger/RearrangerTest.groovy @@ -66,7 +66,11 @@ class RearrangerTest extends LightCodeInsightFixtureTestCase { mySettings.showParameterTypes = true mySettings.showRules = true mySettings.rearrangeInnerClasses = true - + + prepareBuilders(mySettings) + } + + private void prepareBuilders(RearrangerSettings mySettings) { settings = new SettingsConfigurationBuilder(settings: mySettings) classRule = new JavaClassRuleBuilder(settings: mySettings) interfaceRule = new JavaInterfaceRuleBuilder(settings: mySettings) @@ -813,7 +817,18 @@ class RearrangerTest extends LightCodeInsightFixtureTestCase { lines: 1 ) spacing ( 'remove blank lines': true ) } } } - + + private void setupSettings(@NotNull String relativePath) { + // Using concat() because simple '+' here produces weird groovy.lang.MissingMethodException: No signature of method: + // java.lang.String.positive() is applicable for argument types: () values: [] + def path = PlatformTestUtil.getCommunityPath().replace(File.separator, '/').concat("/plugins/rearranger") + .concat(relativePath) + mySettings = RearrangerSettings.getSettingsFromFile(new File(path)); + mySettings.askBeforeRearranging = false + + prepareBuilders(mySettings) + } + /** * Bug occurs when one or more blank lines precede a generated comment. * When comment is removed, blank lines now precede the item. Comment is inserted @@ -824,77 +839,36 @@ class RearrangerTest extends LightCodeInsightFixtureTestCase { */ public void testGeneratedCommentSpacingBug() throws Exception { doTest('RearrangementTest32', 'RearrangementResult32') { - // Using concat() because simple '+' here produces weird groovy.lang.MissingMethodException: No signature of method: - // java.lang.String.positive() is applicable for argument types: () values: [] - def path = PlatformTestUtil.getCommunityPath().replace(File.separator, '/').concat("/plugins/rearranger") - .concat(InteractiveTest.DEFAULT_CONFIGURATION) - mySettings = RearrangerSettings.getSettingsFromFile(new File(path)); - mySettings.askBeforeRearranging = false - mySettings.newLinesAtEOF.force = true - mySettings.newLinesAtEOF.nBlankLines = 1 + setupSettings(InteractiveTest.DEFAULT_CONFIGURATION) + spacingRule.spacing(anchor: SpacingAnchor.EOF, lines: 1) + } } + + public void testGeneratedCommentSpacing() throws Exception { + doTest('RearrangementTest32', 'RearrangementResult32') { + setupSettings(InteractiveTest.DEFAULT_CONFIGURATION) + spacingRule.spacing(anchor: SpacingAnchor.EOF, lines: 1) + } } + + public void testInnerClassComments() throws Exception { + doTest('RearrangementTest34', 'RearrangementResult34') { + setupSettings(InteractiveTest.DEFAULT_CONFIGURATION) + spacingRule.spacing(anchor: SpacingAnchor.EOF, lines: 1) + settings.configure( 'rearranger inner classes': true, 'class comment': '// ----- OUTER CLASS -----\n' ) + } } + + public void testInnerClassCommentsNoRearrangement() throws Exception { + doTest('RearrangementTest34', 'RearrangementResult34B') { + setupSettings(InteractiveTest.DEFAULT_CONFIGURATION) + spacingRule.spacing(anchor: SpacingAnchor.EOF, lines: 1) + settings.configure( 'rearranger inner classes': false, 'class comment': '// ----- OUTER CLASS -----\n' ) + } } + + public void testFirstInsertionOfComment() throws Exception { + doTest('RearrangementTest35', 'RearrangementResult35') { + commentRule.comment('// ----- FIELDS -----\n') + fieldRule.create { } } } -// public void testGeneratedCommentSpacing() throws Exception { -// configureByFile("/com/wrq/rearranger/RearrangementTest32.java"); -// final PsiFile file = getFile(); -// final Document doc = PsiDocumentManager.getInstance(getProject()).getDocument(file); -// rs = RearrangerSettings.getSettingsFromFile(new File(InteractiveTest.DEFAULT_CONFIGURATION)); -// rs.setAskBeforeRearranging(false); -// rs.getNewlinesAtEOF().setForce(true); -// rs.getNewlinesAtEOF().setnBlankLines(1); -// final RearrangerActionHandler rah = new RearrangerActionHandler(); -// rah.rearrangeDocument(getProject(), file, rs, doc); -// super.checkResultByFile("/com/wrq/rearranger/RearrangementResult32.java"); -// } -// -// public void testInnerClassComments() throws Exception { -// configureByFile("/com/wrq/rearranger/RearrangementTest34.java"); -// final PsiFile file = getFile(); -// final Document doc = PsiDocumentManager.getInstance(getProject()).getDocument(file); -// rs = RearrangerSettings.getSettingsFromFile(new File(InteractiveTest.DEFAULT_CONFIGURATION)); -// rs.setAskBeforeRearranging(false); -// rs.setRearrangeInnerClasses(true); -// rs.getNewlinesAtEOF().setForce(true); -// rs.getNewlinesAtEOF().setnBlankLines(1); -// CommentRule cr = new CommentRule(); -// cr.setCommentText("// ----- OUTER CLASS -----\n"); -// rs.getClassOrderAttributeList().add(0, cr); -// final RearrangerActionHandler rah = new RearrangerActionHandler(); -// rah.rearrangeDocument(getProject(), file, rs, doc); -// super.checkResultByFile("/com/wrq/rearranger/RearrangementResult34.java"); -// } -// -// public void testInnerClassCommentsNoRearrangement() throws Exception { -// configureByFile("/com/wrq/rearranger/RearrangementTest34.java"); -// final PsiFile file = getFile(); -// final Document doc = PsiDocumentManager.getInstance(getProject()).getDocument(file); -// rs = RearrangerSettings.getSettingsFromFile(new File(InteractiveTest.DEFAULT_CONFIGURATION)); -// rs.setAskBeforeRearranging(false); -// rs.setRearrangeInnerClasses(false); -// rs.getNewlinesAtEOF().setForce(true); -// rs.getNewlinesAtEOF().setnBlankLines(1); -// CommentRule cr = new CommentRule(); -// cr.setCommentText("// ----- OUTER CLASS -----\n"); -// rs.getClassOrderAttributeList().add(0, cr); -// final RearrangerActionHandler rah = new RearrangerActionHandler(); -// rah.rearrangeDocument(getProject(), file, rs, doc); -// super.checkResultByFile("/com/wrq/rearranger/RearrangementResult34B.java"); -// } -// -// public void testFirstInsertionOfComment() throws Exception { -// configureByFile("/com/wrq/rearranger/RearrangementTest35.java"); -// final PsiFile file = getFile(); -// final Document doc = PsiDocumentManager.getInstance(getProject()).getDocument(file); -// CommentRule cr = new CommentRule(); -// cr.setCommentText("// ----- FIELDS -----\n"); -// FieldAttributes fa = new FieldAttributes(); -// rs.addItem(cr, 0); -// rs.addItem(fa, 1); -// final RearrangerActionHandler rah = new RearrangerActionHandler(); -// rah.rearrangeDocument(getProject(), file, rs, doc); -// super.checkResultByFile("/com/wrq/rearranger/RearrangementResult35.java"); -// } -// // public void testExcludeFromExtraction() throws Exception { // configureByFile("/com/wrq/rearranger/RearrangementTest36.java"); // final PsiFile file = getFile(); diff --git a/plugins/rearranger/test/src/com/wrq/rearranger/util/RearrangerTestDsl.java b/plugins/rearranger/test/src/com/wrq/rearranger/util/RearrangerTestDsl.java index e10576c09473..07bdde6296db 100644 --- a/plugins/rearranger/test/src/com/wrq/rearranger/util/RearrangerTestDsl.java +++ b/plugins/rearranger/test/src/com/wrq/rearranger/util/RearrangerTestDsl.java @@ -54,7 +54,9 @@ public enum RearrangerTestDsl { BLANK_LINES("lines"), REMOVE_BLANK_LINES("remove blank lines"), BELOW_FIRST_CALLER("below first caller"), - NON_PRIVATE_TREATMENT("non-private treatment"); + NON_PRIVATE_TREATMENT("non-private treatment"), + REARRANGE_INNER_CLASSES("rearranger inner classes"), + CLASS_COMMENT("class comment"); @NotNull private final String myValue; diff --git a/plugins/rearranger/test/src/com/wrq/rearranger/util/SettingsConfigurationBuilder.groovy b/plugins/rearranger/test/src/com/wrq/rearranger/util/SettingsConfigurationBuilder.groovy index 23fdef4148e2..fe06eb05731d 100644 --- a/plugins/rearranger/test/src/com/wrq/rearranger/util/SettingsConfigurationBuilder.groovy +++ b/plugins/rearranger/test/src/com/wrq/rearranger/util/SettingsConfigurationBuilder.groovy @@ -45,13 +45,14 @@ class SettingsConfigurationBuilder extends BuilderSupport { switch (name) { case RearrangerTestDsl.EXTRACTED_METHODS.value: settings.extractedMethodsSettings.moveExtractedMethods = true - setIf(RearrangerTestDsl.DEPTH_FIRST_ORDER, attributes, 'depthFirstOrdering', settings.extractedMethodsSettings) - setIf(RearrangerTestDsl.ORDER, attributes, 'ordering', settings.extractedMethodsSettings) - setIf(RearrangerTestDsl.COMMENT_TYPE, attributes, 'commentType', settings.extractedMethodsSettings) - setIf(RearrangerTestDsl.BELOW_FIRST_CALLER, attributes, 'belowFirstCaller', settings.extractedMethodsSettings) + setIf(RearrangerTestDsl.DEPTH_FIRST_ORDER, attributes, 'depthFirstOrdering', settings.extractedMethodsSettings) + setIf(RearrangerTestDsl.ORDER, attributes, 'ordering', settings.extractedMethodsSettings) + setIf(RearrangerTestDsl.COMMENT_TYPE, attributes, 'commentType', settings.extractedMethodsSettings) + setIf(RearrangerTestDsl.BELOW_FIRST_CALLER, attributes, 'belowFirstCaller', settings.extractedMethodsSettings) setIf(RearrangerTestDsl.NON_PRIVATE_TREATMENT, attributes, 'nonPrivateTreatment', settings.extractedMethodsSettings) + commentHandler(RearrangerTestDsl.PRECEDING_COMMENT, 'precedingComment') - commentHandler(RearrangerTestDsl.TRAILING_COMMENT, 'trailingComment') + commentHandler(RearrangerTestDsl.TRAILING_COMMENT, 'trailingComment') break case RearrangerTestDsl.KEEP_TOGETHER.value: def m = [ @@ -64,8 +65,16 @@ class SettingsConfigurationBuilder extends BuilderSupport { } break case RearrangerTestDsl.OVERLOADED_METHODS.value: - setIf(RearrangerTestDsl.ORDER, attributes, 'overloadedOrder', settings) + setIf(RearrangerTestDsl.ORDER, attributes, 'overloadedOrder', settings) setIf(RearrangerTestDsl.KEEP_TOGETHER, attributes, 'keepOverloadedMethodsTogether', settings) + break + default: + setIf(RearrangerTestDsl.REARRANGE_INNER_CLASSES, attributes, 'rearrangeInnerClasses', settings) + if (attributes[RearrangerTestDsl.CLASS_COMMENT.value]) { + def comment = new CommentRule() + comment.commentText = attributes[RearrangerTestDsl.CLASS_COMMENT.value] + settings.classOrderAttributeList.add(0, comment) + } } settings }