diff options
author | Stiver <stiver.mail@gmail.com> | 2014-03-04 15:13:11 +0100 |
---|---|---|
committer | Stiver <stiver.mail@gmail.com> | 2014-03-04 15:13:11 +0100 |
commit | e2d0f5d9c38561d67f23754c00addb4a3547efb2 (patch) | |
tree | 1832f16037c086b48266b8566aecc61f45f4e5f1 /src/test | |
download | fernflower-e2d0f5d9c38561d67f23754c00addb4a3547efb2.tar fernflower-e2d0f5d9c38561d67f23754c00addb4a3547efb2.tar.gz fernflower-e2d0f5d9c38561d67f23754c00addb4a3547efb2.tar.lz fernflower-e2d0f5d9c38561d67f23754c00addb4a3547efb2.tar.xz fernflower-e2d0f5d9c38561d67f23754c00addb4a3547efb2.zip |
initial commit
Diffstat (limited to 'src/test')
51 files changed, 4049 insertions, 0 deletions
diff --git a/src/test/BradTest.java b/src/test/BradTest.java new file mode 100644 index 0000000..ab9ef7c --- /dev/null +++ b/src/test/BradTest.java @@ -0,0 +1,57 @@ +package test; + +import java.util.LinkedList; +import java.util.List; + +public class BradTest { + + public void testForLoop() { + + for(int i = 0; i < 5; i++) { + System.out.println(i); + } + + int[] testArray = new int[] {}; + + for(int i : testArray) { + System.out.println(i); + } + + int k = 0; + int j = 0; + + while(j < 5) { + + System.out.println("Test while."); + + j++; + + if(j < 3) { + continue; + } + + k++; + + } + + List keys = new java.util.ArrayList(); + + for(Object test : keys) { + + System.out.println(test); + + System.out.println(test); + + System.out.println(test); + + } + + List<BradTest> objects = new LinkedList<BradTest>(); + + for(BradTest test : objects) { + System.out.println(test); + + } + } + +} diff --git a/src/test/FernflowerTest.java b/src/test/FernflowerTest.java new file mode 100644 index 0000000..42b3982 --- /dev/null +++ b/src/test/FernflowerTest.java @@ -0,0 +1,417 @@ +package test; + +import java.io.File; +import java.util.Date; +import java.util.HashMap; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class FernflowerTest { + + public static void main(String[] args) { + + try { + + //TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + + + ConsoleDecompiler decompiler = new ConsoleDecompiler(new HashMap<String, Object>(){{put("log", "warn");put("ren", "1");}}); + + +// MemoryMonitor.run = true; +// new Thread(new MemoryMonitor()).start(); + + +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\"), true); + + +// context.addSpace(new File("C:\\revjava\\remote\\data\\input\\"), true); + + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\smith\\EventProcessor.class", true); + + +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514224046740_rggbqdfe\\rh.class", true); // irreducible CFG +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514180223996_zxwdatbw\\TryCatchFinallyClass.class", true); + + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\temp\\AndroidFileBrowser.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\temp\\SnakeView.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ru.zip"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\bt1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\CityGuideJava.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\toschart.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\dostoevski.181223.jar"), true); + + + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\au.class"), true); // highly obfuscated exception handlers - sequence! +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\carmobile2.jar"), true); // highly obfuscated exception handlers - sequence! + + +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\tempjars\\Paris_Nights[sp-c.ru]ygtgJ6.jar"), true); // Heap space +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\tempjars\\PlanetN.jar"), true); + +// decompiler.addSpace(new File("C:\\Oleg\\dec\\PasswordDefender1.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\PasswordDefender2.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\Emyoolay.class"), true); + +// decompiler.addSpace(new File("C:\\Oleg\\dec\\h1.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\ba1.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\bolt_pg_0.jar"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\masl\\AbstractProgressNotifier.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\f.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\searchTab1_jsp1.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\searchTab1_jsp1_1.class"), true); + + decompiler.addSpace(new File("D:\\temp_c\\workspace\\Fernflower\\bin\\test\\BradTest.class"), true); + +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\cls1209_Object.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\cls540_BaseFunction1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\SwitchInTest.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\al.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\InnerTest.zip"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\InnerTest$1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\InnerTest.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Context.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Class$1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Class.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\SimpleDateFormat1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\z.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\client.jar"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Manifest1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\MemoryMonitor1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\IrreducibleCFGDeobfuscator$1Node.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\IrreducibleCFGDeobfuscator1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\PrintStreamLogger1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\b.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\toonel_uo-5050.jar"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\toonel_jdo.jar"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\i.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\BasicGroupListUI$a_.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\p1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\v.class"), true); // invalid class structure +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Game.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\out.zip"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Logic.class"), true); // long processing time +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\pupkin\\Support2.class"), true); // irreducible CFG +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\CommandExecutor.class"), true); // sophisticated finally + +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\cy1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\gmail-g.jar"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\LDIFImporter1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\d1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\com.sonyericsson.cs_ma3_client_sc_2.9.5.16.jar"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\z1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\FactoryFinder1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\e.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\IndexWriter.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\ar1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\tcf511.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\TryCatchFinallyClass2.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\FileUtils.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\QuicktimeParser$TrakList1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\DoExternalProcessMinwon.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Main.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\TryCatchFinallyClassForTest.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\PmrCreatePMR.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\RetainSdi(2).zip"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\tcf26x1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\GalleryStorageExtras.class"), true); + +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\ExprProcessor.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\Compiler1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\ServerManagerImpl.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\RepositoryId1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\ElemApplyTemplates.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\ValueHandlerImpl.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\RequestProcessor.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\PropertyEditorManager.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\JdbcOdbcObject.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\searchTab1_jsp1.class"), true); +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\o_class.class"), true); + +// decompiler.addSpace(new File("C:\\Oleg\\dec\\o1_class.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\o_class.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\o_class1.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\FinallyTest.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\J_class.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\icc.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\ca.class"), true); + +// decompiler.addSpace(new File("C:\\Oleg\\dec\\e.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\at.class"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\cab.jar"), true); +// decompiler.addSpace(new File("C:\\Oleg\\dec\\myotr\\"), true); // temp methods of inner classes +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\temp\\google\\"), true); // temp methods of inner classes +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\appengine-api-1.0-sdk-1.2.5-rp.jar"), true); // temp methods of inner classes +// decompiler.addSpace(new File("C:\\Oleg\\appengine-api-1.0-sdk-1.2.5-rp.jar"), true); // temp methods of inner classes +// decompiler.addSpace(new File("C:\\Oleg\\e.class"), true); // irreducible CFG - general case +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\e.class"), true); // irreducible CFG - general case + + +// decompiler.addSpace(new File("C:\\Temp\\fernflower\\dec\\opera\\output\\opera4_2.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ab.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\searchTab1_jsp.class"), true); // full iteration! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\b.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\alesa.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\MetaClassRegistryImpl1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\MetaClassRegistryImpl$1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\MetaClassRegistryImpl$2.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\CBZip2OutputStream1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\MicroFMEIBDialog$MicroFMEIBMouse.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\String.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ArticleBean.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\JdbcOdbcObject1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\jdbc\\odbc\\JdbcOdbcObject.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\RasterPrinterJob1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\print\\RasterPrinterJob.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\javax\\print\\MimeType.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\Application.class"), true); // self reference var replacement +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\JmxBuilderTools.class"), true); // merging blocks! + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\groovy-all-1.6.3.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ABSInitializeLoginCtx.class"), true); // comparison instructions double, float, long! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\hm20ipixa.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\jmf.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\Asn1PerEncodeBuffer1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\asn1rt.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\LLString.class"), true); // wrong array index! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\lapi.jar"), true); +// context.addSpace(new File("C:\\revjava\\remote\\data\\input\\20090521062758280_kmxhxsgj\\ab.class"), true); +// context.addSpace(new File("C:\\revjava\\remote\\data\\input\\20090521023110030_rlkkkxde\\"), true); +// context.addSpace(new File("C:\\revjava\\remote\\data\\input\\20090515012813271_ktxfuavw\\"), true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\g1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\structure101-java-b428.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\NinjaVideoApplet0.3.9.jar"), true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\DRMConfigClient.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\DRMConfigClient$1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\DRMConfigClient$ConfigKeys.class"), true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ChartQuery.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ChartQuery$1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\ChartQuery$ChartQueryListener.class"), true); + + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\innerprivate\\"), true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\awt\\windows\\WScrollPanePeer$Adjustor.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\awt\\windows\\WScrollPanePeer$ScrollEvent.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\awt\\windows\\WScrollPanePeer.class"), true); + +// context.addSpace(new File("C:\\revjava\\remote\\data\\input\\20090520235744982_egloemdo\\"), true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\conversion.zip"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\toonel.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\msmapi.jar"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\skynin\\"), true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\skynin\\MSMAPI.class", true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments1.class"), true); // invalid bytecode +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments2.class"), true); // invalid bytecode +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments3.class"), true); // invalid bytecode +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments4.class"), true); // protected range extended! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments5.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments6.class"), true); // protected range extended! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments7.class"), true); // highly obfuscated!! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments8.class"), true); // highly obfuscated!! +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments9.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments10.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments11.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments12.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\experiments\\Experiments13.class"), true); // highly obfuscated!! + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\com\\sun\\jndi\\ldap\\Connection.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\Connection.class", true); + +// context.addClass("TestByte", "D:\\Nonbku\\workspace_3.4\\Fernflower\\bin\\struct\\attr\\MiscTest.class", true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\pupkin\\Support2.class", true); // irreducible CFG + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\security\\jgss\\GSSNameImpl.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\awt\\image\\ImageFetcher.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\HttpURLConnection.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\net\\www\\protocol\\http\\HttpURLConnection.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\SocketChannelImpl.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\nio\\ch\\SocketChannelImpl.class", true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\rapc\\"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\y\\"), true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\layout\\router\\OrthogonalEdgeRouter.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\java\\util\\prefs\\WindowsPreferences.class", true); + + + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\ag1.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\aa1.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\ar.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\aa.class", true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\opera-mini-latest-advanced-int.jar"), true); +// context.addSpace(new File("C:\\revjava\\remote\\data\\input\\20090522175436366_ewwrrmsm\\"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\f1.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\logunov\\"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\logunov\\Lm.class"), true); +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\logunov\\Lm1.class"), true); + +// context.addSpace(new File("C:\\Temp\\fernflower\\dec\\balmaster\\"), true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\tcf10.class", true); +// context.addClass("TestByte", "D:\\Nonbku\\workspace_3.4\\autspl\\bin\\ThreadMain.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\SysEnv.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\e$1.class", true); + + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$InfoPosition.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_j.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_d.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_n.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_g.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$5.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$6.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_l.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_c.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$11.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$12.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_k.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$9.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$8.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$10.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$7.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_f.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_h.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_m.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$3.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$2.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$4.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$ItemEditorOwner.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_b.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_b$_b.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$Theme.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_i.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$1.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\TableEditorFactory$_e.class", true); + + +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514095232398_nuopioet\\a5.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514171647485_mjdkkaci\\Main.class", true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\BIDVBankClientAdapter.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090518082259353_fkwzbhxj\\Logic.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090518114646899_mrahkrxa\\N.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090518114718283_pckzzhrp\\M.class", true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\DoExternalProcessMinwon.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090515053147932_unktnred\\DoExternalProcessMinwon.class", true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\TryCatchFinallyClass.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514180437746_raelweyb\\TryCatchFinallyClass.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514193807307_xfbwelrk\\AlertDataManager.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514193807307_xfbwelrk\\AlertDataManager$LensedAlertDataQueryConnector.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514193807307_xfbwelrk\\AlertDataManager$DomainCallback.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514193807307_xfbwelrk\\AlertDataManager$AlertDataQueryConnector.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090514193807307_xfbwelrk\\AlertDataManager$AlertDataQueryConnector$1.class", true); +// context.addClass("TestByte", "C:\\revjava\\remote\\data\\input\\20090517092633378_kmnzqbgb\\RobotsApplet.class", true); + + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\e.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\e$1.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\e$2.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\e$3.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\e$4.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\y\\y\\option\\e$5.class", true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\SunGraphics2D.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\java2d\\SunGraphics2D.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\Channels$ReadableByteChannelImpl.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\java\\nio\\channels\\Channels$ReadableByteChannelImpl.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\jdbc\\odbc\\JdbcOdbcObject.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\PKCS7.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\security\\pkcs\\PKCS7.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\StepPattern.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\org\\apache\\xpath\\patterns\\StepPattern.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\ContextMatchStepPattern.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\org\\apache\\xpath\\patterns\\ContextMatchStepPattern.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\org\\apache\\xalan\\transformer\\TransformerImpl.class", true); + + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\DatagramChannelImpl.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\nio\\ch\\DatagramChannelImpl.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\rapc\\net\\rim\\tools\\compiler\\d\\a5.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\java\\awt\\font\\TextLayout.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\com\\sun\\corba\\se\\internal\\iiop\\CDRInputStream_1_0.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\com\\sun\\java\\swing\\plaf\\motif\\MotifLookAndFeel.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\com\\sun\\imageio\\plugins\\jpeg\\JPEGMetadata.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\sun\\text\\resources\\DateFormatZoneData_sv.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\java\\nio\\channels\\FileChannel.class", true); +// context.addClass("TestByte", "C:\\Temp\\fernflower\\runtime1_4_2_03\\javax\\swing\\tree\\TreePath.class", true); + +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\ICC_Transform.class", true); + // block inlining! +// context.addClass("TestByte", "C:\\Temp\\fernflower\\dec\\LdapReferralContext.class", true); + +// context.addSpace(new File("C:\\bahn\\fullcode\\lgsrv20batch\\bin\\"), true); + +// context.addSpace(new File("C:\\Temp\\tmp\\enum\\struct\\attr\\dest\\struct\\attr\\en\\"), true); +// context.addSpace(new File("D:\\Nonbku\\workspace\\Fernflower\\bin\\struct\\attr\\en\\"), true); + +// context.addSpace(new File("D:\\Nonbku\\workspace\\InnerTest\\bin\\data\\"), true); +// context.addSpace(new File("D:\\Nonbku\\workspace\\Fernflower\\bin\\struct\\attr\\en\\"), true); + +// context.addSpace(new File("D:\\Nonbku\\workspace\\Fernflower\\bin\\"), true); +// context.addSpace(new File("C:\\bahn\\lfg\\geovis\\GeoVisStandalone\\bin\\"), true); +// context.addSpace(new File("C:\\bahn\\lfg\\geovis\\GeoVisCommon\\bin\\"), true); +// context.addSpace(new File("C:\\bahn\\lfg\\geovis\\GeoVisClient\\gvCl30Api\\build\\"), true); +// context.addSpace(new File("C:\\bahn\\lfg\\geovis\\GeoVisClient\\gvCl40Ext\\build\\"), true); + +// context.addSpace(new File("C:\\bahn\\lfg\\geovis\\GeoVisClient\\gvCl30Api\\build\\de\\dbsystems\\geovis\\gui\\view\\"), true); + +// fl.structcontext = context; + +// fl.decompileContext(context, new File("D:\\Nonbku\\workspace_3.4\\JavaRuntime1_4_2_03\\src\\")); +// fl.decompileContext(context, new File("C:\\bahn\\fullcode\\LfG\\server\\lgsrv20batch\\src\\java\\")); +// fl.decompileContext(context, new File("D:\\Nonbku\\workspace\\InnerTest\\src\\struct\\attr\\en\\")); +// fl.decompileContext(context, new File("D:\\Nonbku\\workspace\\Fernflower_dec\\src\\")); +// fl.decompileContext(context, new File("C:\\Temp\\fernflower\\rapc_ff\\")); +// fl.decompileContext(context, new File("C:\\Temp\\fernflower\\y_ff\\")); +// fl.decompileContext(context, new File("C:\\Temp\\fernflower\\dec\\")); +// fl.decompileContext(context, new File("C:\\Temp\\fernflower\\dec\\output\\")); +// decompiler.decompileContext(new File("C:\\Oleg\\dec\\output\\")); + decompiler.decompileContext(new File("D:\\temp_c\\workspace\\output\\")); +// decompiler.decompileContext(new File("C:\\Temp\\fernflower\\dec\\output\\")); +// decompiler.decompileContext(new File("C:\\Temp\\fernflower\\dec\\opera\\output\\dec\\")); +// fl.decompileContext(context, new File("C:\\bahn\\lfg\\geovis_dec\\GeoVisStandalone\\starter\\src\\java\\")); +// fl.decompileContext(context, new File("C:\\bahn\\lfg\\geovis_dec\\GeoVisCommon\\gvCom30Api\\src\\java\\")); +// fl.decompileContext(context, new File("C:\\bahn\\lfg\\geovis_dec\\GeoVisClient\\gvCl30Api\\src\\java\\")); +// fl.decompileContext(context, new File("C:\\bahn\\lfg\\geovis_dec\\GeoVisClient\\gvCl40Ext\\src\\java\\")); + +// MemoryMonitor.run = false; + + + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + +// System.out.println("1:\t"+Timer.getTime("general")); +// System.out.println("2:\t"+Timer.getTime("generalnull")); +// System.out.println("3:\t"+Timer.getTime("general1")); + + +// System.out.println("1:\t"+Timer.getTime(10)); +// System.out.println("> 1:\t"+Timer.getTime(11)); +// System.out.println("=:\t"+Timer.getTime(12)); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/JetTest.java b/src/test/JetTest.java new file mode 100644 index 0000000..2bb1d43 --- /dev/null +++ b/src/test/JetTest.java @@ -0,0 +1,40 @@ +package test; + +import java.io.File; +import java.util.Date; +import java.util.HashMap; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + +public class JetTest { + + public static void main(String[] args) { + + try { + + String current_path = new File(".").getCanonicalPath(); + + //TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + ConsoleDecompiler decompiler = new ConsoleDecompiler(new HashMap<String, Object>(){{put("log", "warn");put("ren", "1");}}); + + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\BradTest.class"), true); + decompiler.addSpace(new File(current_path + "/bin/test/input/TestEclipse7.class"), true); + //decompiler.addSpace(new File(current_path + "/src/test/input/TestJavac7.class"), true); + //decompiler.addSpace(new File(current_path + "/src/test/input/TestJavac8.class"), true); + + //decompiler.decompileContext(new File("D:\\Oleg\\workspace\\output\\")); + decompiler.decompileContext(new File(current_path + "/src/test/output/")); + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/JunitTest.java b/src/test/JunitTest.java new file mode 100644 index 0000000..acfc88f --- /dev/null +++ b/src/test/JunitTest.java @@ -0,0 +1,95 @@ +package test; + +import java.io.File; +import java.util.Date; +import java.util.HashMap; + +import de.fernflower.main.decompiler.ConsoleDecompiler; +import de.fernflower.main.extern.IFernflowerPreferences; + +public class JunitTest { + + /** + * @param args + */ + public static void main(String[] args) { + + try { + + String current_path = new File(".").getCanonicalPath(); + + //TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + ConsoleDecompiler decompiler = new ConsoleDecompiler(new HashMap<String, Object>(){{ + put("log", "warn"); + put("ren", "1"); + put(IFernflowerPreferences.HIDE_DEFAULT_CONSTRUCTOR, "0"); + //put(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "1"); + put(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "0"); + put(IFernflowerPreferences.IDEA_NOT_NULL_ANNOTATION, "1"); + }}); + + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\idea-junit.jar"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\svn4idea.jar"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\github.jar"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\copyright.jar"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\rt_1_4_2.jar"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\swingset3_acceptance\\swingset3_original\\lib\\TimingFramework.jar"), true); + +// decompiler.decompileContext(new File("D:\\Oleg\\workspace\\output1\\")); + +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitStatusLine$1$1.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitStatusLine$1.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitStatusLine$2.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitStatusLine$StateInfo.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitStatusLine$TestProgressListener.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitStatusLine.class"), true); + +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitConfiguration$1.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitConfiguration$2.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitConfiguration$Data.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\JUnitConfiguration.class"), true); + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\TestPackage$ResetConfigurationModuleAdapter.class"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\TestPackage$SearchForTestsTask.class"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\TestPackage.class"), true); + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\TestAnnotations$TestInner.class"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\TestAnnotationsEclipse$TestInner.class"), true); + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\LoadRecentBranchRevisions.class"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\LoadRecentBranchRevisions$1.class"), true); + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\Fernflower\\bin\\test\\input\\TestLoop.class"), true); + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\GithubSelectForkPanel$1.class"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\GithubSelectForkPanel.class"), true); + +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$1.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$Caches.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$DebugTraceInfoStack.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$PutField.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$PutFieldImpl.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$HandleTable.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$ReplaceTable.class"), true); +// decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream$BlockDataOutputStream.class"), true); + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\ObjectOutputStream.class"), true); // writeArray SSAU endless loop + + //decompiler.addSpace(new File("D:\\Oleg\\workspace\\input\\SvnFormatSelector.class"), true); + + decompiler.addSpace(new File("D:\\Oleg\\workspace\\Fernflower\\src\\test\\input\\TestJavac8.class"), true); + + decompiler.decompileContext(new File("D:\\Oleg\\workspace\\output1\\")); + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/SumUpClasses.java b/src/test/SumUpClasses.java new file mode 100644 index 0000000..6d80385 --- /dev/null +++ b/src/test/SumUpClasses.java @@ -0,0 +1,81 @@ +package test; + +import java.io.File; +import java.io.IOException; +import java.util.Enumeration; +import java.util.jar.JarFile; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + + +public class SumUpClasses { + + public static void main(String[] args) { + + try { + File dir = new File("C:\\revjava\\remote\\data\\input\\"); + + long[] res = getClasses(dir); + + System.out.println("Count: "+res[0]); + System.out.println("Size: "+res[1]/1024/1024); + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + private static long[] getClasses(File file) { + + if(file.isDirectory()) { + + long count = 0, size = 0; + + for(File f : file.listFiles()) { + long[] arr = getClasses(f); + count+=arr[0]; + size+=arr[1]; + } + + return new long[] {count, size}; + + } else { + String filename = file.getName(); + if(filename.endsWith(".class")) { + return new long[] {1, file.length()}; + } else if(filename.endsWith(".zip")) { + try { + return getClassesZip(new ZipFile(file)); + } catch(IOException ex) { + System.out.println("Cannot read file: " + file.getAbsolutePath()); + } + } else if(filename.endsWith(".jar")) { + try { + return getClassesZip(new JarFile(file)); + } catch(IOException ex) { + System.out.println("Cannot read file: " + file.getAbsolutePath()); + } + } + } + + return new long[] {0, 0}; + } + + private static long[] getClassesZip(ZipFile archive) { + + long count = 0, size = 0; + + Enumeration<? extends ZipEntry> en = archive.entries(); + while(en.hasMoreElements()) { + ZipEntry entr = (ZipEntry)en.nextElement(); + + if(!entr.isDirectory() && entr.getName().endsWith(".class")) { + count++; + size+=entr.getSize(); + } + } + + return new long[] {count, size}; + } + +} diff --git a/src/test/TestAnnotationsEclipse$MyAnnotation.class b/src/test/TestAnnotationsEclipse$MyAnnotation.class Binary files differnew file mode 100644 index 0000000..a90e1db --- /dev/null +++ b/src/test/TestAnnotationsEclipse$MyAnnotation.class diff --git a/src/test/TestAnnotationsEclipse$TestInner.class b/src/test/TestAnnotationsEclipse$TestInner.class Binary files differnew file mode 100644 index 0000000..7aa6122 --- /dev/null +++ b/src/test/TestAnnotationsEclipse$TestInner.class diff --git a/src/test/TestAnnotationsEclipse.class b/src/test/TestAnnotationsEclipse.class Binary files differnew file mode 100644 index 0000000..995be45 --- /dev/null +++ b/src/test/TestAnnotationsEclipse.class diff --git a/src/test/TestAnnotationsEclipse.java b/src/test/TestAnnotationsEclipse.java new file mode 100644 index 0000000..42a06c0 --- /dev/null +++ b/src/test/TestAnnotationsEclipse.java @@ -0,0 +1,42 @@ +package test; + +import java.lang.annotation.Annotation; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; + +public class TestAnnotationsEclipse { + + public String a; + + @Retention(RetentionPolicy.CLASS) + @interface MyAnnotation {} + + public static void main(String[] args) { + + TestInner a = new TestAnnotationsEclipse().new TestInner(); + + for(Constructor mt : a.getClass().getConstructors()) { + + Annotation[][] ann = mt.getParameterAnnotations(); + + System.out.println(ann.length); + } + } + + protected class TestInner { + + public TestInner() {} + + public TestInner(String param1, Object param2, @MyAnnotation boolean param3) { + System.out.println(param1); + System.out.println(param2); + System.out.println(param3); + } + + public void accessField() { + System.out.println(TestAnnotationsEclipse.this.a); + } + } +} diff --git a/src/test/TestInput.java b/src/test/TestInput.java new file mode 100644 index 0000000..2273555 --- /dev/null +++ b/src/test/TestInput.java @@ -0,0 +1,54 @@ +package test; + +import java.io.File; +import java.util.Date; + +import com.vladium.utils.timing.TimerFactory; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class TestInput { + + public static void main(String[] args) { + + try { + TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + } catch(Exception ex) { + ex.printStackTrace(); + } + + File[] dirs = new File("C:\\revjava\\remote\\data\\input\\").listFiles(); + + for(File dir : dirs) { + if(dir.isDirectory()) { + Date start = new Date(); + System.out.println("=========================================================================="); + System.out.println("Processing " + dir.getAbsolutePath()); + decompileDirectory(dir); + System.out.println("Proceeded " + dir.getAbsolutePath()); + System.out.println("Time elapsed " + (new Date().getTime() - start.getTime())/1000); + System.out.println("=========================================================================="); + } + } + + } + + private static void decompileDirectory(File dir) { + + try { + + ConsoleDecompiler decompiler = new ConsoleDecompiler(); + + decompiler.addSpace(dir, true); + + decompiler.decompileContext(new File("C:\\Temp\\fernflower\\dec\\output\\", dir.getName())); + + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/TestRapc.java b/src/test/TestRapc.java new file mode 100644 index 0000000..1e5c171 --- /dev/null +++ b/src/test/TestRapc.java @@ -0,0 +1,38 @@ +package test; + +import java.io.File; +import java.util.Date; +import java.util.HashMap; + +import com.vladium.utils.timing.TimerFactory; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class TestRapc { + + public static void main(String[] args) { + + try { + + TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + + ConsoleDecompiler decompiler = new ConsoleDecompiler(new HashMap<String, Object>(){{put("log", "warn");put("ren", "1");}}); + + decompiler.addSpace(new File("C:\\Temp\\fernflower\\rapc\\"), true); + + decompiler.decompileContext(new File("C:\\Temp\\fernflower\\rapc_ff\\")); + + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/TestRuntime1_4_2_03.java b/src/test/TestRuntime1_4_2_03.java new file mode 100644 index 0000000..366a06a --- /dev/null +++ b/src/test/TestRuntime1_4_2_03.java @@ -0,0 +1,38 @@ +package test; + +import java.io.File; +import java.util.Date; +import java.util.HashMap; + +import com.vladium.utils.timing.TimerFactory; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class TestRuntime1_4_2_03 { + + public static void main(String[] args) { + + try { + + TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + + ConsoleDecompiler decompiler = new ConsoleDecompiler(new HashMap<String, Object>(){{put("log", "warn");}}); + + decompiler.addSpace(new File("C:\\Temp\\fernflower\\runtime1_4_2_03\\"), true); + + decompiler.decompileContext(new File("D:\\Nonbku\\workspace_3.4\\JavaRuntime1_4_2_03\\src\\")); + + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/TestSelf.java b/src/test/TestSelf.java new file mode 100644 index 0000000..7f1a339 --- /dev/null +++ b/src/test/TestSelf.java @@ -0,0 +1,36 @@ +package test; + +import java.io.File; +import java.util.Date; + +import com.vladium.utils.timing.TimerFactory; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class TestSelf { + + public static void main(String[] args) { + + try { + + TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + + ConsoleDecompiler decompiler = new ConsoleDecompiler(); + + decompiler.addSpace(new File("D:\\Nonbku\\workspace_3.4\\Fernflower\\bin\\"), true); + + decompiler.decompileContext(new File("D:\\Nonbku\\workspace_3.4\\Fernflower_dec\\src\\")); + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/TestValidateXml.java b/src/test/TestValidateXml.java new file mode 100644 index 0000000..a84e428 --- /dev/null +++ b/src/test/TestValidateXml.java @@ -0,0 +1,69 @@ +package test; + +import java.io.File; +import java.io.IOException; + +import javax.xml.transform.Source; +import javax.xml.transform.stream.StreamSource; +import javax.xml.validation.Schema; +import javax.xml.validation.SchemaFactory; +import javax.xml.validation.Validator; + +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class TestValidateXml { + + public static void main(String[] args) { + + try { + // 1. Lookup a factory for the W3C XML Schema language + SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); + + // 2. Compile the schema. + // Here the schema is loaded from a java.io.File, but you could use + // a java.net.URL or a javax.xml.transform.Source instead. + Schema schema = factory.newSchema(new File("/opt/xml/docbook/xsd/docbook.xsd")); + + // 3. Get a validator from the schema. + Validator validator = schema.newValidator(); + validator.setErrorHandler(new ForgivingErrorHandler()); + + // 4. Parse the document you want to check. + Source source = new StreamSource(args[0]); + + // 5. Check the document + try { + validator.validate(source); + System.out.println(args[0] + " is valid."); + } catch (SAXException ex) { + System.out.println(args[0] + " is not valid because "); + System.out.println(ex.getMessage()); + } + } catch(IOException ex) { + System.out.println(args[0] + " is not valid because "); + System.out.println(ex.getMessage()); + } catch(SAXException ex) { + System.out.println(args[0] + " is not valid because "); + System.out.println(ex.getMessage()); + } + } + +} + +class ForgivingErrorHandler implements ErrorHandler { + + public void warning(SAXParseException ex) { + System.err.println(ex.getMessage()); + } + + public void error(SAXParseException ex) { + System.err.println(ex.getMessage()); + } + + public void fatalError(SAXParseException ex) throws SAXException { + throw ex; + } + +} diff --git a/src/test/TestYWorks.java b/src/test/TestYWorks.java new file mode 100644 index 0000000..4eec73a --- /dev/null +++ b/src/test/TestYWorks.java @@ -0,0 +1,38 @@ +package test; + +import java.io.File; +import java.util.Date; +import java.util.HashMap; + +import com.vladium.utils.timing.TimerFactory; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class TestYWorks { + + public static void main(String[] args) { + + try { + + TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + + Date start = new Date(); + + + ConsoleDecompiler decompiler = new ConsoleDecompiler(new HashMap<String, Object>(){{put("log", "warn");put("ren", "1");}}); + + decompiler.addSpace(new File("C:\\Temp\\fernflower\\y\\"), true); + + decompiler.decompileContext(new File("C:\\Temp\\fernflower\\y_ff\\")); + + + System.out.println("\n\nTime elapsed " + (new Date().getTime() - start.getTime())/1000); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/VladDebug.java b/src/test/VladDebug.java new file mode 100644 index 0000000..707e738 --- /dev/null +++ b/src/test/VladDebug.java @@ -0,0 +1,67 @@ +package test; + +import java.io.File; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + + +public class VladDebug { + + public static void main(String[] args) { + + try { + + ConsoleDecompiler decompiler = new ConsoleDecompiler(); + + decompiler.addSpace(new File("C:\\Temp\\fernflower\\vladdebug\\"), true); + + decompiler.decompileContext(new File("D:\\Nonbku\\workspace_3.4\\vladdebug\\src\\")); + + +// Fernflower fl = new Fernflower(); +// +// DecompilerContext.getCurrentContext().setLogger(new PrintStreamLogger(IFernflowerLogger.WARNING, System.out)); +// +// GlobalOptions.setProperty(GlobalOptions.DECOMPILE_INNER, "1"); +// GlobalOptions.setProperty(GlobalOptions.DECOMPILE_CLASS_1_4, "1"); +// GlobalOptions.setProperty(GlobalOptions.DECOMPILE_ASSERTIONS, "1"); +// GlobalOptions.setProperty(GlobalOptions.REMOVE_BRIDGE, "1"); +// GlobalOptions.setProperty(GlobalOptions.REMOVE_SYNTHETIC, "0"); +// GlobalOptions.setProperty(GlobalOptions.HIDE_EMPTY_SUPER, "1"); +// GlobalOptions.setProperty(GlobalOptions.HIDE_DEFAULT_CONSTRUCTOR, "1"); +// GlobalOptions.setProperty(GlobalOptions.DECOMPILE_GENERIC_SIGNATURES, "0"); +// GlobalOptions.setProperty(GlobalOptions.OUTPUT_COPYRIGHT_COMMENT, "0"); +// GlobalOptions.setProperty(GlobalOptions.NO_EXCEPTIONS_RETURN, "1"); +// GlobalOptions.setProperty(GlobalOptions.DECOMPILE_ENUM, "1"); +// GlobalOptions.setProperty(GlobalOptions.FINALLY_DEINLINE, "1"); +// GlobalOptions.setProperty(GlobalOptions.REMOVE_GETCLASS_NEW, "1"); +// +// GlobalOptions.setProperty(GlobalOptions.BOOLEAN_TRUE_ONE, "1"); +// GlobalOptions.setProperty(GlobalOptions.SYNTHETIC_NOT_SET, "1"); +// GlobalOptions.setProperty(GlobalOptions.UNDEFINED_PARAM_TYPE_OBJECT, "1"); +// +// +// if(args != null && args.length > 1) { +// +// for(int i=0;i<args.length-1;i++) { +// fl.getStructcontext().addSpace(new File(args[i]), true); +// } +// +// fl.decompileContext(new File(args[args.length-1])); +// +// return; +// } +// +// StructContext context = fl.getStructcontext(); +// +// context.addSpace(new File("C:\\Temp\\fernflower\\vladdebug\\"), true); +// +// fl.decompileContext(context, new File("D:\\Nonbku\\workspace_3.4\\vladdebug\\src\\")); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/input/TestEclipse7.java b/src/test/input/TestEclipse7.java new file mode 100644 index 0000000..f8bb127 --- /dev/null +++ b/src/test/input/TestEclipse7.java @@ -0,0 +1,59 @@ +package test.input; + +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Method; + +public class TestEclipse7 { + + +// public void testTryResources() throws IOException { +// +// try (FileReader reader = new FileReader("file"); FileReader reader1 = new FileReader("file")) { +// System.out.println(); +// } +// +// } +// +// public void testTryResources1() throws IOException { +// +// try (FileReader reader = new FileReader("file")) { +// System.out.println("block"); +// } catch(RuntimeException ex) { +// System.out.println(ex.toString()); +// } finally { +// System.out.println("finally"); +// } +// +// } + + public void testMultiCatch() { + + try { + Method method = getClass().getDeclaredMethod("foo"); + } catch (NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } + } + + +// public void testSwitchString() { +// +// String s = ""; +// switch(s) { +// case "Aa": // "xyz": +// System.out.println("!"); +// break; +// case "BB": // "abc": +// System.out.println("?"); +// break; +// case "__": +// System.out.println("_"); +// break; +// default: +// System.out.println("#"); +// } +// +// } + +} diff --git a/src/test/input/TestJavac7.class b/src/test/input/TestJavac7.class Binary files differnew file mode 100644 index 0000000..ca63c8e --- /dev/null +++ b/src/test/input/TestJavac7.class diff --git a/src/test/input/TestJavac7.java b/src/test/input/TestJavac7.java new file mode 100644 index 0000000..fb72d45 --- /dev/null +++ b/src/test/input/TestJavac7.java @@ -0,0 +1,59 @@ +package test.input; + +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Method; + +public class TestJavac7 { + + + public void testTryResources() throws IOException { + + try (FileReader reader = new FileReader("file"); FileReader reader1 = new FileReader("file")) { + System.out.println(); + } + + } + + public void testTryResources1() throws IOException { + + try (FileReader reader = new FileReader("file")) { + System.out.println("block"); + } catch(RuntimeException ex) { + System.out.println(ex.toString()); + } finally { + System.out.println("finally"); + } + + } + + public void testMultiCatch() { + + try { + Method method = getClass().getDeclaredMethod("foo"); + } catch (NoSuchMethodException | SecurityException e) { + e.printStackTrace(); + } + } + + + public void testSwitchString() { + + String s = ""; + switch(s) { + case "Aa": // "xyz": + System.out.println("!"); + break; + case "BB": // "abc": + System.out.println("?"); + break; + case "__": + System.out.println("_"); + break; + default: + System.out.println("#"); + } + + } + +} diff --git a/src/test/input/TestJavac8.class b/src/test/input/TestJavac8.class Binary files differnew file mode 100644 index 0000000..be9a40c --- /dev/null +++ b/src/test/input/TestJavac8.class diff --git a/src/test/input/TestJavac8.java b/src/test/input/TestJavac8.java new file mode 100644 index 0000000..068750c --- /dev/null +++ b/src/test/input/TestJavac8.java @@ -0,0 +1,58 @@ +package test.input; + +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; + +public class TestJavac8 { + +// public static void main(String args[]) { +// new TestJavac8().testLambda(); +// } +// +// public void testTryResources() throws IOException { +// +// try (FileReader reader = new FileReader("file"); FileReader reader1 = new FileReader("file")) { +// System.out.println(); +// } +// +// } +// +// public void testMultiCatch() { +// +// try { +// Method method = getClass().getDeclaredMethod("foo"); +// } catch (NoSuchMethodException | SecurityException e) { +// e.printStackTrace(); +// } +// } +// +// +// private void testSwitchString() { +// +// String s = ""; +// switch(s) { +// case "Aa": // "xyz": +// System.out.println("!"); +// break; +// case "BB": // "abc": +// System.out.println("?"); +// break; +// case "__": +// System.out.println("_"); +// break; +// default: +// System.out.println("#"); +// } +// +// } + + public void testLambda() { + + List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); + list.forEach(n -> {int a = 2 * n; System.out.println(a);}); + } + +} diff --git a/src/test/input/TestLoop.java b/src/test/input/TestLoop.java new file mode 100644 index 0000000..4275153 --- /dev/null +++ b/src/test/input/TestLoop.java @@ -0,0 +1,20 @@ +package test.input; + +public class TestLoop { + + public static void main(String[] args) { + + boolean a = true; + while(true) { + try { + if(!a) { + return; + } + } finally { + System.out.println("1"); + } + } + + } + +} diff --git a/src/test/misc/ExtTest.java b/src/test/misc/ExtTest.java new file mode 100644 index 0000000..ec3d30c --- /dev/null +++ b/src/test/misc/ExtTest.java @@ -0,0 +1,81 @@ +package test.misc; + +import java.io.IOException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Map.Entry; + +public class ExtTest<E> extends ArrayList<E> { + + public static void main(String[] args) { + + Date d = new Date(); Timestamp t = new Timestamp(d.getTime()); + System.out.println(d.after(t)); + + System.out.println((int)-1); + System.out.println((int)1); + System.out.println((Integer)1); + System.out.println((Integer)1); + + Class c = String.class; + + Integer Integer = 0; + Integer = (Integer)-1; + + int z = 0; + z = z+++(++z); + + Entry ent = (Entry)new HashMap().entrySet().iterator().next(); + + label1: { + System.out.println("1"); + if(Math.random() > 4) { + break label1; + } + System.out.println("2"); + } + System.out.println("3"); + } + + public <T extends E> void test(T o) { + + } + + public void testException() throws IOException { +// if(true) { +// throw new RuntimeException(); +// } else { +// throw new IOException(); +// } +// throw true?new IOException():new IOException(); +// throw true?new ClassCastException():new IOException(); + } + + public static int ttt() { + + Object obj = new Integer(5); + synchronized (new Integer(3)) { + System.out.println(obj); + obj = null; + } + + + System.out.println("1"); + if(Math.random() > 1) { + System.out.println("2"); + } else { + System.out.println("3"); + } + System.out.println("4"); + + int a = 0; + try { + a = 2; + return a; + } finally { + a = 4; + } + } +} diff --git a/src/test/misc/GenericTest.java b/src/test/misc/GenericTest.java new file mode 100644 index 0000000..3ff6753 --- /dev/null +++ b/src/test/misc/GenericTest.java @@ -0,0 +1,65 @@ +package test.misc; + +import java.io.Serializable; +import java.util.AbstractCollection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +public class GenericTest<T extends Object & Serializable> { + + @test.misc.ann.RequestForEnhancement( + id = 2868724, + synopsis = "Enable time-travel", + engineer = "Mr. Peabody", + date = "4/1/3007", + arr = {"1","2","3"}, + cl = Void.class + ) + @Deprecated + public boolean test(@Deprecated Collection c) { + return true; + } + + public int testparam(boolean t, @Deprecated List lst, double d) { + return 0; + } + +} + +class GenericTestChild<E extends Collection> extends GenericTest<GenericTestChild<AbstractCollection>> implements Serializable { + +// public <T> void test(Collection<T> c) { +// T var1 = c.iterator().next(); +// c.add(var1); +// } + + public List<String>[][] field; + + public <T extends Date & List> void test(List<? super ArrayList> list1, List<?> list) { + +// l2: { +// l1: { +// if(Math.random() > 2){ +// break l1; +// } +// +// System.out.println("1"); +// break l2; +// } +// +// System.out.println("2"); +// } + + if(Math.random() > 2){ + System.out.println("2"); + } else { + System.out.println("1"); + } + + + } + +} + diff --git a/src/test/misc/ITest.java b/src/test/misc/ITest.java new file mode 100644 index 0000000..1924a8d --- /dev/null +++ b/src/test/misc/ITest.java @@ -0,0 +1,9 @@ +package test.misc; + +import java.io.Serializable; + +public interface ITest extends Serializable, Comparable<Long> { + + public void test(); + +} diff --git a/src/test/misc/MainClass.java b/src/test/misc/MainClass.java new file mode 100644 index 0000000..abb6522 --- /dev/null +++ b/src/test/misc/MainClass.java @@ -0,0 +1,115 @@ +package test.misc; + +import java.util.ArrayList; +import java.util.List; + +public class MainClass { + + private int intfield; + + private static int stfield; + + private static void statmeth(int t) { + System.out.println(t); + } + + private String maintest(int v) { + System.out.println(v+"test!"); + return ""; + } + + public MainClass() { + super(); + } + + public void mainclosure() { + + final int local1 = (int)Math.random(); + + List l = new ArrayList(new ArrayList()) { + + { + System.out.println(intfield); + } + + public void anontest() { + System.out.println(local1); + } + }; + + class LocalClass { + + public LocalClass(String s) { + System.out.println(s); + statmeth(4); + } + + public void localtest() { + int i = intfield; + intfield = 4; + maintest(i); + + System.out.println(local1); + + System.out.println(stfield); + stfield = 3; + } + + class LocalMemberClass { + + } + + } + + boolean t = false; + if(t) { + LocalClass lc = new LocalClass("1"); + LocalClass.LocalMemberClass rt = lc.new LocalMemberClass();; + } else { + if(Math.random() > 1) { + LocalClass lc1 = new LocalClass("1"); + } + System.out.println(); + } + + } + + + public class MemberClass { + + public MemberClass(String z) { + System.out.println(z); + } + + public void membertest() { + int i = intfield; + maintest(i); + stfield = 5; + + Member2Class.Member3Class t = (new Member2Class()).new Member3Class(); + } + + public class Member2Class1 { + + public class Member3Class1 { + + } + } + + class Member2Class { + + public void member2test() { + int i = intfield; + maintest(i); + Member2Class1.Member3Class1 t; + } + + public class Member3Class { + + } + + } + + } + +} diff --git a/src/test/misc/MiscTest.java b/src/test/misc/MiscTest.java new file mode 100644 index 0000000..c47b3da --- /dev/null +++ b/src/test/misc/MiscTest.java @@ -0,0 +1,83 @@ +package test.misc; + +public class MiscTest { + + public static double test = 1 / 0; + + + public static void main(String[] args) { + + System.out.println(test); + + String s = "a b"; + s = s.replaceAll(" ", "  "); + System.out.println(s); + + try { + throw null; + } catch(RuntimeException ex) { + System.out.println(ex); + } + + + int a = 3; + + if(a == 1) { + System.out.println("1"); + } else if(a == 2) { + System.out.println("2"); + } else if(a == 3) { + System.out.println("3"); + } else if(a == 4) { + System.out.println("4"); + } else if(a == 5) { + System.out.println("5"); + } else if(a == 6) { + System.out.println("6"); + } else if(a == 7) { + System.out.println("7"); + } + + if(a == 0) { + return; + } else { + System.out.println("0"); + } + + if(a==4) { + System.out.println("assert"); + assert a==4 && a==5; + } else { + assert false; + } + + assert a==5: Math.random(); + + assert false: Math.random(); + + assert true; + + assert true: Math.random(); + + /* + label: { + if(a == 0) { + System.out.println("0"); + } else if(a == 1) { + System.out.println("01"); + } else { + if(a == -1) { + System.out.println("-1"); + } else { + System.out.println("-2"); + } + break label; + } + + System.out.println("end"); + } + System.out.println("end1"); + */ + } + +} diff --git a/src/test/misc/MultipleClassTest.java b/src/test/misc/MultipleClassTest.java new file mode 100644 index 0000000..ccd9b97 --- /dev/null +++ b/src/test/misc/MultipleClassTest.java @@ -0,0 +1,33 @@ +package test.misc; + +public class MultipleClassTest { + + public int field = this.hashCode(); + + public void test() { + + class Test1 { + public int t1() { +// System.out.println("1"); + + try { + return 2; + } finally { + System.out.println("1"); + return 3; + } + + } + } + + class Test2 { + public void t2() { + System.out.println("2"); + //new Test1().t1(); + } + } + +// new Test1().t1(); + } + +} diff --git a/src/test/misc/ObfuscatedExceptionDetector.java b/src/test/misc/ObfuscatedExceptionDetector.java new file mode 100644 index 0000000..c4a22ba --- /dev/null +++ b/src/test/misc/ObfuscatedExceptionDetector.java @@ -0,0 +1,55 @@ +package test.misc; + +import java.io.File; +import java.util.Date; + +import com.vladium.utils.timing.TimerFactory; + +import de.fernflower.main.decompiler.ConsoleDecompiler; + +public class ObfuscatedExceptionDetector { + + public static void main(String[] args) { + + try { + TimerFactory.initialize(new File(".").getCanonicalPath()+"/lib/timer/hrtlib.dll"); + } catch(Exception ex) { + ex.printStackTrace(); + } + + File[] dirs = new File("C:\\revjava\\remote\\data\\input\\").listFiles(); + + for(File dir : dirs) { + if(dir.isDirectory()) { + Date start = new Date(); + System.out.println("=========================================================================="); + System.out.println("Processing " + dir.getAbsolutePath()); + decompileDirectory(dir); + System.out.println("Proceeded " + dir.getAbsolutePath()); + System.out.println("Time elapsed " + (new Date().getTime() - start.getTime())/1000); + System.out.println("=========================================================================="); + } + } + + } + + private static void decompileDirectory(File dir) { + + try { + + + + ConsoleDecompiler decompiler = new ConsoleDecompiler(); + + decompiler.addSpace(dir, true); + + decompiler.decompileContext(new File("C:\\Temp\\fernflower\\dec\\output\\", dir.getName())); + + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/misc/ParentFieldTest.java b/src/test/misc/ParentFieldTest.java new file mode 100644 index 0000000..caccc2a --- /dev/null +++ b/src/test/misc/ParentFieldTest.java @@ -0,0 +1,19 @@ +package test.misc; + +public class ParentFieldTest { + + public int test = 0; + + private class Parent extends ParentFieldTest { + + private class Child { + + public void test() { + System.out.println(ParentFieldTest.this.test); + } + + } + + } + +} diff --git a/src/test/misc/SuperTest.java b/src/test/misc/SuperTest.java new file mode 100644 index 0000000..01fc990 --- /dev/null +++ b/src/test/misc/SuperTest.java @@ -0,0 +1,27 @@ +package test.misc; + +import java.util.ArrayList; + +public class SuperTest extends ArrayList { + + public SuperTest() { + super(3); + super.modCount = 2; + SuperTest.super.size(); + } + + public int size() { + System.out.println("1"); + return 0; + } + + class SuperTest1 { + + public void test() { + SuperTest.super.size(); + SuperTest.super.modCount = 2; + } + + } + +} diff --git a/src/test/misc/ann/RequestForEnhancement.java b/src/test/misc/ann/RequestForEnhancement.java new file mode 100644 index 0000000..25c612c --- /dev/null +++ b/src/test/misc/ann/RequestForEnhancement.java @@ -0,0 +1,22 @@ +package test.misc.ann; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Describes the Request-For-Enhancement(RFE) that led + * to the presence of the annotated API element. + */ + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface RequestForEnhancement { + int id(); + String synopsis(); + String engineer() default "[unassigned]"; + String date() default "[unimplemented]"; + String[] arr(); + Class cl(); +} diff --git a/src/test/misc/en/AutocastTest.java b/src/test/misc/en/AutocastTest.java new file mode 100644 index 0000000..ea08948 --- /dev/null +++ b/src/test/misc/en/AutocastTest.java @@ -0,0 +1,17 @@ +package test.misc.en; + +import java.util.HashMap; + +public class AutocastTest { + + public static void main(String[] args) { + + HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); + + Integer key = new Integer(1); + Integer value = map.containsKey(key)?0:map.get(key); + + System.out.println(value == null); + } + +} diff --git a/src/test/misc/en/FastSetTest.java b/src/test/misc/en/FastSetTest.java new file mode 100644 index 0000000..ab94814 --- /dev/null +++ b/src/test/misc/en/FastSetTest.java @@ -0,0 +1,60 @@ +package test.misc.en; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import de.fernflower.util.FastSetFactory; +import de.fernflower.util.FastSetFactory.FastSet; + +public class FastSetTest { + + public static void main(String[] args) { + + SortedSet<Integer> set = new TreeSet<Integer>(); + + for(int i=0;i<3;i++) { + set.add(i); + } + +// for(Integer s : set) { +// System.out.println(s); +// } + + FastSetFactory<Integer> factory = new FastSetFactory<Integer>(set); + +// factory.print(); + +// int index = 1; +// for(int i=0;i<100;i++) { +// if(i % 32 == 0) { +// index = 1; +// } +// +// System.out.println(index); +// index<<=1; +// +// } + + + + FastSet<Integer> set1 = factory.spawnEmptySet(); + set1.addAll(new HashSet<Integer>(Arrays.asList(new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}))); + + FastSet<Integer> set2 = set1.getCopy(); + set2.remove(4); + set2.remove(5); + set2.add(10); + + set1.symdiff(set2); + Set<Integer> set3 = new TreeSet<Integer>(set1.toPlainSet()); + + for(Integer s : set3) { + System.out.println(s); + } + } + + +} diff --git a/src/test/misc/en/FinallyTest.java b/src/test/misc/en/FinallyTest.java new file mode 100644 index 0000000..2162636 --- /dev/null +++ b/src/test/misc/en/FinallyTest.java @@ -0,0 +1,22 @@ +package test.misc.en; + +public class FinallyTest { + + public FinallyTest() { + + int i; + try { + try { + i = 0; + } finally { + i = 1; + } + i = 2; + } finally { + i = 3; + } + + System.out.println(i); + } + +} diff --git a/src/test/misc/en/Foo.java b/src/test/misc/en/Foo.java new file mode 100644 index 0000000..762dcda --- /dev/null +++ b/src/test/misc/en/Foo.java @@ -0,0 +1,52 @@ +package test.misc.en; + +class Foo { + + public Foo() {} + + public Foo(String test) {} + + private void foo() { + System.out.println("qwe"); + } + + static class Bar extends Foo { + void bar() { + System.out.println("1"); + //((Foo)this).foo(); + } + } + + static class Bar1 extends Bar { + void bar() { + super.bar(); + //System.out.println("2"); + //((Foo)this).foo(); + } + } + + static class Bar2 extends Bar1 { + void bar1() { + super.bar(); + } + } + + public static void main(String[] args) { + new Bar2().bar(); + } + + public int testfin() { + + int i; + + try { + System.out.println(); + i = 0; + } finally { + System.out.println(); + } + + + return i; + } +} diff --git a/src/test/misc/en/InnerTest$1.java b/src/test/misc/en/InnerTest$1.java new file mode 100644 index 0000000..dd58e8e --- /dev/null +++ b/src/test/misc/en/InnerTest$1.java @@ -0,0 +1,22 @@ +package test.misc.en; + + +class InnerTest$1 extends Foo implements Runnable { + + // $FF: synthetic field + final String val$test; + // $FF: synthetic field + final int val$test1; + + + InnerTest$1(String var1, int var2) { + super(); + this.val$test = var1; + this.val$test1 = var2; + } + + public void run() { + System.out.println(this.val$test); + System.out.println(this.val$test1); + } +} diff --git a/src/test/misc/en/InnerTest.java b/src/test/misc/en/InnerTest.java new file mode 100644 index 0000000..44361ff --- /dev/null +++ b/src/test/misc/en/InnerTest.java @@ -0,0 +1,13 @@ +package test.misc.en; + +import test.misc.en.InnerTest$1; + +public class InnerTest { + + public static void main(String[] args) throws Throwable { + String test = args[0]; + int test1 = Integer.parseInt(args[1]); + new InnerTest$1(test, test1); + System.out.println("готово"); + } +} diff --git a/src/test/misc/en/InnerTestOld.java b/src/test/misc/en/InnerTestOld.java new file mode 100644 index 0000000..b3af77c --- /dev/null +++ b/src/test/misc/en/InnerTestOld.java @@ -0,0 +1,20 @@ +package test.misc.en; + +public class InnerTestOld { + + public static void main(String[] args) { + + final String test = args[0]; + final int test1 = Integer.parseInt(args[1]); + + Runnable r = new Runnable() { + public void run() { + System.out.println(test); + System.out.println(test1); + } + }; + + System.out.println("done"); + } + +} diff --git a/src/test/misc/en/IrredTest.java b/src/test/misc/en/IrredTest.java new file mode 100644 index 0000000..c1f8de0 --- /dev/null +++ b/src/test/misc/en/IrredTest.java @@ -0,0 +1,1373 @@ +package test.misc.en; + +public class IrredTest { + + static final boolean a = false; + static final boolean b = false; + private static final long serialVersionUID = -875163484858750714L; + private static final String[] Y; + + +// static { +// String[] var10000 = new String[84]; +// String[] var10001 = var10000; +// byte var10002 = 0; +// String var10003 = "tm9b336"; +// byte var10004 = 83; +// +// labelwhile: +// while(true) { +// char[] var3; +// label125: { +// char[] var8 = var10003.toCharArray(); +// int var10006 = var8.length; +// int var0 = 0; +// var3 = var8; +// int var7 = var10006; +// if(var10006 > 1) { +// var3 = var8; +// var7 = var10006; +// if(var10006 <= var0) { +// break label125; +// } +// } +// +// do { +// char[] var2 = var3; +// int var10007 = var0; +// +// while(true) { +// char var10008 = var2[var10007]; +// byte var10009; +// switch(var0 % 5) { +// case 0: +// var10009 = 28; +// break; +// case 1: +// var10009 = 25; +// break; +// case 2: +// var10009 = 77; +// break; +// case 3: +// var10009 = 18; +// break; +// default: +// var10009 = 9; +// } +// +// var2[var10007] = (char)(var10008 ^ var10009); +// ++var0; +// if(var7 != 0) { +// break; +// } +// +// var10007 = var7; +// var2 = var3; +// } +// } while(var7 > var0); +// } +// +// String var1 = (new String(var3)).intern(); +// switch(var10004) { +// case 0: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 2; +// var10003 = "_V\u0018\\]43d"; +// var10004 = 1; +// break; +// case 1: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 3; +// var10003 = "<e15};e1:ZYU\bQ]<"; +// var10004 = 2; +// break; +// case 2: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 4; +// var10003 = "O\\\u0001WJH9jQ.`eeALP\\\u000eF)"; +// var10004 = 3; +// break; +// case 3: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 5; +// var10003 = "<e15K;e1:ZYU\bQ]<"; +// var10004 = 4; +// break; +// case 4: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 6; +// var10003 = "<_\u001f]D<X\tM]}{!w)KQ\b@L<\\#f`h`\u0019kyy9\u0003]]<P\u00032!;Zj>.X>d;"; +// var10004 = 5; +// break; +// case 5: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 7; +// var10003 = "<e15Y;e1:ZYU\bQ]<"; +// var10004 = 6; +// break; +// case 6: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 8; +// var10003 = "<e15D;e1:ZYU\bQ]<"; +// var10004 = 7; +// break; +// case 7: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 9; +// var10003 = "<_\u001f]D<T\u0012F{}w>sjhp\"|\u0020"; +// var10004 = 8; +// break; +// case 8: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 10; +// var10003 = "<_\u001f]D<T\u0012B{s}8q}5"; +// var10004 = 9; +// break; +// case 9: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 11; +// var10003 = "<_\u001f]D<Z\u0012[gjv$ql5"; +// var10004 = 10; +// break; +// case 10: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 12; +// var10003 = "<_\u001f]D<X\tMJsu8g<N\u0005W[Y9\b|}um4Fpl|m\\FH9\u0004\\)4>\u000e5%;]j;\u0020"; +// var10004 = 11; +// break; +// case 11: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 13; +// var10003 = "<e15o;e1:ZYU\bQ]<"; +// var10004 = 12; +// break; +// case 12: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 14; +// var10003 = "op"; +// var10004 = 13; +// break; +// case 13: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 15; +// var10003 = "<_\u001f]D<X\tM\\o|?;"; +// var10004 = 14; +// break; +// case 14: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 16; +// var10003 = "<_\u001f]D<Z\u0012PY}k9|ln0"; +// var10004 = 15; +// break; +// case 15: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 17; +// var10003 = "<_\u001f]D<X\tMJpp(|}5"; +// var10004 = 16; +// break; +// case 16: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 18; +// var10003 = "<e15E;e1:ZYU\bQ]<"; +// var10004 = 17; +// break; +// case 17: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 19; +// var10003 = "<_\u001f]D<Z\u0012[gjv$qlPp#w\u0020"; +// var10004 = 18; +// break; +// case 18: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 20; +// var10003 = "<_\u001f]D<X\tMZej9wd"; +// var10004 = 19; +// break; +// case 19: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 21; +// var10003 = "<e15j;e1:ZYU\bQ]<"; +// var10004 = 20; +// break; +// case 20: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 22; +// var10003 = "<e15\\;e1:ZYU\bQ]<"; +// var10004 = 21; +// break; +// case 21: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 23; +// var10003 = "O|,fz"; +// var10004 = 22; +// break; +// case 22: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 24; +// var10003 = "Om,f|o"; +// var10004 = 23; +// break; +// case 23: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 25; +// var10003 = "_v\u0020b`yk(2Zhx#vhn}"; +// var10004 = 24; +// break; +// case 24: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 26; +// var10003 = "lp"; +// var10004 = 25; +// break; +// case 25: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 27; +// var10003 = "O\\\u0001WJH9\u001bsei|mT[STmSMCZ!{lrmmEAYK\b2@oX.f`j|p5P;9\u0002@MYKmPP<X\tMJpp(|}CP\t2MYJ\u000e"; +// var10004 = 26; +// break; +// case 26: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 28; +// var10003 = "Uw+}{qx9{fr98bm}m(v\'"; +// var10004 = 27; +// break; +// case 27: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 29; +// var10003 = "_x#|fh9.}ghx.f)O|?dln9c<\'"; +// var10004 = 28; +// break; +// case 28: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 30; +// var10003 = "<P#tfnt,f`swmgyxx9wm2"; +// var10004 = 29; +// break; +// case 29: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 31; +// var10003 = "&9"; +// var10004 = 30; +// break; +// case 30: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 32; +// var10003 = "N|!who|m!\'/7}"; +// var10004 = 31; +// break; +// case 31: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 33; +// var10003 = "&9\b`{skmeauu(2jsw9sjhp#u)hq(2euz(|zy9>w{j|?"; +// var10004 = 32; +// break; +// case 32: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 34; +// var10003 = "N|!who|m"; +// var10004 = 33; +// break; +// case 33: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 35; +// var10003 = "J|?a`swm"; +// var10004 = 34; +// break; +// case 34: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 36; +// var10003 = "Xx9sk}j(2"; +// var10004 = 35; +// break; +// case 35: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 37; +// var10003 = "{|9Vhhx/szyT(fhXx9s"; +// var10004 = 36; +// break; +// case 36: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 38; +// var10003 = "Y}$f`swm"; +// var10004 = 37; +// break; +// case 37: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 39; +// var10003 = "q}"; +// var10004 = 38; +// break; +// case 38: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 40; +// var10003 = "O`>flqW,l"; +// var10004 = 39; +// break; +// case 39: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 41; +// var10003 = "_q(qb<U$qlrj("; +// var10004 = 40; +// break; +// case 40: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 42; +// var10003 = "O`>flqJ9s}ij"; +// var10004 = 41; +// break; +// case 41: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 43; +// var10003 = "Om,`}Qp*`hhp\"|"; +// var10004 = 42; +// break; +// case 42: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 44; +// var10003 = "Rv?fa"; +// var10004 = 43; +// break; +// case 43: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 45; +// var10003 = "_|#fln"; +// var10004 = 44; +// break; +// case 44: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 46; +// var10003 = "Ov8fa"; +// var10004 = 45; +// break; +// case 45: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 47; +// var10003 = "Ol=bfnm\u000e}ghk,q}"; +// var10004 = 46; +// break; +// case 46: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 48; +// var10003 = "]j>w}<P\t/"; +// var10004 = 47; +// break; +// case 47: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 49; +// var10003 = "_q(qb<|#f{u|>2hr}mb{yj>2FW99})ol/`h7"; +// var10004 = 48; +// break; +// case 48: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 50; +// var10003 = "Ol=bfnm\u000e}ghk,q}Iw$fz"; +// var10004 = 49; +// break; +// case 49: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 51; +// var10003 = "o`>"; +// var10004 = 50; +// break; +// case 50: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 52; +// var10003 = "./~"; +// var10004 = 51; +// break; +// case 51: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 53; +// var10003 = "_v#fhm$|n<Z\"yu|?w)Ol=bfnmm<\'2"; +// var10004 = 52; +// break; +// case 52: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 54; +// var10003 = "_v\u0020b`yk(2Zhx#vhn}m[gzv?hhp\"|)ii)s}y}c"; +// var10004 = 53; +// break; +// case 53: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 55; +// var10003 = "Ox;w)pp.wgo|mw{nv?3"; +// var10004 = 54; +// break; +// case 54: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 56; +// var10003 = "v\u0020<jst={ln|c`{k,fl2N\"`byk\u001efhnm"; +// var10004 = 55; +// break; +// case 55: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 57; +// var10003 = "^|+}{y9#w~Uw>fhrz("; +// var10004 = 56; +// break; +// case 56: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 58; +// var10003 = "]9w{<u\"smu,az&9.}d2z\"yu|?w\'qp*`hh|cEfnr(`Zhx?f"; +// var10004 = 57; +// break; +// case 57: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 59; +// var10003 = "_v8~m<w\"f)om,`}<T$u{}m$}g"; +// var10004 = 58; +// break; +// case 58: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 60; +// var10003 = "^|+}{y9.}gom?gjhv?"; +// var10004 = 59; +// break; +// case 59: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 61; +// var10003 = "^|+}{y9!}hxz!szo#mqfq7.}dlp(`l2t$u{}m(<^sk&w{Om,`}"; +// var10004 = 60; +// break; +// case 60: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 62; +// var10003 = "xx9s"; +// var10004 = 61; +// break; +// case 61: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 63; +// var10003 = "v\u0020b`yk(<j}k"; +// var10004 = 62; +// break; +// case 62: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 64; +// var10003 = "_V\u0000B@YK\bMAST\b"; +// var10004 = 63; +// break; +// case 63: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 65; +// var10003 = "ul"; +// var10004 = 64; +// break; +// case 64: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 66; +// var10003 = "O\\\u0001WJH9\u000e]\\RMeV@OM\u0004\\JH9eg\']]\u0012Gzyk\u0012[M50mSZ<p82ONV\u00002HXF\u0018aln982@RW\b@)VV\u0004\\)]]\u0012Gzyk\u0012@fp|>2|n9\u0002\\)4lcSMCL>w{CP\t/|n7\fVVIj(`VU]d2^T\\\u001fW)i7\fVV_u$wghF\u0004V5\"(|2HR]mg\']]\u0012Gzyk\u0012[M<W\u0002F)UWm:90(}\"\u0020"; +// var10004 = 65; +// break; +// case 65: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 67; +// var10003 = "_x#qlp"; +// var10004 = 66; +// break; +// case 66: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 68; +// var10003 = "Qp>a`r~mafik.w)xx9sk}j(2`r\"`d}m$}g"; +// var10004 = 67; +// break; +// case 67: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 69; +// var10003 = "Hk,|zqp>a`swmW{nv?2\'27"; +// var10004 = 68; +// break; +// case 68: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 70; +// var10003 = "Yw9w{<m%w)ov8`jy9)s}}{,al<L\u001f^%<l>w{<x#v)lx>a~sk)<"; +// var10004 = 69; +// break; +// case 69: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 71; +// var10003 = "Sr"; +// var10004 = 70; +// break; +// case 70: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 72; +// var10003 = "N|*{zh|?wm<\\\u0000s`p"; +// var10004 = 71; +// break; +// case 71: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 73; +// var10003 = "Ol=bfnm\u0001wyu"; +// var10004 = 72; +// break; +// case 72: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 74; +// var10003 = "Ov8`jyI\u001aV"; +// var10004 = 73; +// break; +// case 73: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 75; +// var10003 = "\u0016W\"2du~?s}uv#2zyu(q}y}G"; +// var10004 = 74; +// break; +// case 74: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 76; +// var10003 = "Ov8`jyL\u0004V"; +// var10004 = 75; +// break; +// case 75: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 77; +// var10003 = "Ol=bfnm\u0018|`hj"; +// var10004 = 76; +// break; +// case 76: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 78; +// var10003 = "Lx>a~sk)"; +// var10004 = 77; +// break; +// case 77: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 79; +// var10003 = "Ov8`jyL\u001f^"; +// var10004 = 78; +// break; +// case 78: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 80; +// var10003 = "Hx?ulhL\u001f^"; +// var10004 = 79; +// break; +// case 79: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 81; +// var10003 = "Ol=bfnm\bjyXx9w"; +// var10004 = 80; +// break; +// case 80: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 82; +// var10003 = "Ol=bfnm\b_huu"; +// var10004 = 81; +// break; +// case 81: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 83; +// var10003 = "_J(`yk\u0003sdy"; +// var10004 = 82; +// break; +// case 82: +// var10001[var10002] = var1; +// Y = var10000; +// break labelwhile; +// case 83: +// var10003 = "kn:<jst={ln|cqfq"; +// var10004 = 84; +// break; +// case 84: +// var10003 = "_v=k{u~%f)4zd2Jst={ln|a2@rzc28%\u0020t?;,)t"; +// var10004 = 85; +// break; +// case 85: +// var10003 = "_v\u0020b`yk(2Zii=}{h9~<:2)"; +// var10004 = 86; +// break; +// case 86: +// var10003 = "3t$u{}m(Syljb_`{k,fl/"; +// var10004 = 87; +// break; +// case 87: +// var10003 = "3t$u{}m(=Du~?s}yZ!{lrm~\u0020;2s,`6/+"; +// var10004 = 88; +// break; +// case 88: +// var10003 = "<e15@;e1:ZYU\bQ]<"; +// var10004 = -1; +// break; +// default: +// var10001[var10002] = var1; +// var10001 = var10000; +// var10002 = 1; +// var10003 = "<_\u001f]D<X\tMOu|!v)KQ\b@L<\\#f`h`\u0019kyy9\u0003]]<P\u00032!;Zj>.X>d;"; +// var10004 = 0; +// } +// } +// } + + static { + String[] var10000 = new String[84]; + String[] var10001 = var10000; + byte var10002 = 0; + String var10003 = "tm9b336"; + byte var10004 = 83; + + labelglobal: + while(true) { + char[] var7; + label123: { + char[] var2 = var10003.toCharArray(); + int var10006 = var2.length; + int var0 = 0; + var7 = var2; + int var8 = var10006; + if(var10006 > 1) { + var7 = var2; + if(var8 <= var0) { + break label123; + } + } + + do { + char[] var10 = var7; + int var10007 = var0; + + while(true) { + char var10008 = var10[var10007]; + byte var10009; + switch(var0 % 5) { + case 0: + var10009 = 28; + break; + case 1: + var10009 = 25; + break; + case 2: + var10009 = 77; + break; + case 3: + var10009 = 18; + break; + default: + var10009 = 9; + } + + var10[var10007] = (char)(var10008 ^ var10009); + ++var0; + if(var8 != 0) { + break; + } + + var10007 = var8; + var10 = var7; + } + } while(var8 > var0); + } + + String var6 = (new String(var7)).intern(); + switch(var10004) { + case 0: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 2; + var10003 = "_V\u0018\\]43d"; + var10004 = 1; + break; + case 1: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 3; + var10003 = "<e15};e1:ZYU\bQ]<"; + var10004 = 2; + break; + case 2: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 4; + var10003 = "O\\\u0001WJH9jQ.`eeALP\\\u000eF)"; + var10004 = 3; + break; + case 3: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 5; + var10003 = "<e15K;e1:ZYU\bQ]<"; + var10004 = 4; + break; + case 4: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 6; + var10003 = "<_\u001f]D<X\tM]}{!w)KQ\b@L<\\#f`h`\u0019kyy9\u0003]]<P\u00032!;Zj>.X>d;"; + var10004 = 5; + break; + case 5: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 7; + var10003 = "<e15Y;e1:ZYU\bQ]<"; + var10004 = 6; + break; + case 6: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 8; + var10003 = "<e15D;e1:ZYU\bQ]<"; + var10004 = 7; + break; + case 7: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 9; + var10003 = "<_\u001f]D<T\u0012F{}w>sjhp\"| "; + var10004 = 8; + break; + case 8: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 10; + var10003 = "<_\u001f]D<T\u0012B{s}8q}5"; + var10004 = 9; + break; + case 9: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 11; + var10003 = "<_\u001f]D<Z\u0012[gjv$ql5"; + var10004 = 10; + break; + case 10: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 12; + var10003 = "<_\u001f]D<X\tMJsu8\u007fg<N\u0005W[Y9\b|}um4Fpl|m\\FH9\u0004\\)4>\u000e5%;]j; "; + var10004 = 11; + break; + case 11: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 13; + var10003 = "<e15o;e1:ZYU\bQ]<"; + var10004 = 12; + break; + case 12: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 14; + var10003 = "op"; + var10004 = 13; + break; + case 13: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 15; + var10003 = "<_\u001f]D<X\tM\\o|?;"; + var10004 = 14; + break; + case 14: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 16; + var10003 = "<_\u001f]D<Z\u0012PY}k9|ln0"; + var10004 = 15; + break; + case 15: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 17; + var10003 = "<_\u001f]D<X\tMJpp(|}5"; + var10004 = 16; + break; + case 16: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 18; + var10003 = "<e15E;e1:ZYU\bQ]<"; + var10004 = 17; + break; + case 17: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 19; + var10003 = "<_\u001f]D<Z\u0012[gjv$qlPp#w "; + var10004 = 18; + break; + case 18: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 20; + var10003 = "<_\u001f]D<X\tMZej9wd"; + var10004 = 19; + break; + case 19: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 21; + var10003 = "<e15j;e1:ZYU\bQ]<"; + var10004 = 20; + break; + case 20: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 22; + var10003 = "<e15\\;e1:ZYU\bQ]<"; + var10004 = 21; + break; + case 21: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 23; + var10003 = "O|,fz"; + var10004 = 22; + break; + case 22: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 24; + var10003 = "Om,f|o"; + var10004 = 23; + break; + case 23: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 25; + var10003 = "_v b`yk(2Zhx#vhn}"; + var10004 = 24; + break; + case 24: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 26; + var10003 = "lp"; + var10004 = 25; + break; + case 25: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 27; + var10003 = "O\\\u0001WJH9\u001bsei|mT[STmSMCZ!{lrmmEAYK\b2@oX.f`j|p5P;9\u0002@MYKmPP<X\tMJpp(|}CP\t2MYJ\u000e"; + var10004 = 26; + break; + case 26: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 28; + var10003 = "Uw+}{qx9{fr98bm}m(v\'"; + var10004 = 27; + break; + case 27: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 29; + var10003 = "_x#|fh9.}ghx.f)O|?dln9c<\'"; + var10004 = 28; + break; + case 28: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 30; + var10003 = "<P#tfnt,f`swmgyxx9wm2"; + var10004 = 29; + break; + case 29: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 31; + var10003 = "&9"; + var10004 = 30; + break; + case 30: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 32; + var10003 = "N|!who|m!\'/7}"; + var10004 = 31; + break; + case 31: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 33; + var10003 = "&9\b`{skmeauu(2jsw9sjhp#u)hq(2euz(|zy9>w{j|?"; + var10004 = 32; + break; + case 32: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 34; + var10003 = "N|!who|m"; + var10004 = 33; + break; + case 33: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 35; + var10003 = "J|?a`swm"; + var10004 = 34; + break; + case 34: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 36; + var10003 = "Xx9sk}j(2"; + var10004 = 35; + break; + case 35: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 37; + var10003 = "{|9Vhhx/szyT(fhXx9s"; + var10004 = 36; + break; + case 36: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 38; + var10003 = "Y}$f`swm"; + var10004 = 37; + break; + case 37: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 39; + var10003 = "q}"; + var10004 = 38; + break; + case 38: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 40; + var10003 = "O`>flqW,\u007fl"; + var10004 = 39; + break; + case 39: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 41; + var10003 = "_q(qb<U$qlrj("; + var10004 = 40; + break; + case 40: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 42; + var10003 = "O`>flqJ9s}ij"; + var10004 = 41; + break; + case 41: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 43; + var10003 = "Om,`}Qp*`hhp\"|"; + var10004 = 42; + break; + case 42: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 44; + var10003 = "Rv?fa"; + var10004 = 43; + break; + case 43: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 45; + var10003 = "_|#fln"; + var10004 = 44; + break; + case 44: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 46; + var10003 = "Ov8fa"; + var10004 = 45; + break; + case 45: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 47; + var10003 = "Ol=bfnm\u000e}ghk,q}"; + var10004 = 46; + break; + case 46: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 48; + var10003 = "]j>w}<P\t/"; + var10004 = 47; + break; + case 47: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 49; + var10003 = "_q(qb<|#f{u|>2hr}mb{yj>2FW99})ol/\u007f`h7"; + var10004 = 48; + break; + case 48: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 50; + var10003 = "Ol=bfnm\u000e}ghk,q}Iw$fz"; + var10004 = 49; + break; + case 49: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 51; + var10003 = "o`>"; + var10004 = 50; + break; + case 50: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 52; + var10003 = "./~"; + var10004 = 51; + break; + case 51: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 53; + var10003 = "_v#fh\u007fm$|n<Z\"\u007fyu|?w)Ol=bfnmm<\'2"; + var10004 = 52; + break; + case 52: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 54; + var10003 = "_v b`yk(2Zhx#vhn}m[gzv?\u007fhhp\"|)ii)s}y}c"; + var10004 = 53; + break; + case 53: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 55; + var10003 = "Ox;w)pp.wgo|mw{nv?3"; + var10004 = 54; + break; + case 54: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 56; + var10003 = "\u007fv <jst={ln|c\u007f`{k,fl2N\"`byk\u001efhnm"; + var10004 = 55; + break; + case 55: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 57; + var10003 = "^|+}{y9#w~Uw>fhrz("; + var10004 = 56; + break; + case 56: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 58; + var10003 = "]\u007f9w{<u\"sm\u007fu,az&9.}d2z\"\u007fyu|?w\'qp*`hh|cEfnr(`Zhx?f"; + var10004 = 57; + break; + case 57: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 59; + var10003 = "_v8~m<w\"f)om,`}<T$u{}m$}g"; + var10004 = 58; + break; + case 58: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 60; + var10003 = "^|+}{y9.}gom?gjhv?"; + var10004 = 59; + break; + case 59: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 61; + var10003 = "^|+}{y9!}hxz!szo#mqfq7.}dlp(`l2t$u{}m(<^sk&w{Om,`}"; + var10004 = 60; + break; + case 60: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 62; + var10003 = "xx9s"; + var10004 = 61; + break; + case 61: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 63; + var10003 = "\u007fv b`yk(<j}k"; + var10004 = 62; + break; + case 62: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 64; + var10003 = "_V\u0000B@YK\bMAST\b"; + var10004 = 63; + break; + case 63: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 65; + var10003 = "ul"; + var10004 = 64; + break; + case 64: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 66; + var10003 = "O\\\u0001WJH9\u000e]\\RMeV@OM\u0004\\JH9eg\']]\u0012Gzyk\u0012[M50mSZ<p82ONV\u00002HXF\u0018aln982@RW\b@)VV\u0004\\)]]\u0012Gzyk\u0012@fp|>2|n9\u0002\\)4lcSMCL>w{CP\t/|n7\fVVIj(`VU]d2^T\\\u001fW)i7\fVV_u$wghF\u0004V5\"(|2HR]mg\']]\u0012Gzyk\u0012[M<W\u0002F)UWm:90(}\" "; + var10004 = 65; + break; + case 65: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 67; + var10003 = "_x#qlp"; + var10004 = 66; + break; + case 66: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 68; + var10003 = "Qp>a`r~mafik.w)xx9sk}j(2`r\u007f\"`d}m$}g"; + var10004 = 67; + break; + case 67: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 69; + var10003 = "Hk,|zqp>a`swmW{nv?2\'27"; + var10004 = 68; + break; + case 68: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 70; + var10003 = "Yw9w{<m%w)ov8`jy9)s}}{,al<L\u001f^%<l>w{<x#v)lx>a~sk)<"; + var10004 = 69; + break; + case 69: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 71; + var10003 = "Sr"; + var10004 = 70; + break; + case 70: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 72; + var10003 = "N|*{zh|?wm<\\\u0000s`p"; + var10004 = 71; + break; + case 71: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 73; + var10003 = "Ol=bfnm\u0001w\u007fyu"; + var10004 = 72; + break; + case 72: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 74; + var10003 = "Ov8`jyI\u001aV"; + var10004 = 73; + break; + case 73: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 75; + var10003 = "\u0016W\"2du~?s}uv#2zyu(q}y}G"; + var10004 = 74; + break; + case 74: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 76; + var10003 = "Ov8`jyL\u0004V"; + var10004 = 75; + break; + case 75: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 77; + var10003 = "Ol=bfnm\u0018|`hj"; + var10004 = 76; + break; + case 76: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 78; + var10003 = "Lx>a~sk)"; + var10004 = 77; + break; + case 77: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 79; + var10003 = "Ov8`jyL\u001f^"; + var10004 = 78; + break; + case 78: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 80; + var10003 = "Hx?ulhL\u001f^"; + var10004 = 79; + break; + case 79: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 81; + var10003 = "Ol=bfnm\bjyXx9w"; + var10004 = 80; + break; + case 80: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 82; + var10003 = "Ol=bfnm\b_huu"; + var10004 = 81; + break; + case 81: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 83; + var10003 = "_J(`\u007fyk\u0003sdy"; + var10004 = 82; + break; + case 82: + var10001[var10002] = var6; + Y = var10000; + break labelglobal; + case 83: + var10003 = "kn:<jst={ln|cqfq"; + var10004 = 84; + break; + case 84: + var10003 = "_v=k{u~%f)4zd2Jst={ln|a2@rzc28% t?;,)t"; + var10004 = 85; + break; + case 85: + var10003 = "_v b`yk(2Zii=}{h9~<:2)"; + var10004 = 86; + break; + case 86: + var10003 = "3t$u{}m(Syljb_`{k,fl/"; + var10004 = 87; + break; + case 87: + var10003 = "3t$u{}m(=Du~?s}yZ!{lrm~ ;2s,`6/+\u007f"; + var10004 = 88; + break; + case 88: + var10003 = "<e15@;e1:ZYU\bQ]<"; + var10004 = -1; + break; + default: + var10001[var10002] = var6; + var10001 = var10000; + var10002 = 1; + var10003 = "<_\u001f]D<X\tMOu|!v)KQ\b@L<\\#f`h`\u0019kyy9\u0003]]<P\u00032!;Zj>.X>d;"; + var10004 = 0; + } + } + } + + public static void main(String[] args) { + + String[] arr = Y; + + System.out.println("---"); + + int a = 0; + try { + a = a; + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + +} diff --git a/src/test/misc/en/ListInsertTest.java b/src/test/misc/en/ListInsertTest.java new file mode 100644 index 0000000..ceabe83 --- /dev/null +++ b/src/test/misc/en/ListInsertTest.java @@ -0,0 +1,34 @@ +package test.misc.en; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; + +public class ListInsertTest { + + public static void main(String[] args) { + + List<Integer> lst1 = new ArrayList<Integer>(Arrays.asList(new Integer[]{1, 2, 3})); + List<Integer> lst2 = new LinkedList<Integer>(Arrays.asList(new Integer[]{1, 2, 3})); + + Date d = new Date(); + + for(int i=0;i<300000;i++) { + lst1.add(1, i); + } + + System.out.println(new Date().getTime() - d.getTime()); + + d = new Date(); + + for(int i=0;i<300000;i++) { + lst2.add(1, i); + } + + System.out.println(new Date().getTime() - d.getTime()); + + } + +} diff --git a/src/test/misc/en/Operation.java b/src/test/misc/en/Operation.java new file mode 100644 index 0000000..3051fb3 --- /dev/null +++ b/src/test/misc/en/Operation.java @@ -0,0 +1,51 @@ +package test.misc.en; + +public enum Operation { + + PLUS(2) { + double eval(double x, double y) { return x + y; } + }, + MINUS(7) { + double eval(double x, double y) { return x - y; } + }, + TIMES(8) { + double eval(double x, double y) { return x * y; } + }, + DIVIDED_BY(0) { + double eval(double x, double y) { return x / y; } + }; + + + // Perform the arithmetic operation represented by this constant + + abstract double eval(double x, double y); + + Operation(int t) { + +// class LocalClass { +// +// } +// +// LocalClass e = null; + + System.out.println(); + } + + + public static void main(String args[]) { + double x = Double.parseDouble(args[0]); + double y = Double.parseDouble(args[1]); + + Operation opp = Operation.DIVIDED_BY; + + switch(opp) { + case MINUS: + System.out.println(); + case PLUS: + } + + for (Operation op : Operation.values()) { + System.out.println(x + " " + op + " " + y + " = " + op.eval(x, y)); + } + } +}
\ No newline at end of file diff --git a/src/test/misc/en/SwitchInTest.java b/src/test/misc/en/SwitchInTest.java new file mode 100644 index 0000000..8d04665 --- /dev/null +++ b/src/test/misc/en/SwitchInTest.java @@ -0,0 +1,19 @@ +package test.misc.en; + +public class SwitchInTest { + + public static void main(String[] args) { + + short t = 2; + switch(t) { + case -56: + case 0: + case 3: + case 129: + System.out.println(); + default: + } + + } + +} diff --git a/src/test/misc/en/TestOperation.java b/src/test/misc/en/TestOperation.java new file mode 100644 index 0000000..c6763b1 --- /dev/null +++ b/src/test/misc/en/TestOperation.java @@ -0,0 +1,31 @@ +package test.misc.en; + +public class TestOperation { + + public void test() { + + double x = 2; + double y = 3; + + Operation opp = Operation.DIVIDED_BY; + + switch(opp) { + case MINUS: + System.out.println(); + case PLUS: + } + + switch(Operation.MINUS) { + case DIVIDED_BY: + System.out.println(); + case PLUS: + case TIMES: + } + + for (Operation op : Operation.values()) { + System.out.println(x + " " + op + " " + y + " = " + op.eval(x, y)); + } + + } + +} diff --git a/src/test/output/TestEclipse7.java b/src/test/output/TestEclipse7.java new file mode 100644 index 0000000..a37b582 --- /dev/null +++ b/src/test/output/TestEclipse7.java @@ -0,0 +1,15 @@ +package test.output; + +import java.lang.reflect.Method; + +public class TestEclipse7 { + + public void testMultiCatch() { + try { + Method e = this.getClass().getDeclaredMethod("foo", new Class[0]); + } catch (SecurityException | NoSuchMethodException var2) { + var2.printStackTrace(); + } + + } +} diff --git a/src/test/output/TestJavac7.java b/src/test/output/TestJavac7.java new file mode 100644 index 0000000..9ddb71e --- /dev/null +++ b/src/test/output/TestJavac7.java @@ -0,0 +1,129 @@ +package test.output; + +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Method; + +public class TestJavac7 { + + public void testTryResources() throws IOException { + FileReader var1 = new FileReader("file"); + Throwable var2 = null; + + try { + FileReader var3 = new FileReader("file"); + Throwable var4 = null; + + try { + System.out.println(); + } catch (Throwable var27) { + var4 = var27; + throw var27; + } finally { + if(var3 != null) { + if(var4 != null) { + try { + var3.close(); + } catch (Throwable var26) { + var4.addSuppressed(var26); + } + } else { + var3.close(); + } + } + + } + } catch (Throwable var29) { + var2 = var29; + throw var29; + } finally { + if(var1 != null) { + if(var2 != null) { + try { + var1.close(); + } catch (Throwable var25) { + var2.addSuppressed(var25); + } + } else { + var1.close(); + } + } + + } + + } + + public void testTryResources1() throws IOException { + try { + FileReader var1 = new FileReader("file"); + Throwable var2 = null; + + try { + System.out.println("block"); + } catch (Throwable var20) { + var2 = var20; + throw var20; + } finally { + if(var1 != null) { + if(var2 != null) { + try { + var1.close(); + } catch (Throwable var19) { + var2.addSuppressed(var19); + } + } else { + var1.close(); + } + } + + } + } catch (RuntimeException var22) { + System.out.println(var22.toString()); + } finally { + System.out.println("finally"); + } + + } + + public void testMultiCatch() { + try { + Method var1 = this.getClass().getDeclaredMethod("foo", new Class[0]); + } catch (SecurityException var2) { + var2.printStackTrace(); + } + + } + + public void testSwitchString() { + String var1 = ""; + byte var3 = -1; + switch(var1.hashCode()) { + case 2112: + if(var1.equals("BB")) { + var3 = 1; + } else if(var1.equals("Aa")) { + var3 = 0; + } + break; + case 3040: + if(var1.equals("__")) { + var3 = 2; + } + } + + switch(var3) { + case 0: + System.out.println("!"); + break; + case 1: + System.out.println("?"); + break; + case 2: + System.out.println("_"); + break; + default: + System.out.println("#"); + } + + } +} diff --git a/src/test/output/TestJavac8.java b/src/test/output/TestJavac8.java new file mode 100644 index 0000000..2b66907 --- /dev/null +++ b/src/test/output/TestJavac8.java @@ -0,0 +1,104 @@ +package test.output; + +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Method; + +public class TestJavac8 { + + public static void main(String[] var0) { + (new TestJavac8()).testLambda(); + } + + public void testTryResources() throws IOException { + FileReader var1 = new FileReader("file"); + Throwable var2 = null; + + try { + FileReader var3 = new FileReader("file"); + Throwable var4 = null; + + try { + System.out.println(); + } catch (Throwable var27) { + var4 = var27; + throw var27; + } finally { + if(var3 != null) { + if(var4 != null) { + try { + var3.close(); + } catch (Throwable var26) { + var4.addSuppressed(var26); + } + } else { + var3.close(); + } + } + + } + } catch (Throwable var29) { + var2 = var29; + throw var29; + } finally { + if(var1 != null) { + if(var2 != null) { + try { + var1.close(); + } catch (Throwable var25) { + var2.addSuppressed(var25); + } + } else { + var1.close(); + } + } + + } + + } + + public void testMultiCatch() { + try { + Method var1 = this.getClass().getDeclaredMethod("foo", new Class[0]); + } catch (SecurityException var2) { + var2.printStackTrace(); + } + + } + + private void testSwitchString() { + String var1 = ""; + byte var3 = -1; + switch(var1.hashCode()) { + case 2112: + if(var1.equals("BB")) { + var3 = 1; + } else if(var1.equals("Aa")) { + var3 = 0; + } + break; + case 3040: + if(var1.equals("__")) { + var3 = 2; + } + } + + switch(var3) { + case 0: + System.out.println("!"); + break; + case 1: + System.out.println("?"); + break; + case 2: + System.out.println("_"); + break; + default: + System.out.println("#"); + } + + } + + public void testLambda() { + } +} diff --git a/src/test/util/DotExporter.java b/src/test/util/DotExporter.java new file mode 100644 index 0000000..88b9320 --- /dev/null +++ b/src/test/util/DotExporter.java @@ -0,0 +1,183 @@ +package test.util; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; + + +import de.fernflower.code.cfg.BasicBlock; +import de.fernflower.code.cfg.ControlFlowGraph; +import de.fernflower.modules.decompiler.StatEdge; +import de.fernflower.modules.decompiler.sforms.DirectGraph; +import de.fernflower.modules.decompiler.sforms.DirectNode; +import de.fernflower.modules.decompiler.stats.Statement; +import de.fernflower.modules.decompiler.vars.VarVersionEdge; +import de.fernflower.modules.decompiler.vars.VarVersionNode; +import de.fernflower.modules.decompiler.vars.VarVersionsGraph; + +public class DotExporter { + + + public static String toDotFormat(Statement stat) { + + StringBuffer buffer = new StringBuffer(); + + buffer.append("digraph G {\r\n"); + + for(Statement st : stat.getStats()) { + + String sourceid = st.id + (st.getSuccessorEdges(StatEdge.TYPE_EXCEPTION).isEmpty()?"":"000000"); + + buffer.append(sourceid+" [shape=box,label=\""+sourceid+"\"];\r\n"); + + for(StatEdge edge : st.getSuccessorEdges(Statement.STATEDGE_DIRECT_ALL)) { + String destid = edge.getDestination().id + (edge.getDestination().getSuccessorEdges(StatEdge.TYPE_EXCEPTION).isEmpty()?"":"000000"); + + buffer.append(sourceid+"->"+destid+";\r\n"); + + if(!stat.getStats().contains(edge.getDestination())) { + buffer.append(destid+" [label=\""+destid+"\"];\r\n"); + } + } + + for(StatEdge edge : st.getSuccessorEdges(StatEdge.TYPE_EXCEPTION)) { + String destid = edge.getDestination().id + (edge.getDestination().getSuccessorEdges(StatEdge.TYPE_EXCEPTION).isEmpty()?"":"000000"); + + buffer.append(sourceid+" -> "+destid+" [style=dotted];\r\n"); + + if(!stat.getStats().contains(edge.getDestination())) { + buffer.append(destid+" [label=\""+destid+"\"];\r\n"); + } + } + } + + buffer.append("}"); + + return buffer.toString(); + } + + + public static String toDotFormat(ControlFlowGraph graph, boolean showMultipleEdges) { + + StringBuffer buffer = new StringBuffer(); + + buffer.append("digraph G {\r\n"); + + List<BasicBlock> blocks = graph.getBlocks(); + for(int i=0;i<blocks.size();i++) { + BasicBlock block = (BasicBlock)blocks.get(i); + + buffer.append(block.id+" [shape=box,label=\""+block.id+"\"];\r\n"); + + + List<BasicBlock> suc = block.getSuccs(); + if(!showMultipleEdges) { + HashSet<BasicBlock> set = new HashSet<BasicBlock>(); + set.addAll(suc); + suc = Collections.list(Collections.enumeration(set)); + } + for(int j=0;j<suc.size();j++) { + buffer.append(block.id+"->"+((BasicBlock)suc.get(j)).id+";\r\n"); + } + + + suc = block.getSuccExceptions(); + if(!showMultipleEdges) { + HashSet<BasicBlock> set = new HashSet<BasicBlock>(); + set.addAll(suc); + suc = Collections.list(Collections.enumeration(set)); + } + for(int j=0;j<suc.size();j++) { + buffer.append(block.id+" -> "+((BasicBlock)suc.get(j)).id+" [style=dotted];\r\n"); + } + } + + buffer.append("}"); + + return buffer.toString(); + } + + public static String toDotFormat(VarVersionsGraph graph) { + + StringBuffer buffer = new StringBuffer(); + + buffer.append("digraph G {\r\n"); + + List<VarVersionNode> blocks = graph.nodes; + for(int i=0;i<blocks.size();i++) { + VarVersionNode block = blocks.get(i); + + buffer.append((block.var*1000+block.version)+" [shape=box,label=\""+block.var+"_"+block.version+"\"];\r\n"); + + for(VarVersionEdge edge: block.succs) { + VarVersionNode dest = edge.dest; + buffer.append((block.var*1000+block.version)+"->"+(dest.var*1000+dest.version)+(edge.type==VarVersionEdge.EDGE_PHANTOM?" [style=dotted]":"")+";\r\n"); + } + } + + buffer.append("}"); + + return buffer.toString(); + } + + public static String toDotFormat(DirectGraph graph) { + + StringBuffer buffer = new StringBuffer(); + + buffer.append("digraph G {\r\n"); + + List<DirectNode> blocks = graph.nodes; + for(int i=0;i<blocks.size();i++) { + DirectNode block = blocks.get(i); + + buffer.append(directBlockIdToDot(block.id)+" [shape=box,label=\""+directBlockIdToDot(block.id)+"\"];\r\n"); + + for(DirectNode dest: block.succs) { + buffer.append(directBlockIdToDot(block.id)+"->"+directBlockIdToDot(dest.id)+";\r\n"); + } + } + + buffer.append("}"); + + return buffer.toString(); + } + + private static String directBlockIdToDot(String id) { + id = id.replaceAll("_try", "999"); + id = id.replaceAll("_tail", "888"); + return id; + } + + public static void toDotFile(ControlFlowGraph graph, File file, boolean showMultipleEdges) throws FileNotFoundException, IOException { + BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); + out.write(toDotFormat(graph, showMultipleEdges).getBytes()); + out.close(); + } + + public static void toDotFile(VarVersionsGraph graph, File file) throws FileNotFoundException, IOException { + + BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); + out.write(toDotFormat(graph).getBytes()); + out.close(); + } + + public static void toDotFile(DirectGraph graph, File file) throws FileNotFoundException, IOException { + + BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); + out.write(toDotFormat(graph).getBytes()); + out.close(); + } + + public static void toDotFile(Statement stat, File file) throws FileNotFoundException, IOException { + + BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); + out.write(toDotFormat(stat).getBytes()); + out.close(); + } + +} diff --git a/src/test/util/MemoryMonitor.java b/src/test/util/MemoryMonitor.java new file mode 100644 index 0000000..4030383 --- /dev/null +++ b/src/test/util/MemoryMonitor.java @@ -0,0 +1,25 @@ +package test.util; + +public class MemoryMonitor implements Runnable { + + public static boolean run = false; + + + public void run() { + + while(run) { + try { + Thread.sleep(500); + } catch(InterruptedException ex) { + ex.printStackTrace(); + } + + //Runtime.getRuntime().gc(); + System.err.println((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/(1024*1024)); + + } + + } + + +} diff --git a/src/test/util/Timer.java b/src/test/util/Timer.java new file mode 100644 index 0000000..5a45cc0 --- /dev/null +++ b/src/test/util/Timer.java @@ -0,0 +1,31 @@ +package test.util; + +import java.util.HashMap; + +public class Timer { + + private static HashMap<String, Double> mapValue = new HashMap<String, Double>(); + + public static void addTime(int index, long value) { + addTime(String.valueOf(index), value); + } + + public static double getTime(int index) { + return mapValue.get(String.valueOf(index)); + } + + public static void addTime(String index, double value) { + Double val = mapValue.get(index); + if(val != null) { + value+=val.doubleValue(); + } + mapValue.put(index, value); + } + + public static double getTime(String index) { + Double value = mapValue.get(index); + return value==null?0:value.doubleValue(); + } + +} + diff --git a/src/test/util/ZipStripper.java b/src/test/util/ZipStripper.java new file mode 100644 index 0000000..2eeb2c0 --- /dev/null +++ b/src/test/util/ZipStripper.java @@ -0,0 +1,71 @@ +package test.util; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Enumeration; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + +public class ZipStripper { + + public static void main(String[] args) { + + try { + String sourceFileName = args[0]; + File sourceFile = new File(sourceFileName); + + File tempFile = new File(sourceFile.getParentFile(), "tmp31415926535.zip"); + tempFile.createNewFile(); + + ZipOutputStream outTemp = new ZipOutputStream(new FileOutputStream(tempFile)); + + ZipFile archive = new ZipFile(sourceFile); + + Enumeration<? extends ZipEntry> en = archive.entries(); + while(en.hasMoreElements()) { + ZipEntry entr = en.nextElement(); + + outTemp.putNextEntry(new ZipEntry(entr.getName())); + + if(!entr.isDirectory()) { + InputStream in = archive.getInputStream(entr); + + copyInputStream(in, outTemp); + in.close(); + } + } + + outTemp.flush(); + outTemp.close(); + + archive.close(); + + String destFileName = args[1]; + + if(sourceFileName.equals(destFileName)) { + sourceFile.delete(); + } + + tempFile.renameTo(new File(destFileName)); + + } catch(Exception ex) { + ex.printStackTrace(); + } + + } + + public static void copyInputStream(InputStream in, OutputStream out)throws IOException { + + byte[] buffer = new byte[1024]; + int len; + + while((len = in.read(buffer)) >= 0) { + out.write(buffer, 0, len); + } + } + +} |