package krasa.formatter.eclipse; import java.io.UnsupportedEncodingException; import org.junit.Before; import org.junit.Test; import com.intellij.openapi.command.impl.DummyProject; import com.intellij.openapi.project.Project; import com.intellij.psi.util.PsiUtilCore; import junit.framework.Assert; import krasa.formatter.settings.Settings; /** * @author Vojtech Krasa */ public class JavaCodeFormatterFacadeTest { public static final String INPUT = "public class EclipseCodeFormatterFacadeTest {\n" + "\n" + "\t public static final String INPUT = \"ღმ⠀⠑⠁⠞色は匂へど 散りぬるを⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑ერთსი შემვედრე, ნუთუ კვლა დამხსნას სოფლისა შრომასა, ცეცხლს, წყალსა და მიწასა, ჰაერთა თანა მრომასა; მომცნეს ფრთენი და აღვფრინდე, მივჰხვდე მას ჩემსა ნდომასა, დღისით და ღამით ვჰხედვიდე யாமறிந்த மொழிகளி+ěščřრუსთაველიžýáíé=ê¹ś¿źæñ³ó\";\n" + "\n" + "\t@Test\n" + "\tpublic void testFormat() throws Exception {\n" + "\t\t String pathToCo色は匂へどnfigFile = \"org.eclipse.jdt.core.prefs\";\n" + "\t\t EclipseCodeFormatterFacade " + "" + "" + "" + "" + " eclipseCodeFormatterFacade = new EclipseCodeFormatterFacade(pathToConfigFile);\n" + "\t\tString output = eclipseCodeFormatterFacade.format(INPUT, Settings.LINE_SEPARATOR);\n" + "\t\tAssert. assertEquals(INPUT, output);\n" + "\n" + "\t}\n" + "}"; public static final String INPUT2 = "package krasa;\n" + "\n" + "import org.xml.sax.InputSource;\n" + "\n" + "\n" + "/**\n" + " * @author Vojtech Krasa\n" + " */\n" + "public class Test2 {\n" + "\n" + "\t public static final InputSource INPUT_SOURCE = new InputSource();\n" + "\n" + "\tpublic static void main(String[] args) {\n" + "\n" + "\t\tSystem.err.println(\"\" + \"\" + \"\" + \"\" + \"\");\n" + "\t\t System.err.println(\"\" + \"\" + \"\" + \"\" + \"\");\n" + "\n" + "\t}\n" + "\n" + "}"; public static final String FORMATTED = "public class EclipseCodeFormatterFacadeTest {\n" + "\n" + "\tpublic static final String INPUT = \"ღმ⠀⠑⠁⠞色は匂へど 散りぬるを⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑ერთსი შემვედრე, ნუთუ კვლა დამხსნას სოფლისა შრომასა, ცეცხლს, წყალსა და მიწასა, ჰაერთა თანა მრომასა; მომცნეს ფრთენი და აღვფრინდე, მივჰხვდე მას ჩემსა ნდომასა, დღისით და ღამით ვჰხედვიდე யாமறிந்த மொழிகளி+ěščřრუსთაველიžýáíé=ê¹ś¿źæñ³ó\";\n" + "\n" + "\t@Test\n" + "\tpublic void testFormat() throws Exception {\n" + "\t\tString pathToCo色は匂へどnfigFile = \"org.eclipse.jdt.core.prefs\";\n" + "\t\tEclipseCodeFormatterFacade eclipseCodeFormatterFacade = new EclipseCodeFormatterFacade(pathToConfigFile);\n" + "\t\tString output = eclipseCodeFormatterFacade.format(INPUT, Settings.LINE_SEPARATOR);\n" + "\t\tAssert.assertEquals(INPUT, output);\n" + "\n" + "\t}\n" + "}"; public static final String FORMATTED2 = "package krasa;\n" + "\n" + "import org.xml.sax.InputSource;\n" + "\n" + "/**\n" + " * @author Vojtech Krasa\n" + " */\n" + "public class Test2 {\n" + "\n" + "\tpublic static final InputSource INPUT_SOURCE = new InputSource();\n" + "\n" + "\tpublic static void main(String[] args) {\n" + "\n" + "\t\tSystem.err.println(\"\" + \"\" + \"\" + \"\" + \"\");\n" + "\t\tSystem.err.println(\"\" + \"\" + \"\" + \"\" + \"\");\n" + "\n" + "\t}\n" + "\n" + "}"; public static final String PATH_TO_CONFIG_FILE = "resources/org.eclipse.jdt.core.prefs"; private static final String INPUT_3 = "public class Class1 {\n" + " private void method1(Event event) {\n" + " Map<String, Map<String, List<Index>>> indexes = event.getIndexes();\n" + " }\n" + "}"; private static final String EXPECTED_3 = "public class Class1 {\n" + "\tprivate void method1(Event event) {\n" + "\t\tMap<String, Map<String, List<Index>>> indexes = event.getIndexes();\n" + "\t}\n" + "}"; protected JavaCodeFormatterFacade eclipseCodeFormatterFacade; public static Project getProject() { return DummyProject.getInstance(); } @Before public void setUp() throws Exception { Settings settings = new Settings(); settings.setPathToConfigFileJava(PATH_TO_CONFIG_FILE); eclipseCodeFormatterFacade = new JavaCodeFormatterFacade(settings.getJavaProperties(), settings.getEclipseVersion(), getProject(), settings.getPathToEclipse()); } @Test public void testFormat() throws Exception { String output = format(INPUT); Assert.assertEquals(FORMATTED, output); output = format(INPUT2); Assert.assertEquals(FORMATTED2, output); } private String format(String input) { return eclipseCodeFormatterFacade.format(input, 0, input.length(), PsiUtilCore.NULL_PSI_FILE); } @Test public void testFormatByXML() throws Exception { Settings settings = new Settings(); settings.setPathToConfigFileJava("resources/format.xml"); settings.setSelectedJavaProfile("kuk"); eclipseCodeFormatterFacade = new JavaCodeFormatterFacade(settings.getJavaProperties(), settings.getEclipseVersion(), getProject(), settings.getPathToEclipse()); String output = format(INPUT); Assert.assertEquals(FORMATTED, output); output = format(INPUT2); Assert.assertEquals(FORMATTED2, output); } @Test public void testFormatByEPF() throws Exception { Settings settings = new Settings(); settings.setPathToConfigFileJava("resources/mechanic-formatter.epf"); eclipseCodeFormatterFacade = new JavaCodeFormatterFacade(settings.getJavaProperties(), settings.getEclipseVersion(), getProject(), settings.getPathToEclipse()); String output = format(INPUT); Assert.assertEquals(FORMATTED, output); output = format(INPUT2); Assert.assertEquals(FORMATTED2, output); } @Test public void testFormatByXML_assertionError() throws Exception { Settings settings = new Settings(); settings.setPathToConfigFileJava("resources/format.xml"); settings.setSelectedJavaProfile("kuk"); eclipseCodeFormatterFacade = new JavaCodeFormatterFacade(settings.getJavaProperties(), settings.getEclipseVersion(), getProject(), settings.getPathToEclipse()); String output = format(INPUT_3); Assert.assertEquals(EXPECTED_3, output); } @Test public void testFormatByXML_oldFormatter() throws Exception { Settings settings = new Settings(); settings.setPathToConfigFileJava("resources/format.xml"); settings.setSelectedJavaProfile("kuk"); settings.setUseOldEclipseJavaFormatter(true); eclipseCodeFormatterFacade = new JavaCodeFormatterFacade(settings.getJavaProperties(), settings.getEclipseVersion(), getProject(), settings.getPathToEclipse()); String output = format(INPUT); Assert.assertEquals(FORMATTED, output); output = format(INPUT2); Assert.assertEquals(FORMATTED2, output); } @Test public void testFormatByXML_oldFormatter_againToTestClassloader() throws Exception { Settings settings = new Settings(); settings.setPathToConfigFileJava("resources/format.xml"); settings.setSelectedJavaProfile("kuk"); settings.setUseOldEclipseJavaFormatter(true); eclipseCodeFormatterFacade = new JavaCodeFormatterFacade(settings.getJavaProperties(), settings.getEclipseVersion(), getProject(), settings.getPathToEclipse()); String output = format(INPUT); Assert.assertEquals(FORMATTED, output); output = format(INPUT2); Assert.assertEquals(FORMATTED2, output); } @Test public void testFormat2() throws Exception { String input2 = INPUT2; String output = eclipseCodeFormatterFacade.format(input2, 10, input2.length() - 10, PsiUtilCore.NULL_PSI_FILE); Assert.assertEquals(FORMATTED2, output); } @Test public void testEndOffset() throws Exception { String input2 = FORMATTED2; String output = eclipseCodeFormatterFacade.format(input2, input2.length() - 20, input2.length() - 10, PsiUtilCore.NULL_PSI_FILE); Assert.assertEquals(FORMATTED2, output); input2 = INPUT; eclipseCodeFormatterFacade.format(input2, input2.length() - 20, input2.length() - 10, PsiUtilCore.NULL_PSI_FILE); } public String convert(String s, String utf8) throws UnsupportedEncodingException { return new String(s.getBytes("UTF8"), utf8); } }