blob: b34c07531860c6157967a4f2bf7a3fd0f7af24b3 [file] [log] [blame]
/*******************************************************************************
* 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());
}
}
}