blob: 3820fac75ce1ab7b5b61d87c08fcd52cab9ff915 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Mateusz Matela and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Mateusz Matela <mateusz.matela@gmail.com> - [formatter] Formatter does not format Java code correctly, especially when max line width is set - https://bugs.eclipse.org/303519
*******************************************************************************/
package org.eclipse.jdt.core.tests.formatter;
import java.util.Map;
import junit.framework.Test;
import org.eclipse.jdt.core.JavaCore;
@SuppressWarnings({"rawtypes", "unchecked"})
public class FormatterOldBugsGistTests extends FormatterRegressionTests {
private static String lineSeparator = System.getProperty("line.separator");
public FormatterOldBugsGistTests(String name) {
super(name);
}
/**
* @deprecated
*/
private void format(String testName, String source, String expectedResult, Map options) {
org.eclipse.jdt.internal.formatter.old.CodeFormatter formatter = new org.eclipse.jdt.internal.formatter.old.CodeFormatter(options);
String result = formatter.format(source, 0, null, null);
assertSourceEquals(" Wrong Format\n" /*nonNLS*/, expectedResult,result, false);
}
public static Test suite() {
return buildTestSuite(FormatterOldBugsGistTests.class);
}
public void testComments() {
String source =
"/* This is a long comment added just to test whether the formmatting\n" +
"* for the long comment is handled properly without change in behaviour\n" +
" */\n" +
"public void foo() {\n" +
"//line\tcomment\n" +
"bar();/*block comment*/\n" +
"}";
String expectedResult =
"/* This is a long comment added just to test whether the formmatting" + lineSeparator +
"* for the long comment is handled properly without change in behaviour" + lineSeparator +
" */" + lineSeparator +
"public void foo() {" + lineSeparator +
"\t//line\tcomment" + lineSeparator +
"\tbar();/*block comment*/" + lineSeparator +
"}";
format("testComments", source, expectedResult, null);
}
/**
* @deprecated
*/
public void testCode() {
String source =
"public class X {" + lineSeparator +
"public void foo(String s1, String s2, String s3, String s4) throws Exception {" + lineSeparator +
"}" + lineSeparator +
"static final String[]" + lineSeparator +
"s11 = new String[]{\"s1\"} ," + lineSeparator +
"s12 = new String[]{\"s2\"} ," + lineSeparator +
"s13 = new String[]{\"s3\"} ;" +
"}";
String expectedResult =
"public class X {" + lineSeparator +
"\tpublic void foo(String s1, String s2, String s3, String s4)" + lineSeparator +
"\t\tthrows Exception {" + lineSeparator +
"\t}" + lineSeparator +
"\tstatic final String[] s11 = new String[] { \"s1\" }," + lineSeparator +
"\t\ts12 = new String[] { \"s2\" }," + lineSeparator +
"\t\ts13 = new String[] { \"s3\" };"+ lineSeparator +
"}";
Map options =JavaCore.getOptions();
options.put(JavaCore.FORMATTER_LINE_SPLIT, "80");
options.put(JavaCore.FORMATTER_NEWLINE_CONTROL, JavaCore.DO_NOT_INSERT);
options.put(JavaCore.FORMATTER_NEWLINE_OPENING_BRACE, JavaCore.DO_NOT_INSERT);
format("testCode", source, expectedResult, options);
}
}