/******************************************************************************* * Copyright (c) 2002, 2015 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.debug.tests.eval.generator; import java.io.File; import java.io.FileWriter; import java.io.Writer; public class OtherTestsGenerator extends TestGenerator { public static void main(String[] args) throws Exception { genTestsOperators1(); genTestsOperators2(); genTestsArray(); genTestsNestedTypes1(); genTestsNestedTypes2(); genTestsTypeHierarchy1(); genTestsTypeHierarchy2(); genTestNumberLiteral(); genInstanceOfTests(); System.out.println("done"); } public static void genTestsOperators1() throws Exception { StringBuffer code= new StringBuffer(); genTestTypeBinaryOpTypeBinaryPromotion(T_int, Op_plus, T_int, code); genTestTypeBinaryOpTypeBinaryPromotion(T_String, Op_plus, T_String, code); genTestLocalVarValue(T_int, code); genTestLocalVarValue(T_String, code); createJavaFile(code, "TestsOperators1", "EvalSimpleTests", 37, 1, 1); } public static void genTestsOperators2() throws Exception { StringBuffer code= new StringBuffer(); genTestLocalVarAssignment(T_int, code); genTestLocalVarAssignment(T_String, code); genTestTypeAssignmentOpType(T_int, Op_plusAss, T_int, code); genTestTypeAssignmentOpType(T_String, Op_plusAss, T_String, code); createJavaFile(code, "TestsOperators2", "EvalSimpleTests", 37, 1, 1); } public static void genTestsArray() throws Exception { StringBuffer code= new StringBuffer(); genTestArrayValue(T_int, code); genTestArrayLength(T_int, code); genTestArrayAssignment(T_int, code); genTestArrayInitialization(T_int, code); genTestArrayValue(T_String, code); genTestArrayLength(T_String, code); genTestArrayAssignment(T_String, code); genTestArrayInitialization(T_String, code); createJavaFile(code, "TestsArrays", "EvalArrayTests", 37, 1, 1); } public static void genTestsNestedTypes1() throws Exception { StringBuffer code= new StringBuffer(); NestedTypeTestGenerator.createTest('a', 2, code); NestedTypeTestGenerator.createTest('d', 2, code); NestedTypeTestGenerator.createTest('e', 2, code); NestedTypeTestGenerator.createTest('h', 2, code); NestedTypeTestGenerator.createTest('i', 2, code); NestedTypeTestGenerator.createTestThis('c', 2, code); NestedTypeTestGenerator.createTestThis('f', 2, code); NestedTypeTestGenerator.createTestThis('j', 2, code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T, 'b', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_A, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_A, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_A_AA, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_A_AB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_A_AA, 'j', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_A_AB, 'j', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_B, 'h', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_B, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_B_BB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_B_BB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_BB, 'j', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_B_this, 'c', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_B_this, 'h', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_this, 'a', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_this, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_this, 'e', code); createJavaFile(code, "TestsNestedTypes1", "EvalNestedTypeTests", 252, 4, 1); } public static void genTestsNestedTypes2() throws Exception { StringBuffer code= new StringBuffer(); NestedTypeTestGenerator.createTest('f', 0, code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T, 'b', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_A, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_A, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_A_AA, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_A_AB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_A_AA, 'j', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_A_AB, 'j', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_B, 'h', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_B, 'd', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_T_B_BB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.T_B_BB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_A, 'h', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_AA, 'c', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_AA, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_AA, 'j', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_AB, 'c', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_AB, 'f', code); NestedTypeTestGenerator.createTestQualifier(NestedTypeTestGenerator.I_AB, 'i', code); createJavaFile(code, "TestsNestedTypes2", "EvalNestedTypeTests", 739, 2, 1); } public static void genTestsTypeHierarchy1() throws Exception { StringBuffer code= new StringBuffer(); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.IAA, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.AA, TypeHierarchyTestsGenerator.M2, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.AB, TypeHierarchyTestsGenerator.S2, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.AC, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.IBB, TypeHierarchyTestsGenerator.M3, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.IBC, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.BB, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.BB, TypeHierarchyTestsGenerator.M3, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.BC, TypeHierarchyTestsGenerator.S2, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.BC, TypeHierarchyTestsGenerator.S4, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.ICC, TypeHierarchyTestsGenerator.M3, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.CC, TypeHierarchyTestsGenerator.M2, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.CC, TypeHierarchyTestsGenerator.M4, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.CC, TypeHierarchyTestsGenerator.M6, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_A, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_B, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_B, TypeHierarchyTestsGenerator.M2, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_B, TypeHierarchyTestsGenerator.S4, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_C, TypeHierarchyTestsGenerator.M1, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_C, TypeHierarchyTestsGenerator.M4, code); TypeHierarchyTestsGenerator.createTestQualifier(TypeHierarchyTestsGenerator.N_C, TypeHierarchyTestsGenerator.S6, code); createJavaFile(code, "TestsTypeHierarchy1", "EvalTypeHierarchyTests", 146, 1, 1, false); } public static void genTestsTypeHierarchy2() throws Exception { StringBuffer code= new StringBuffer(); TypeHierarchyTestsGenerator.createTest_TestC(code, TypeHierarchyTestsGenerator.CC); createJavaFile(code, "TestsTypeHierarchy2", "EvalTypeHierarchyTests", 119, 2, 1, false); } /** * Method genTestNumberLiteral. */ private static void genTestNumberLiteral() throws Exception { StringBuffer code= new StringBuffer(); createTestNumberLiteral1("0", T_int, code); createTestNumberLiteral1("00", T_int, code); createTestNumberLiteral1("0x0", T_int, code); createTestNumberLiteral1("-1", T_int, code); createTestNumberLiteral1("1", T_int, code); createTestNumberLiteral1("2147483647", T_int, code); createTestNumberLiteral1("-2147483648", T_int, code); createTestNumberLiteral1("0x7fffffff", T_int, code); createTestNumberLiteral1("0x80000000", T_int, code); createTestNumberLiteral1("0xffffffff", T_int, code); createTestNumberLiteral1("017777777777", T_int, code); createTestNumberLiteral1("020000000000", T_int, code); createTestNumberLiteral1("037777777777", T_int, code); createTestNumberLiteral1("2", T_int, code); createTestNumberLiteral1("0372", T_int, code); createTestNumberLiteral1("0xDadaCafe", T_int, code); createTestNumberLiteral1("1996", T_int, code); createTestNumberLiteral1("0x00FF00FF", T_int, code); createTestNumberLiteral1("0L", T_long, code); createTestNumberLiteral1("00L", T_long, code); createTestNumberLiteral1("0x0L", T_long, code); createTestNumberLiteral1("-1L", T_long, code); createTestNumberLiteral1("1L", T_long, code); createTestNumberLiteral1("9223372036854775807L", T_long, code); createTestNumberLiteral1("-9223372036854775808L", T_long, code); createTestNumberLiteral1("0x7fffffffffffffffL", T_long, code); createTestNumberLiteral1("0x8000000000000000L", T_long, code); createTestNumberLiteral1("0xffffffffffffffffL", T_long, code); createTestNumberLiteral1("0777777777777777777777L", T_long, code); createTestNumberLiteral1("01000000000000000000000L", T_long, code); createTestNumberLiteral1("01777777777777777777777L", T_long, code); createTestNumberLiteral1("0777l", T_long, code); createTestNumberLiteral1("0x100000000L", T_long, code); createTestNumberLiteral1("2147483648L", T_long, code); createTestNumberLiteral1("0xC0B0L", T_long, code); createTestNumberLiteral2("3.40282347e+38f", T_float, code); createTestNumberLiteral2("1.40239846e-45f", T_float, code); createTestNumberLiteral2("1e1f", T_float, code); createTestNumberLiteral2("2.f", T_float, code); createTestNumberLiteral2(".3f", T_float, code); createTestNumberLiteral2("0f", T_float, code); createTestNumberLiteral2("3.14f", T_float, code); createTestNumberLiteral2("6.022137e+23f", T_float, code); createTestNumberLiteral2("1.79769313486231570e+308", T_double, code); createTestNumberLiteral2("4.94065645841246544e-324", T_double, code); createTestNumberLiteral2("1e1", T_double, code); createTestNumberLiteral2("2.", T_double, code); createTestNumberLiteral2(".3", T_double, code); createTestNumberLiteral2("0.0", T_double, code); createTestNumberLiteral2("3.14", T_double, code); createTestNumberLiteral2("1e-9d", T_double, code); createTestNumberLiteral2("1e137", T_double, code); createJavaFile(code, "TestsNumberLiteral", "EvalSimpleTests", 37, 1, 1, false); } /** * Method createTestNumberLiteral. */ private static void createTestNumberLiteral1(String literal, int type, StringBuffer code) { String tName= fTypeName[type]; code.append("\tpublic void test" + literal.replace('-', 'N').replace('.', '_').replace('+', 'P') + "() throws Throwable {\n"); tryBlockBegin(code); genCodeEval("\"" + literal + '"', true, code); genCodeReturnTypeCheck(literal, tName, true, code); genCodeReturnValueCheckPrimitiveType(literal, tName, typeUpperName[type], literal, true, code); tryBlockEnd(code); code.append("\t}\n\n"); } /** * Method createTestNumberLiteral. */ private static void createTestNumberLiteral2(String literal, int type, StringBuffer code) { String tName= fTypeName[type]; code.append("\tpublic void test" + literal.replace('-', 'N').replace('.', '_').replace('+', 'P') + "() throws Throwable {\n"); tryBlockBegin(code); genCodeEval("\"" + literal + '"', true, code); genCodeReturnTypeCheck(literal, tName, true, code); genCodeReturnValueCheckFloatDoubleType(literal, tName, typeUpperName[type], literal, true, code); tryBlockEnd(code); code.append("\t}\n\n"); } public static void genInstanceOfTests() throws Exception { } public static void createJavaFile(StringBuffer tests, String className, String testClass, int lineNumber, int numberFrames, int hitCount) throws Exception { createJavaFile(tests, className, testClass, lineNumber, numberFrames, hitCount, true); } public static void createJavaFile(StringBuffer tests, String className, String testClass, int lineNumber, int numberFrames, int hitCount, boolean importJDIObjectValue) throws Exception { StringBuffer code= new StringBuffer(); code.append("/*******************************************************************************\n"); code.append(" * Copyright (c) 2002, 2003 IBM Corporation and others.\n"); code.append(" * All rights reserved. This program and the accompanying materials \n"); code.append(" * are made available under the terms of the Eclipse Public License v1.0\n"); code.append(" * which accompanies this distribution, and is available at\n"); code.append(" * http://www.eclipse.org/legal/epl-v10.html\n"); code.append(" * \n"); code.append(" * Contributors:\n"); code.append(" * IBM Corporation - initial API and implementation\n"); code.append(" *******************************************************************************/\n"); code.append("package org.eclipse.jdt.debug.tests.eval;\n\n"); code.append("import org.eclipse.jdt.debug.core.IJavaPrimitiveValue;\n\n"); code.append("import org.eclipse.debug.core.model.IValue;\n"); if (importJDIObjectValue) { code.append("import org.eclipse.jdt.internal.debug.core.model.JDIObjectValue;\n\n"); } code.append("public class " + className + " extends Tests {\n"); code.append("\t/**\n"); code.append("\t * Constructor for TypeHierarchy.\n"); code.append("\t * @param name\n"); code.append("\t */\n"); code.append("\tpublic " + className + "(String name) {\n"); code.append("\t\tsuper(name);\n"); code.append("\t}\n\n"); code.append("\tpublic void init() throws Exception {\n"); code.append("\t\tinitializeFrame(\"" + testClass + "\", " + lineNumber + ", " + numberFrames + ", " + hitCount + ");\n"); code.append("\t}\n\n"); code.append("\tprotected void end() throws Exception {\n"); code.append("\t\tdestroyFrame();\n"); code.append("\t}\n\n"); code.append(tests.toString()); code.append("}\n"); try (Writer file = new FileWriter(new File(className + ".java").getAbsoluteFile())) { file.write(code.toString()); } } }