From b93703b14fd2cf38d0fc1d2496f41efe8fbafb45 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Thu, 31 May 2007 14:37:15 +0000 Subject: [PATCH] Fix for 190184: [Formater] space before the open the opening brace in method declaration --- .../formatter/CodeFormatterVisitor.java | 3 +- .../cdt/ui/tests/text/CodeFormatterTest.java | 76 +++++++++++++++++++ .../cdt/ui/tests/text/TextTestSuite.java | 3 +- 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java index f14f126ccf0..4b9d0675e8f 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java @@ -819,6 +819,7 @@ public class CodeFormatterVisitor extends CPPASTVisitor { private int visit(IASTStandardFunctionDeclarator node) { final List parameters = Arrays.asList(node.getParameters()); final ListAlignment align= new ListAlignment(preferences.alignment_for_parameters_in_method_declaration); + align.fSpaceBeforeOpeningParen= preferences.insert_space_before_opening_paren_in_method_declaration; align.fSpaceAfterOpeningParen= preferences.insert_space_after_opening_paren_in_method_declaration; align.fSpaceBeforeClosingParen= preferences.insert_space_before_closing_paren_in_method_declaration; align.fSpaceBeforeComma= preferences.insert_space_before_comma_in_method_declaration_parameters; @@ -1903,7 +1904,7 @@ public class CodeFormatterVisitor extends CPPASTVisitor { scribe.printNextToken(Token.tRPAREN, preferences.insert_space_before_closing_paren_in_while); - formatAction(line, node.getBody(), preferences.brace_position_for_method_declaration, preferences.insert_space_before_opening_brace_in_method_declaration); + formatAction(line, node.getBody(), preferences.brace_position_for_block, preferences.insert_space_before_opening_brace_in_block); return PROCESS_SKIP; } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java new file mode 100644 index 00000000000..af061a4d0a8 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (c) 2007 Wind River Systems, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Anton Leherbauer (Wind River Systems) - initial API and implementation + *******************************************************************************/ +package org.eclipse.cdt.ui.tests.text; + +import java.util.HashMap; +import java.util.Map; + +import junit.framework.TestSuite; + +import org.eclipse.jface.text.Document; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.TextUtilities; +import org.eclipse.text.edits.TextEdit; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.formatter.CodeFormatter; +import org.eclipse.cdt.core.formatter.DefaultCodeFormatterConstants; +import org.eclipse.cdt.ui.tests.BaseUITestCase; + +import org.eclipse.cdt.internal.corext.util.CodeFormatterUtil; +import org.eclipse.cdt.internal.formatter.DefaultCodeFormatterOptions; + +/** + * Tests for the CodeFormatter. + * + * @since 4.0 + */ +public class CodeFormatterTest extends BaseUITestCase { + + private Map fOptions; + private Map fDefaultOptions; + + public static TestSuite suite() { + return suite(CodeFormatterTest.class, "_"); + } + + protected void setUp() throws Exception { + super.setUp(); + fDefaultOptions= DefaultCodeFormatterOptions.getDefaultSettings().getMap(); + fOptions= new HashMap(fDefaultOptions); + } + + protected void tearDown() throws Exception { + super.tearDown(); + } + + protected void assertFormatterResult() throws Exception { + StringBuffer[] contents= getContentsForTest(2); + String before= contents[0].toString(); + IDocument document= new Document(before); + String expected= contents[1].toString(); + TextEdit edit= CodeFormatterUtil.format(CodeFormatter.K_COMPILATION_UNIT, before, 0, TextUtilities.getDefaultLineDelimiter(document), fOptions); + assertNotNull(edit); + edit.apply(document); + assertEquals(expected, document.get()); + } + + //void foo(int arg); + //void foo(int arg){} + + //void foo (int arg); + //void foo (int arg) { + //} + public void testInsertSpaceBeforeOpeningParen_Bug190184() throws Exception { + fOptions.put(DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_OPENING_PAREN_IN_METHOD_DECLARATION, CCorePlugin.INSERT); + assertFormatterResult(); + } +} diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java index ca600f79ba1..a88c899bbf1 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/TextTestSuite.java @@ -32,7 +32,8 @@ public class TextTestSuite extends TestSuite { addTest(BracketInserterTest.suite()); addTest(IndentActionTest.suite()); addTest(FormatActionTest.suite()); - + addTest(CodeFormatterTest.suite()); + // Break iterator tests. addTest(CBreakIteratorTest.suite()); addTest(CWordIteratorTest.suite());