package krasa.formatter.plugin; import java.util.Arrays; import java.util.Collections; import java.util.List; import krasa.formatter.settings.Settings; import krasa.formatter.settings.provider.ImportOrderProvider; import krasa.formatter.utils.StringUtils; import org.junit.Assert; import org.junit.Test; /** * @author Vojtech Krasa */ public class ImportsSorter450Test { public static final String N = "\n"; public static final List<String> DEFAULT_ORDER = Arrays.asList("java", "javax", "org", "com"); @Test public void issue105() throws Exception { //@formatter:off String expected = "import importorder.example.root.BFoo;\n" + "import importorder.example.root.CFoo;\n" + "import importorder.example.root.A.AFoo;\n"; String imports = "import importorder.example.root.BFoo;\n" + "import importorder.example.root.CFoo;\n" + "import importorder.example.root.A.AFoo;\n"; //@formatter:on List<String> importsOrder = Arrays.asList("java", "javax", "org", "com"); List<String> importsList = StringUtils.trimImports(imports); Collections.shuffle(importsList); List<String> strings = ImportsSorter450.sort(importsList, importsOrder); printAndAssert(expected, strings); } @Test public void issue105a() throws Exception { //@formatter:off String expected = "import importorder.example.root.AAAA;\n" + "import importorder.example.root.BFoo;\n" + "import importorder.example.root.DFoo;\n" + "import importorder.example.root.aaa;\n" + "import importorder.example.root.Aa.AFoo;\n" + "import importorder.example.root.Aaa.AaaFoo;\n" + "import importorder.example.root.Bb.bb;\n" + "import importorder.example.root.aB.Ab;\n" + "import importorder.example.root.ba.ba;\n" + "import importorder.example.root.bc.bc;\n"; String imports = "import importorder.example.root.AAAA;\n" + "import importorder.example.root.BFoo;\n" + "import importorder.example.root.DFoo;\n" + "import importorder.example.root.aaa;\n" + "import importorder.example.root.Aa.AFoo;\n" + "import importorder.example.root.Aaa.AaaFoo;\n" + "import importorder.example.root.Bb.bb;\n" + "import importorder.example.root.aB.Ab;\n" + "import importorder.example.root.ba.ba;\n" + "import importorder.example.root.bc.bc;\n"; //@formatter:on List<String> importsOrder = Arrays.asList("java", "javax", "org", "com"); List<String> importsList = StringUtils.trimImports(imports); Collections.shuffle(importsList); List<String> strings = ImportsSorter450.sort(importsList, importsOrder); printAndAssert(expected, strings); } @Test public void testIssue() throws Exception { String expected = "import mockit.MockUp;\n" + "\n" + "import org.junit.Before;\n" + "\n" + "import java.io.IOException;" + N; List<String> imports = Arrays.asList("mockit.MockUp", "org.junit.Before", "java.io.IOException"); Settings settings = new Settings(); settings.setImportOrderFromFile(true); settings.setImportOrderConfigFilePath("resources/eclipse.importorder"); List<String> importsOrder1 = new ImportOrderProvider(settings).get(); List<String> strings = ImportsSorter450.sort(imports, importsOrder1); printAndAssert(expected, strings); } @Test public void test() throws Exception { String expected = "import java.util.HashMap;\n" + "import java.util.Map;\n" + "\n" + "import org.jingle.mocquer.MockControl;\n" + N + "import sun.security.action.GetLongAction;\n" + "import tmplatform.authorisation.ApiClientLink;\n" + "import tmplatform.comms.common.caaa.EvasLdapInterfaceProfileWrapper;\n" + "import base.LoadUnitTestDataTestCase;\n" + N + "import com.sun.rmi.rmid.ExecOptionPermission;" + N; List<String> imports = Arrays.asList("java.util.HashMap", "tmplatform.comms.common.caaa.EvasLdapInterfaceProfileWrapper", "com.sun.rmi.rmid.ExecOptionPermission", "java.util.Map", "base.LoadUnitTestDataTestCase", "org.jingle.mocquer.MockControl", "tmplatform.authorisation.ApiClientLink", "sun.security.action.GetLongAction"); List<String> importsOrder = Arrays.asList("java", "javax", "org", "com"); List<String> strings = ImportsSorter450.sort(imports, importsOrder); printAndAssert(expected, strings); } @Test public void test2() throws Exception { String expected = "import static com.MyUtil.kuk;\n" + "import static org.junit.Assert.assertNotNull;\n" + "import static tmutil.StringUtil.replaceText;\n\n" + "import java.util.HashMap;\n" + "import java.util.Map;\n" + "\n" + "import org.jingle.mocquer.MockControl;\n" + N + "import sun.security.action.GetLongAction;\n" + "import tmplatform.authorisation.ApiClientLink;\n" + "import tmplatform.comms.common.caaa.EvasLdapInterfaceProfileWrapper;\n" + "import base.LoadUnitTestDataTestCase;\n"; String imports = "import static com.MyUtil.kuk;\n" + "import java.util.Map;\n" + "\n" + "import static org.junit.Assert.assertNotNull;\n" + "import tmplatform.authorisation.ApiClientLink;\n" + "import java.util.HashMap;\n" + "import sun.security.action.GetLongAction;\n" + "import org.jingle.mocquer.MockControl;\n" + "import tmplatform.comms.common.caaa.EvasLdapInterfaceProfileWrapper;\n" + N + "import static tmutil.StringUtil.replaceText;\n\n" + "import base.LoadUnitTestDataTestCase;\n"; List<String> importsOrder = Arrays.asList("java", "javax", "org", "com"); List<String> strings = ImportsSorter450.sort(StringUtils.trimImports(imports), importsOrder); printAndAssert(expected, strings); } @Test public void test3() throws Exception { String expected = "import static com.MyUtil.kuk;\n" + "import static org.junit.Assert.assertNotNull;\n" + "import static tmutil.StringUtil.replaceText;\n\n" + "import java.util.ArrayList;\n" + "\n" + "import org.w3c.dom.DOMConfiguration;\n" + "import org.w3c.dom.DOMException;\n" + "import org.w3c.dom.Document;\n" + "import org.w3c.dom.Node;\n" + "import org.w3c.dom.ls.LSException;\n" + "import org.w3c.dom.ls.LSInput;\n" + "import org.w3c.dom.ls.LSParser;\n" + "import org.w3c.dom.ls.LSParserFilter;\n" + "import org.xml.sax.InputSource;\n"; String imports = "import org.w3c.dom.DOMConfiguration;\n" + "import org.w3c.dom.DOMException;\n" + "import org.w3c.dom.Document;\n" + "import org.w3c.dom.Node;\n" + "import org.w3c.dom.ls.LSException;\n" + "import org.w3c.dom.ls.LSInput;\n" + "import static com.MyUtil.kuk;\n" + "import static org.junit.Assert.assertNotNull;\n" + "import static tmutil.StringUtil.replaceText;\n" + "import org.w3c.dom.ls.LSParser;\n" + "import org.w3c.dom.ls.LSParserFilter;\n" + "import org.xml.sax.InputSource;\n" + N + "import java.util.ArrayList;"; List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, DEFAULT_ORDER); printAndAssert(expected, strings); } @Test public void test4() throws Exception { String expected = "import java.util.Arrays;\n" + "\n" + "import models.Deployment;\n" + "import play.jobs.Job;\n" + "import play.mvc.Before;\n" + "import controllers.deadbolt.Restrict;\n"; String imports = "import controllers.deadbolt.Restrict;\n" + "import java.util.Arrays;\n" + "import play.mvc.Before;\n" + "import models.Deployment;\n" + "import play.jobs.Job;\n"; List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, DEFAULT_ORDER); printAndAssert(expected, strings); } @Test public void test4a() throws Exception { String expected = "import java.util.Arrays;\n" + "\n" + "import models.Deployment;\n" + "import play.jobs.Job;\n" + "import play.mvc.Before;\n" + "\n" + "import comtrollers.deadbolt.Restrict;\n"; String imports = "import comtrollers.deadbolt.Restrict;\n" + "import java.util.Arrays;\n" + "import play.mvc.Before;\n" + "import models.Deployment;\n" + "import play.jobs.Job;\n"; List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, DEFAULT_ORDER); printAndAssert(expected, strings); } @Test public void test4b() throws Exception { String expected = "import java.util.Arrays;\n" + "\n" + "import javax.Javax;\n" + "\n" + "import models.Deployment;\n" + "import play.jobs.Job;\n" + "import play.mvc.Before;\n" + "\n" + "import comtrollers.deadbolt.Restrict;\n" + "\n" + "import controllers.deadbolt.Restricts;\n"; String imports = "\n" + "import java.util.Arrays;\n" + "import models.Deployment;\n" + "import play.jobs.Job;\n" + "import play.mvc.Before;\n" + "import javax.Javax;\n" + "import comtrollers.deadbolt.Restrict;\n" + "import controllers.deadbolt.Restricts;\n"; List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, DEFAULT_ORDER); printAndAssert(expected, strings); } @Test public void test5() throws Exception { String expected = "import static java.lang.Integer.numberOfLeadingZeros;\n" + "import static java.lang.Integer.valueOf;\n" + "\n" + "import java.sql.Date;\n" + "import java.util.List;\n" + "import java.util.Map;\n" + "import javax.xml.crypto.dsig.spec.HMACParameterSpec;\n" + "import org.w3c.dom.Text;\n" + "import org.w3c.dom.stylesheets.StyleSheetList;\n"; String imports = "import javax.xml.crypto.dsig.spec.HMACParameterSpec;\n" + "import org.w3c.dom.Text;\n" + "import java.util.List;\n" + "import static java.lang.Integer.numberOfLeadingZeros;\n" + "import java.sql.Date;\n" + "\n" + "import static java.lang.Integer.valueOf;\n" + "import java.util.Map;\n" + "import org.w3c.dom.stylesheets.StyleSheetList;\n"; List<String> importsOrder = Collections.emptyList(); List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, importsOrder); printAndAssert(expected, strings); } // @Test // public void test6() throws Exception { // String document = "package jobs;\n" + "\n" + "import models.Album;\n" + "import models.Picture;\n" // + "import org.apache.commons.lang.StringUtils;\n" + "import org.apache.http.HttpEntity;\n" // + "import org.apache.http.HttpResponse;\n" + "import org.apache.http.HttpStatus;\n" // + "import org.apache.http.client.methods.HttpGet;\n" // + "import org.apache.http.impl.client.DefaultHttpClient;\n" // + "import org.apache.http.params.CoreConnectionPNames;\n" // + "import org.apache.http.util.EntityUtils;\n" + "import org.jsoup.Jsoup;\n" // + "import org.jsoup.nodes.Document;\n" + "import org.jsoup.nodes.Element;\n" // + "import org.jsoup.select.Elements;\n" + "import play.Logger;\n" + "import play.db.jpa.JPA;\n" // + "import play.jobs.Job;\n" + "import play.libs.Codec;\n" + "import play.mvc.Router;\n" // + "import play.vfs.VirtualFile;\n" + "import utils.BaseX;\n" + "import utils.UpYunUtils;\n" + "\n" // + "import java.io.File;\n" + "import java.io.FileOutputStream;\n" + "import java.io.IOException;\n" // + "import java.io.InputStream;\n" + "import java.math.BigInteger;\n" + "\n" + "/**\n" // + " * User: divxer Date: 12-6-4 Time: 上午12:17\n" + " */\n" + "// @Every(\"7h\")\n" // + "// @OnApplicationStart(async=true)\n" + "public class Picture4493Crawler extends Job {\n\n}"; // // List<String> importsOrder = Collections.emptyList(); // ImportSorterAdapter importSorter = new ImportSorterAdapter(importsOrder); // MockDocument document1 = new MockDocument(document); // importSorter.sortImports(document1, psiFile); // System.err.println(document1.getText()); // } @Test public void test9() throws Exception { String expected = "import android.content.Context;\n" + "import android.view.LayoutInflater;\n" + "import android.view.View;\n" + "import android.widget.TextView;\n"; String imports = "\n" + "import android.widget.TextView;\n" + "import android.view.LayoutInflater;\n" + "import android.view.View;\n" + "import android.content.Context;"; List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, DEFAULT_ORDER); printAndAssert(expected, strings); } @Test public void test7() throws Exception { String imports = "import java.util.Calendar;"; String expected = "import java.util.Calendar;\n"; List<String> importsOrder = Arrays.asList("com", "java", "javax", "org"); List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, importsOrder); printAndAssert(expected, strings); } @Test public void test10() throws Exception { String imports = "\n" + "import static org.junit.Assert.assertSame;\n" + "import org.junit.Test;"; String expected = "import org.junit.Test;\n" + "\n" + "import static org.junit.Assert.assertSame;\n"; List<String> importsOrder = Arrays.asList("", "\\#"); List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, importsOrder); printAndAssert(expected, strings); } @Test public void test11() throws Exception { String imports = "import static org.junit.Assert.assertSame;\n" + "import org.junit.Test;"; String expected = "import static org.junit.Assert.assertSame;\n" + "\n" + "import org.junit.Test;\n"; List<String> importsOrder = Arrays.asList("\\#", ""); List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, importsOrder); printAndAssert(expected, strings); } @Test public void test12() throws Exception { String imports = "import static foo.JettyStart.startJetty;\n" + "import org.apache.commons.lang3.ArrayUtils;\n" + "import static foo.Tomcat7Start.startTomcat;\n"; String expected = "import static foo.JettyStart.startJetty;\n" + "\n" + "import org.apache.commons.lang3.ArrayUtils;\n" + "\n" + "import static foo.Tomcat7Start.startTomcat;\n"; List<String> importsOrder = Arrays.asList("\\#", "", "\\#foo.Tomcat7Start"); List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, importsOrder); printAndAssert(expected, strings); } @Test public void test13() throws Exception { String imports = "import static foo.JettyStart.startJetty;\n" + "import org.apache.commons.lang3.ArrayUtils;\n" + "import static foo.Tomcat7Start.startTomcat;\n"; String expected = "import org.apache.commons.lang3.ArrayUtils;\n" + "\n" + "import static foo.JettyStart.startJetty;\n" + "\n" + "import static foo.Tomcat7Start.startTomcat;\n"; List<String> importsOrder = Arrays.asList("", "\\#foo.Tomcat7Start"); List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, importsOrder); printAndAssert(expected, strings); } @Test public void test8() throws Exception { String imports = ""; String expected = ""; List<String> imports1 = StringUtils.trimImports(imports); System.err.println(Arrays.toString(imports1.toArray())); List<String> strings = ImportsSorter450.sort(imports1, DEFAULT_ORDER); printAndAssert(expected, strings); } private void printAndAssert(String expected, List<String> strings) { StringBuilder stringBuilder = print(strings); System.out.println("-----expected------"); System.out.println(expected); Assert.assertEquals(expected, stringBuilder.toString()); System.out.println("-----------------"); } private StringBuilder print(List<String> strings) { StringBuilder stringBuilder = new StringBuilder(); for (String string : strings) { stringBuilder.append(string); } System.out.println(stringBuilder.toString()); return stringBuilder; } }