// This file is part of the Java Compiler Kit (JKit) // // The Java Compiler Kit is free software; you can // redistribute it and/or modify it under the terms of the // GNU General Public License as published by the Free Software // Foundation; either version 2 of the License, or (at your // option) any later version. // // The Java Compiler Kit is distributed in the hope // that it will be useful, but WITHOUT ANY WARRANTY; without // even the implied warranty of MERCHANTABILITY or FITNESS FOR // A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // You should have received a copy of the GNU General Public // License along with the Java Compiler Kit; if not, // write to the Free Software Foundation, Inc., 59 Temple Place, // Suite 330, Boston, MA 02111-1307 USA // // (C) David James Pearce, 2009. package jasm.testing; import static org.junit.Assert.fail; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import jasm.io.ClassFileReader; import jasm.io.ClassFileWriter; import jasm.lang.ClassFile; import jasm.verifier.ClassFileVerifier; import jasm.verifier.TypeAnalysis; import org.junit.*; /** * A set of micro-tests where each test is generated from a Java source file. * This test suite is taken from the valid test suite developed for the JKit * compiler. * * @author David J. Pearce * */ public class JKitValidTests { /** * Path to test directory. */ private String testdir = "tests/jkit/".replace('/', File.separatorChar); // ====================================================================== // Test Harness // ====================================================================== /** * Decompile a given test from its provided class file, and then recompile * it and check the output matches the sample output. * * @param testNames * A list of one or more test names that specify the files which * make up the test. The first item in this array is presumed to * contain the main() method. */ private void runTest(String... testNames) { for(String testName : testNames) { // The name of the original class file String originalClassFile = testdir + File.separatorChar + testName + ".javac"; // The name of the new class file being generated String newClassFile = testdir + File.separatorChar + testName + ".class"; try { // First, we decompile the provided class file for this test case. // This has the "javac" extension to distinguish it from the class // file being generated (and because these class files were // generated using javac). ClassFileReader cfr = new ClassFileReader(new FileInputStream( originalClassFile)); ClassFile cf = cfr.readClass(); new ClassFileVerifier().apply(cf); // Second, we write the decompiled class file back out. This has the // usual "class" extension, so that we can execute it directly using // the "java" command. new ClassFileWriter(new FileOutputStream(newClassFile)).write(cf); } catch (Exception e) { e.printStackTrace(System.err); fail("Exception thrown --- see console output for details."); } } // Third, we executed the newly generated class file and check that it // produces the correct output. String mainTest = testNames[0]; // The name of the file which contains the output for this test String sampleOutputFile = testdir + File.separatorChar + mainTest + ".sysout"; String output = exec(testdir, mainTest); compare(output, sampleOutputFile); } /** * Execute a given class file using the "java" command, and return all * output written to stdout. In the case of some kind of failure, write the * generated stderr stream to this processes stdout. * * @param path * @param className * @return All output generated from the class that was written to stdout. */ private static String exec(String path, String className) { try { // We need to have String tmp = "java -cp . " + className; Process p = Runtime.getRuntime().exec(tmp, null, new File(path)); StringBuffer syserr = new StringBuffer(); StringBuffer sysout = new StringBuffer(); new StreamGrabber(p.getErrorStream(), syserr); new StreamGrabber(p.getInputStream(), sysout); int exitCode = p.waitFor(); if (exitCode != 0) { System.err .println("============================================================"); System.err.println(className); System.err .println("============================================================"); System.err.println(syserr); return null; } else { return sysout.toString(); } } catch (Exception ex) { ex.printStackTrace(); fail("Problem running compiled test"); } return null; } /** * Compare the output of executing java on the test case with a reference * file. If the output differs from the reference output, then the offending * line is written to the stdout and an exception is thrown. * * @param output * This provides the output from executing java on the test case. * @param referenceFile * The full path to the reference file. This should use the * appropriate separator char for the host operating system. */ private static void compare(String output, String referenceFile) { try { BufferedReader outReader = new BufferedReader(new StringReader( output)); BufferedReader refReader = new BufferedReader(new FileReader( new File(referenceFile))); while (refReader.ready() && outReader.ready()) { String a = refReader.readLine(); String b = outReader.readLine(); if (a.equals(b)) { continue; } else { System.err.println(" > " + a); System.err.println(" < " + b); throw new Error("Output doesn't match reference"); } } String l1 = outReader.readLine(); String l2 = refReader.readLine(); if (l1 == null && l2 == null) return; do { l1 = outReader.readLine(); l2 = refReader.readLine(); if (l1 != null) { System.err.println(" < " + l1); } else if (l2 != null) { System.err.println(" > " + l2); } } while (l1 != null && l2 != null); fail("Files do not match"); } catch (Exception ex) { ex.printStackTrace(); fail(); } } /** * Grab everything produced by a given input stream until the End-Of-File * (EOF) is reached. This is implemented as a separate thread to ensure that * reading from other streams can happen concurrently. For example, we can * read concurrently from <code>stdin</code> and <code>stderr</code> for * some process without blocking that process. * * @author David J. Pearce * */ static public class StreamGrabber extends Thread { private InputStream input; private StringBuffer buffer; StreamGrabber(InputStream input, StringBuffer buffer) { this.input = input; this.buffer = buffer; start(); } public void run() { try { int nextChar; // keep reading!! while ((nextChar = input.read()) != -1) { buffer.append((char) nextChar); } } catch (IOException ioe) { } } } // ====================================================================== // Tests // ====================================================================== @Test public void ClassSignature_1() { runTest("ClassSignature_1"); } @Test public void ClassSignature_2() { runTest("ClassSignature_2"); } @Test public void FieldInit_1() { runTest("FieldInit_1"); } @Test public void FieldSignature_1() { runTest("FieldSignature_1"); } @Test public void FieldSignature_2() { runTest("FieldSignature_2"); } @Test public void FieldLoadConversion_1() { runTest("FieldLoadConversion_1"); } @Test public void FieldLoadConversion_2() { runTest("FieldLoadConversion_2"); } @Test public void FieldLoadConversion_3() { runTest("FieldLoadConversion_3"); } @Test public void FieldLoadConversion_4() { runTest("FieldLoadConversion_4"); } @Test public void FieldLoadConversion_5() { runTest("FieldLoadConversion_5"); } @Test public void FieldLoadConversion_6() { runTest("FieldLoadConversion_6"); } @Test public void FieldLoadConversion_7() { runTest("FieldLoadConversion_7"); } @Test public void FieldLoadConversion_8() { runTest("FieldLoadConversion_8"); } @Test public void FieldLoadConversion_9() { runTest("FieldLoadConversion_9"); } @Test public void FieldLoadConversion_10() { runTest("FieldLoadConversion_10"); } @Test public void HeapException_1() { runTest("HeapException_1"); } @Test public void ImplicitConversions_1() { runTest("ImplicitConversions_1"); } @Test public void InfiniteForLoop() { runTest("InfiniteForLoop"); } @Test public void TypeBounds_1() { runTest("TypeBounds_1"); } @Test public void TypeBounds_3() { runTest("TypeBounds_3"); } @Test public void TypeBounds_4() { runTest("TypeBounds_4"); } @Test public void TypeBounds_5() { runTest("TypeBounds_5"); } @Test public void TypeBounds_7() { runTest("TypeBounds_7"); } @Test public void TypeBounds_8() { runTest("TypeBounds_8","TypeBounds_8$Inter","TypeBounds_8$Inner"); } @Test public void TypeBounds_11() { runTest("TypeBounds_11","TypeBounds_11_Helper","TypeBounds_11_Helper$Inter"); } @Test public void TypeBounds_12() { runTest("TypeBounds_12"); } @Test public void TypeBounds_13() { runTest("TypeBounds_13"); } @Test public void TypeBounds_14() { runTest("TypeBounds_14"); } @Test public void WhileLoop_1() { runTest("WhileLoop_1"); } @Test public void Imports_1() { runTest("Imports_1"); } @Test public void Imports_2() { runTest("Imports_2"); } @Test public void Imports_3() { runTest("Imports_3"); } @Test public void JLS_3_3_UnicodeEscapes_1() { runTest("JLS_3_3_UnicodeEscapes_1"); } @Test public void JLS_3_10_1_IntegerLiterals_1() { runTest("JLS_3_10_1_IntegerLiterals_1"); } @Test public void JLS_3_10_2_FloatLiterals_1() { runTest("JLS_3_10_2_FloatLiterals_1"); } @Test public void JLS_3_10_4_CharacterLiterals_1() { runTest("JLS_3_10_4_CharacterLiterals_1"); } @Test public void JLS_4_3_2_GetClass_1() { runTest("JLS_4_3_2_GetClass_1"); } @Test public void JLS_5_1_2_Widening_Conversion_1() { runTest("JLS_5_1_2_Widening_Conversion_1"); } @Ignore("Known Issue (Unicode)") @Test public void JLS_5_1_3_NarrowingConversions_1() { runTest("JLS_5_1_3_NarrowingConversions_1"); } @Ignore("Known Issue (Unicode)") @Test public void JLS_5_1_3_NarrowingConversions_2() { runTest("JLS_5_1_3_NarrowingConversions_2"); } @Test public void JLS_5_1_3_NarrowingConversions_3() { runTest("JLS_5_1_3_NarrowingConversions_3"); } @Test public void JLS_5_1_7_BoxingConversion_1() { runTest("JLS_5_1_7_BoxingConversion_1"); } @Test public void JLS_5_1_7_BoxingConversion_2() { runTest("JLS_5_1_7_BoxingConversion_2"); } @Test public void JLS_5_1_7_BoxingConversion_3() { runTest("JLS_5_1_7_BoxingConversion_3"); } @Test public void JLS_5_1_7_BoxingConversion_4() { runTest("JLS_5_1_7_BoxingConversion_4"); } @Test public void JLS_5_1_7_BoxingConversion_5() { runTest("JLS_5_1_7_BoxingConversion_5"); } @Test public void JLS_5_5_CastingConversion_1() { runTest("JLS_5_5_CastingConversion_1"); } @Test public void JLS_5_5_CastingConversion_2() { runTest("JLS_5_5_CastingConversion_2", "JLS_5_5_CastingConversion_2$Inner", "JLS_5_5_CastingConversion_2$I1", "JLS_5_5_CastingConversion_2$I2"); } @Test public void JLS_5_5_CastingConversion_3() { runTest("JLS_5_5_CastingConversion_3"); } @Test public void JLS_5_5_CastingConversion_4() { runTest("JLS_5_5_CastingConversion_4"); } @Test public void JLS_5_6_2_BinaryPromotion_1() { runTest("JLS_5_6_2_BinaryPromotion_1"); } @Test public void JLS_6_8_6_ConstantNames_1() { runTest("JLS_6_8_6_ConstantNames_1","A","B"); } @Test public void JLS_7_5_3_StaticImport_1() { runTest("JLS_7_5_3_StaticImport_1"); } @Test public void JLS_7_5_3_StaticImport_2() { runTest("JLS_7_5_3_StaticImport_2"); } @Test public void JLS_7_5_3_StaticImport_3() { runTest("JLS_7_5_3_StaticImport_3"); } @Test public void JLS_7_5_3_StaticImport_4() { runTest("JLS_7_5_3_StaticImport_4"); } @Test public void JLS_7_5_3_StaticImport_5() { runTest("JLS_7_5_3_StaticImport_5"); } @Test public void JLS_8_1_2_GenericTypes_1() { runTest("JLS_8_1_2_GenericTypes_1"); } @Ignore("Known Issue") @Test public void JLS_8_1_2_GenericTypes_2() { runTest("JLS_8_1_2_GenericTypes_2","Pair"); } @Test public void JLS_8_1_2_GenericTypes_3() { runTest("JLS_8_1_2_GenericTypes_3"); } @Test public void JLS_8_1_2_GenericTypes_4() { runTest("JLS_8_1_2_GenericTypes_4"); } @Test public void JLS_8_1_2_GenericTypes_5() { runTest("JLS_8_1_2_GenericTypes_5"); } @Test public void JLS_8_1_2_GenericTypes_6() { runTest("JLS_8_1_2_GenericTypes_6"); } @Test public void JLS_8_1_2_GenericTypes_7() { runTest("JLS_8_1_2_GenericTypes_7"); } @Test public void JLS_8_1_2_GenericTypes_8() { runTest("JLS_8_1_2_GenericTypes_8"); } @Test public void JLS_8_1_2_GenericTypes_9() { runTest("JLS_8_1_2_GenericTypes_9"); } @Test public void JLS_8_1_2_GenericTypes_10() { runTest("JLS_8_1_2_GenericTypes_10"); } @Ignore("Known Issue") @Test public void JLS_8_1_2_GenericTypes_11() { runTest("JLS_8_1_2_GenericTypes_11"); } @Ignore("Known Issue") @Test public void JLS_8_1_2_GenericTypes_12() { runTest("JLS_8_1_2_GenericTypes_12","JLS_8_1_2_GenericTypes_12$1"); } @Test public void JLS_8_1_2_GenericTypes_13() { runTest("JLS_8_1_2_GenericTypes_13","JLS_8_1_2_GenericTypes_13$Inter","JLS_8_1_2_GenericTypes_13$Concrete"); } @Test public void JLS_8_1_2_GenericTypes_14() { runTest("JLS_8_1_2_GenericTypes_14","JLS_8_1_2_GenericTypes_14$1"); } @Test public void JLS_8_1_2_GenericTypes_15() { runTest("JLS_8_1_2_GenericTypes_15"); } @Test public void JLS_8_1_2_GenericTypes_16() { runTest("JLS_8_1_2_GenericTypes_16"); } @Test public void JLS_8_1_2_GenericTypes_17() { runTest("JLS_8_1_2_GenericTypes_17"); } @Test public void JLS_8_1_2_GenericTypes_18() { runTest("JLS_8_1_2_GenericTypes_18"); } @Test public void JLS_8_1_2_GenericTypes_19() { runTest("JLS_8_1_2_GenericTypes_19"); } @Test public void JLS_8_1_2_GenericTypes_20() { runTest("JLS_8_1_2_GenericTypes_20"); } @Test public void JLS_8_1_2_GenericTypes_21() { runTest("JLS_8_1_2_GenericTypes_21"); } @Test public void JLS_8_1_2_GenericTypes_22() { runTest("JLS_8_1_2_GenericTypes_22"); } @Test public void JLS_8_1_2_GenericTypes_23() { runTest("JLS_8_1_2_GenericTypes_23"); } @Test public void JLS_8_1_3_InnerClasses_1() { runTest("JLS_8_1_3_InnerClasses_1","JLS_8_1_3_InnerClasses_1$Inner"); } @Test public void JLS_8_1_3_InnerClasses_2() { runTest("JLS_8_1_3_InnerClasses_2","JLS_8_1_3_InnerClasses_2$Inner"); } @Test public void JLS_8_1_3_InnerClasses_3() { runTest("JLS_8_1_3_InnerClasses_3","JLS_8_1_3_InnerClasses_3$Inner"); } @Test public void JLS_8_1_3_InnerClasses_4() { runTest("JLS_8_1_3_InnerClasses_4","InnerClassHelper$Helper1"); } @Test public void JLS_8_1_3_InnerClasses_5() { runTest("JLS_8_1_3_InnerClasses_5","JLS_8_1_3_InnerClasses_5$A","JLS_8_1_3_InnerClasses_5$B","JLS_8_1_3_InnerClasses_5$B$C"); } @Test public void JLS_8_1_3_InnerClasses_6() { runTest("JLS_8_1_3_InnerClasses_6","JLS_8_1_3_InnerClasses_6$Inner"); } @Test public void JLS_8_1_3_InnerClasses_7() { runTest("JLS_8_1_3_InnerClasses_7","JLS_8_1_3_InnerClasses_7$Inner"); } @Test public void JLS_8_1_3_InnerClasses_8() { runTest("JLS_8_1_3_InnerClasses_8","JLS_8_1_3_InnerClasses_8$Inner"); } @Test public void JLS_8_1_3_InnerClasses_9() { runTest("JLS_8_1_3_InnerClasses_9","JLS_8_1_3_InnerClasses_9$Inner"); } @Test public void JLS_8_1_3_InnerClasses_10() { runTest("JLS_8_1_3_InnerClasses_10","JLS_8_1_3_InnerClasses_10$foo"); } @Test public void JLS_8_1_3_InnerClasses_11() { runTest("JLS_8_1_3_InnerClasses_11","JLS_8_1_3_InnerClasses_11$1Test2"); } @Test public void JLS_8_1_3_InnerClasses_13() { runTest("JLS_8_1_3_InnerClasses_13","JLS_8_1_3_InnerClasses_13$1Test2"); } @Test public void JLS_8_1_3_InnerClasses_14() { runTest("JLS_8_1_3_InnerClasses_14","Inter"); } @Test public void JLS_8_1_3_InnerClasses_15() { runTest("JLS_8_1_3_InnerClasses_15","JLS_8_1_3_InnerClasses_15$Inner"); } @Test public void JLS_8_1_3_InnerClasses_17() { runTest("JLS_8_1_3_InnerClasses_17","Parent","Parent$Child"); } @Test public void JLS_8_1_3_InnerClasses_18() { runTest("JLS_8_1_3_InnerClasses_18","ParentInter","ParentInter$Child"); } @Test public void JLS_8_1_3_InnerClasses_19() { runTest("JLS_8_1_3_InnerClasses_19","JLS_8_1_3_InnerClasses_17","Parent","Parent$Child"); } @Test public void JLS_8_1_3_InnerClasses_20() { runTest("JLS_8_1_3_InnerClasses_20","pkg/TestHelper$Inner"); } @Test public void JLS_8_1_3_InnerClasses_21() { runTest("JLS_8_1_3_InnerClasses_21","JLS_8_1_3_InnerClasses_21$Entry"); } @Test public void JLS_8_1_3_InnerClasses_23() { runTest("JLS_8_1_3_InnerClasses_23","JLS_8_1_3_InnerClasses_23$Inter","JLS_8_1_3_InnerClasses_23$Parent","JLS_8_1_3_InnerClasses_23$Child"); } @Test public void JLS_8_1_3_InnerClasses_24() { runTest("JLS_8_1_3_InnerClasses_24","JLS_8_1_3_InnerClasses_24$Inner","JLS_8_1_3_InnerClasses_24$Parent","JLS_8_1_3_InnerClasses_24$Child"); } @Test public void JLS_8_1_3_InnerClasses_25() { runTest("JLS_8_1_3_InnerClasses_25","JLS_8_1_3_InnerClasses_25$1","JLS_8_1_3_InnerClasses_25$Itr","JLS_8_1_3_InnerClasses_25$ListItr"); } @Test public void JLS_8_1_3_InnerClasses_26() { runTest("JLS_8_1_3_InnerClasses_26","JLS_8_1_3_InnerClasses_26$Itr","JLS_8_1_3_InnerClasses_26$ListItr"); } @Test public void JLS_8_1_3_InnerClasses_27() { runTest("JLS_8_1_3_InnerClasses_27","JLS_8_1_3_InnerClasses_27$1"); } @Test public void JLS_8_1_3_InnerClasses_28() { runTest("JLS_8_1_3_InnerClasses_28","JLS_8_1_3_InnerClasses_28$A","JLS_8_1_3_InnerClasses_28$B","JLS_8_1_3_InnerClasses_28$C","JLS_8_1_3_InnerClasses_28$C$1"); } @Test public void JLS_8_1_1_3_StrictClasses_1() { runTest("JLS_8_1_1_3_StrictClasses_1"); } @Test public void JLS_8_3_2_FieldInit_2() { runTest("JLS_8_3_2_FieldInit_2"); } @Test public void JLS_8_4_4_GenericMethods_1() { runTest("JLS_8_4_4_GenericMethods_1","JLS_8_4_4_GenericMethods_1$Parent","JLS_8_4_4_GenericMethods_1$Child"); } @Test public void JLS_8_4_4_GenericMethods_2() { runTest("JLS_8_4_4_GenericMethods_2","JLS_8_4_4_GenericMethods_2$Parent","JLS_8_4_4_GenericMethods_2$Child"); } @Test public void JLS_8_6_InstanceInitializers_1() { runTest("JLS_8_6_InstanceInitializers_1"); } @Test public void JLS_8_7_StaticInitializers_1() { runTest("JLS_8_7_StaticInitializers_1"); } @Test public void JLS_8_7_StaticInitializers_2() { runTest("JLS_8_7_StaticInitializers_2"); } @Test public void JLS_8_8_7_1_ConstructorInvocations_1() { runTest("JLS_8_8_7_1_ConstructorInvocations_1"); } @Test public void JLS_8_8_7_2_Super_1() { runTest("JLS_8_8_7_2_Super_1","JLS_8_8_7_2_Super_1$Sub_1"); } @Test public void JLS_8_8_7_2_Super_2() { runTest("JLS_8_8_7_2_Super_2"); } @Test public void JLS_8_8_7_2_Super_3() { runTest("JLS_8_8_7_2_Super_3","JLS_8_8_7_2_Super_3$Sub_3"); } @Test public void JLS_8_8_7_2_Super_4() { runTest("JLS_8_8_7_2_Super_4","JLS_8_8_7_2_Super_4$Sub_1"); } @Test public void JLS_8_8_7_2_Super_5() { runTest("JLS_8_8_7_2_Super_5","JLS_8_8_7_2_Super_5$Child","JLS_8_8_7_2_Super_5$Parent"); } @Ignore("Known Issue") @Test public void JLS_8_9_Enums_1() { runTest("JLS_8_9_Enums_1","JLS_8_9_Enums_1$Type"); } @Ignore("Known Issue") @Test public void JLS_8_9_Enums_2() { runTest("JLS_8_9_Enums_2","JLS_8_9_Enums_2$Planet"); } @Ignore("Known Issue") @Test public void JLS_8_9_Enums_3() { runTest("JLS_8_9_Enums_3","JLS_8_9_Enums_3$Type"); } @Ignore("Known Issue") @Test public void JLS_8_9_Enums_4() { runTest("JLS_8_9_Enums_4","JLS_8_9_Enums_4$Inner"); } @Ignore("Known Issue") @Test public void JLS_8_9_Enums_5() { runTest("JLS_8_9_Enums_5", "JLS_8_9_Enums_5$XY", "JLS_8_9_Enums_5$XY$1", "JLS_8_9_Enums_5$XY$2"); } @Ignore("Known Issue") @Test public void JLS_8_9_Enums_6() { runTest("JLS_8_9_Enums_6"); } @Test public void JLS_9_3_ConstantFields_1() { runTest("JLS_9_3_ConstantFields_1", "JLS_9_3_ConstantFields_1$Inner", "JLS_9_3_ConstantFields_1$Inter"); } @Test public void JLS_9_3_ConstantFields_2() { runTest("JLS_9_3_ConstantFields_2", "JLS_9_3_ConstantFields_2$Inner", "JLS_9_3_ConstantFields_2$Inter", "JLS_9_3_ConstantFields_2$aInter", "JLS_9_3_ConstantFields_2$bInter"); } @Test public void JLS_9_3_ConstantFields_3() { runTest("JLS_9_3_ConstantFields_3"); } @Test public void JLS_9_3_ConstantFields_4() { runTest("JLS_9_3_ConstantFields_4"); } @Test public void JLS_9_3_ConstantFields_8() { runTest("JLS_9_3_ConstantFields_8"); } @Test public void JLS_9_3_ConstantFields_9() { runTest("JLS_9_3_ConstantFields_9"); } @Ignore("Known Issue") @Test public void JLS_9_3_ConstantFields_10() { runTest("JLS_9_3_ConstantFields_10"); } @Ignore("Known Issue") @Test public void JLS_9_3_ConstantFields_11() { runTest("JLS_9_3_ConstantFields_11"); } @Ignore("Known Issue") @Test public void JLS_10_6_ArrayInitialisers_1() { runTest("JLS_10_6_ArrayInitialisers_1"); } @Ignore("Known Issue") @Test public void JLS_10_6_ArrayInitialisers_3() { runTest("JLS_10_6_ArrayInitialisers_3"); } @Test public void JLS_10_7_ArrayMembers_1() { runTest("JLS_10_7_ArrayMembers_1"); } @Test public void JLS_10_7_ArrayMembers_2() { runTest("JLS_10_7_ArrayMembers_2"); } @Test public void JLS_10_7_ArrayMembers_3() { runTest("JLS_10_7_ArrayMembers_3"); } @Test public void JLS_14_9_IfStatement_1() { runTest("JLS_14_9_IfStatement_1"); } @Test public void JLS_14_9_IfStatement_2() { runTest("JLS_14_9_IfStatement_2"); } @Test public void JLS_14_9_IfStatement_3() { runTest("JLS_14_9_IfStatement_3"); } @Test public void JLS_14_9_IfStatement_4() { runTest("JLS_14_9_IfStatement_4"); } @Ignore("Known Issue") @Test public void JLS_14_9_IfStatement_5() { runTest("JLS_14_9_IfStatement_5"); } @Test public void JLS_14_9_IfStatement_6() { runTest("JLS_14_9_IfStatement_6"); } @Test public void JLS_14_9_IfStatement_7() { runTest("JLS_14_9_IfStatement_7"); } @Ignore("Known Issue") @Test public void JLS_14_10_Assert_1() { runTest("JLS_14_10_Assert_1"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_1() { runTest("JLS_14_11_SwitchStatement_1"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_2() { runTest("JLS_14_11_SwitchStatement_2"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_3() { runTest("JLS_14_11_SwitchStatement_3"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_4() { runTest("JLS_14_11_SwitchStatement_4"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_5() { runTest("JLS_14_11_SwitchStatement_5"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_6() { runTest("JLS_14_11_SwitchStatement_6"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_8() { runTest("JLS_14_11_SwitchStatement_8"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_9() { runTest("JLS_14_11_SwitchStatement_9"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_10() { runTest("JLS_14_11_SwitchStatement_10"); } @Ignore("Known Issue") @Test public void JLS_14_11_SwitchStatement_11() { runTest("JLS_14_11_SwitchStatement_11"); } @Test public void JLS_14_12_WhileStatement_1() { runTest("JLS_14_12_WhileStatement_1"); } @Test public void JLS_14_12_DoWhileStatement_1() { runTest("JLS_14_12_DoWhileStatement_1"); } @Test public void JLS_14_14_ForStatement_1() { runTest("JLS_14_14_ForStatement_1"); } @Test public void JLS_14_14_ForStatement_2() { runTest("JLS_14_14_ForStatement_2"); } @Test public void JLS_14_14_ForStatement_3() { runTest("JLS_14_14_ForStatement_3"); } @Test public void JLS_14_14_ForStatement_4() { runTest("JLS_14_14_ForStatement_4"); } @Test public void JLS_14_14_ForStatement_5() { runTest("JLS_14_14_ForStatement_5"); } @Test public void JLS_14_14_ForStatement_6() { runTest("JLS_14_14_ForStatement_6"); } @Test public void JLS_14_14_ForStatement_7() { runTest("JLS_14_14_ForStatement_7"); } @Test public void JLS_14_14_ForStatement_8() { runTest("JLS_14_14_ForStatement_8"); } @Test public void JLS_14_14_ForStatement_9() { runTest("JLS_14_14_ForStatement_9"); } @Ignore("Known Issue") @Test public void JLS_14_19_Synchronization_1() { runTest("JLS_14_19_Synchronization_1"); } @Ignore("Known Issue") @Test public void JLS_14_19_Synchronization_2() { runTest("JLS_14_19_Synchronization_2"); } @Ignore("Known Issue") @Test public void JLS_14_19_Synchronization_3() { runTest("JLS_14_19_Synchronization_3"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_1() { runTest("JLS_14_20_TryStatement_1"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_2() { runTest("JLS_14_20_TryStatement_2"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_3() { runTest("JLS_14_20_TryStatement_3"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_4() { runTest("JLS_14_20_TryStatement_4"); } @Test public void JLS_14_20_TryStatement_5() { runTest("JLS_14_20_TryStatement_5"); } @Test public void JLS_14_20_TryStatement_6() { runTest("JLS_14_20_TryStatement_6"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_7() { runTest("JLS_14_20_TryStatement_7"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_8() { runTest("JLS_14_20_TryStatement_8"); } @Ignore("Known Issue") @Test public void JLS_14_20_TryStatement_9() { runTest("JLS_14_20_TryStatement_9"); } @Test public void JLS_14_20_TryStatement_10() { runTest("JLS_14_20_TryStatement_10"); } @Ignore("Known Issue") @Test public void JLS_15_6_ArrayAssignment_1() { runTest("JLS_15_6_ArrayAssignment_1"); } @Test public void JLS_15_6_ArrayAssignment_2() { runTest("JLS_15_6_ArrayAssignment_2"); } @Ignore("Known Issue") @Test public void JLS_15_6_ArrayAssignment_3() { runTest("JLS_15_6_ArrayAssignment_3"); } @Test public void JLS_15_7_EvaluationOrder_1() { runTest("JLS_15_7_EvaluationOrder_1"); } @Test public void JLS_15_7_EvaluationOrder_2() { runTest("JLS_15_7_EvaluationOrder_2"); } @Ignore("Known Issue") @Test public void JLS_15_7_EvaluationOrder_3() { runTest("JLS_15_7_EvaluationOrder_3"); } @Test public void JLS_15_8_1_StringConcatenation_1() { runTest("JLS_15_8_1_StringConcatenation_1"); } @Test public void JLS_15_9_5_AnonymousClasses_1() { runTest("JLS_15_9_5_AnonymousClasses_1","JLS_15_9_5_AnonymousClasses_1$1"); } @Test public void JLS_15_9_5_AnonymousClasses_2() { runTest("JLS_15_9_5_AnonymousClasses_2","JLS_15_9_5_AnonymousClasses_2$1"); } @Test public void JLS_15_9_5_AnonymousClasses_3() { runTest("JLS_15_9_5_AnonymousClasses_3","JLS_15_9_5_AnonymousClasses_3$1","JLS_15_9_5_AnonymousClasses_3$Inner"); } @Test public void JLS_15_9_5_AnonymousClasses_4() { runTest("JLS_15_9_5_AnonymousClasses_4","JLS_15_9_5_AnonymousClasses_4$1","JLS_15_9_5_AnonymousClasses_4$Inner"); } @Test public void JLS_15_9_5_AnonymousClasses_5() { runTest("JLS_15_9_5_AnonymousClasses_5","JLS_15_9_5_AnonymousClasses_5$1"); } @Test public void JLS_15_9_5_AnonymousClasses_6() { runTest("JLS_15_9_5_AnonymousClasses_6","JLS_15_9_5_AnonymousClasses_6$1"); } @Test public void JLS_15_9_5_AnonymousClasses_7() { runTest("JLS_15_9_5_AnonymousClasses_7","JLS_15_9_5_AnonymousClasses_7$1"); } @Test public void JLS_15_9_5_AnonymousClasses_8() { runTest("JLS_15_9_5_AnonymousClasses_8","JLS_15_9_5_AnonymousClasses_8$1","JLS_15_9_5_AnonymousClasses_8$Inner"); } @Test public void JLS_15_9_5_AnonymousClasses_9() { runTest("JLS_15_9_5_AnonymousClasses_9","JLS_15_9_5_AnonymousClasses_9$1","JLS_15_9_5_AnonymousClasses_9$Inner"); } @Test public void JLS_15_9_5_AnonymousClasses_10() { runTest("JLS_15_9_5_AnonymousClasses_10","JLS_15_9_5_AnonymousClasses_10$1"); } @Test public void JLS_15_9_5_AnonymousClasses_11() { runTest("JLS_15_9_5_AnonymousClasses_11","JLS_15_9_5_AnonymousClasses_11$1","JLS_15_9_5_AnonymousClasses_11$1$1"); } @Test public void JLS_15_9_5_AnonymousClasses_12() { runTest("JLS_15_9_5_AnonymousClasses_12","JLS_15_9_5_AnonymousClasses_12$1"); } @Test public void JLS_15_9_5_AnonymousClasses_13() { runTest("JLS_15_9_5_AnonymousClasses_13","JLS_15_9_5_AnonymousClasses_13$1","Inner"); } @Test public void JLS_15_11_FieldAccess_1() { runTest("JLS_15_11_FieldAccess_1"); } @Test public void JLS_15_12_VarArgs_1() { runTest("JLS_15_12_VarArgs_1"); } @Test public void JLS_15_12_VarArgs_2() { runTest("JLS_15_12_VarArgs_2"); } @Test public void JLS_15_12_VarArgs_4() { runTest("JLS_15_12_VarArgs_4"); } @Test public void JLS_15_12_VarArgs_5() { runTest("JLS_15_12_VarArgs_5"); } @Test public void JLS_15_12_VarArgs_6() { runTest("JLS_15_12_VarArgs_6"); } @Test public void JLS_15_12_VarArgs_7() { runTest("JLS_15_12_VarArgs_7"); } @Test public void JLS_15_12_VarArgs_8() { runTest("JLS_15_12_VarArgs_8","JLS_15_12_VarArgs_8$Attribute"); } @Test public void JLS_15_13_ArrayAccess_1() { runTest("JLS_15_13_ArrayAccess_1"); } @Ignore("Known Issue") @Test public void JLS_15_13_ArrayAccess_2() { runTest("JLS_15_13_ArrayAccess_2"); } @Test public void JLS_15_13_ArrayAccess_3() { runTest("JLS_15_13_ArrayAccess_3"); } @Test public void JLS_15_13_ArrayAccess_4() { runTest("JLS_15_13_ArrayAccess_4"); } @Test public void JLS_15_13_ArrayAccess_5() { runTest("JLS_15_13_ArrayAccess_5"); } @Test public void JLS_15_13_ArrayAccess_6() { runTest("JLS_15_13_ArrayAccess_6"); } @Test public void JLS_15_14_PostfixOperators_1() { runTest("JLS_15_14_PostfixOperators_1"); } @Test public void JLS_15_14_PostfixOperators_2() { runTest("JLS_15_14_PostfixOperators_2"); } @Test public void JLS_15_14_PostfixOperators_3() { runTest("JLS_15_14_PostfixOperators_3"); } @Ignore("Known Issue") @Test public void JLS_15_14_PostfixOperators_4() { runTest("JLS_15_14_PostfixOperators_4"); } @Test public void JLS_15_14_PostfixOperators_5() { runTest("JLS_15_14_PostfixOperators_5"); } @Test public void JLS_15_14_PostfixOperators_6() { runTest("JLS_15_14_PostfixOperators_6"); } @Test public void JLS_15_14_PostfixOperators_7() { runTest("JLS_15_14_PostfixOperators_7"); } @Test public void JLS_15_14_PostfixOperators_8() { runTest("JLS_15_14_PostfixOperators_8"); } @Test public void JLS_15_17_BinaryOperators_1() { runTest("JLS_15_17_BinaryOperators_1"); } @Test public void JLS_15_17_BinaryOperators_2() { runTest("JLS_15_17_BinaryOperators_2"); } @Test public void JLS_15_17_BinaryOperators_3() { runTest("JLS_15_17_BinaryOperators_3"); } @Test public void JLS_15_17_1_MultiplicationOperator_1() { runTest("JLS_15_17_1_MultiplicationOperator_1"); } @Test public void JLS_15_17_1_MultiplicationOperator_2() { runTest("JLS_15_17_1_MultiplicationOperator_2"); } @Ignore("Known Issue") @Test public void JLS_15_17_2_DivisionOperator_1() { runTest("JLS_15_17_2_DivisionOperator_1"); } @Test public void JLS_15_17_2_DivisionOperator_2() { runTest("JLS_15_17_2_DivisionOperator_2"); } @Ignore("Known Issue") @Test public void JLS_15_17_3_RemainderOperator_1() { runTest("JLS_15_17_3_RemainderOperator_1"); } @Test public void JLS_15_17_3_RemainderOperator_2() { runTest("JLS_15_17_3_RemainderOperator_2"); } @Test public void JLS_15_18_2_AdditionOperator_1() { runTest("JLS_15_18_2_AdditionOperator_1"); } @Test public void JLS_15_18_2_SubtractionOperator_1() { runTest("JLS_15_18_2_SubtractionOperator_1"); } @Test public void JLS_15_18_2_SubtractionOperator_2() { runTest("JLS_15_18_2_SubtractionOperator_2"); } @Test public void JLS_15_19_ShiftOperators_1() { runTest("JLS_15_19_ShiftOperators_1"); } @Test public void JLS_15_19_ShiftOperators_2() { runTest("JLS_15_19_ShiftOperators_2"); } @Ignore("Known Issue") @Test public void JLS_15_19_ShiftOperators_3() { runTest("JLS_15_19_ShiftOperators_3"); } @Ignore("Known Issue") @Test public void JLS_15_20_2_InstanceofOperator_1() { runTest("JLS_15_20_2_InstanceofOperator_1"); } @Ignore("Known Issue") @Test public void JLS_15_20_2_InstanceofOperator_3() { runTest("JLS_15_20_2_InstanceofOperator_3"); } @Test public void JLS_15_21_EqualityOperator_1() { runTest("JLS_15_21_EqualityOperator_1"); } @Test public void JLS_15_24_ConditionalOr_1() { runTest("JLS_15_24_ConditionalOr_1"); } @Test public void JLS_15_25_ConditionalOperator_1() { runTest("JLS_15_25_ConditionalOperator_1"); } @Test public void JLS_15_25_ConditionalOperator_2() { runTest("JLS_15_25_ConditionalOperator_2"); } @Test public void JLS_15_25_ConditionalOperator_3() { runTest("JLS_15_25_ConditionalOperator_3"); } @Test public void JLS_15_25_ConditionalOperator_4() { runTest("JLS_15_25_ConditionalOperator_4"); } @Test public void JLS_15_25_ConditionalOperator_5() { runTest("JLS_15_25_ConditionalOperator_5"); } @Test public void JLS_15_26_2_CompoundAssignmentOperators_1() { runTest("JLS_15_26_2_CompoundAssignmentOperators_1"); } @Test public void JLS_15_26_2_CompoundAssignmentOperators_2() { runTest("JLS_15_26_2_CompoundAssignmentOperators_2"); } @Ignore("Known Issue") @Test public void JLS_15_26_2_CompoundAssignmentOperators_3() { runTest("JLS_15_26_2_CompoundAssignmentOperators_3"); } @Test public void JLS_15_26_2_CompoundAssignmentOperators_4() { runTest("JLS_15_26_2_CompoundAssignmentOperators_4"); } @Test public void JLS_16_DefiniteUnassignment_1() { runTest("JLS_16_DefiniteUnassignment_1"); } @Test public void JLS_XXX_BypassMethod_1() { runTest("JLS_XXX_BypassMethod_1"); } @Test public void JLS_XXX_BypassMethod_2() { runTest("JLS_XXX_BypassMethod_2","JLS_XXX_BypassMethod_2$Inner","JLS_XXX_BypassMethod_2$Inter"); } @Test public void JLS_XXX_BypassMethod_3() { runTest("JLS_XXX_BypassMethod_3","JLS_XXX_BypassMethod_3$Inner","JLS_XXX_BypassMethod_3$Inter"); } @Test public void JLS_XXX_BypassMethod_4() { runTest("JLS_XXX_BypassMethod_4","JLS_XXX_BypassMethod_4$Child","JLS_XXX_BypassMethod_4$Inter"); } @Test public void JLS_XXX_BypassMethod_5() { runTest("JLS_XXX_BypassMethod_5","JLS_XXX_BypassMethod_5$Child","JLS_XXX_BypassMethod_5$Inter"); } @Test public void JLS_XXX_BypassMethod_6() { runTest("JLS_XXX_BypassMethod_6","JLS_XXX_BypassMethod_6$Inner"); } }