blob: 1201b32e3ac8a7507f797c1f6a4a944566adebc3 [file] [log] [blame]
package org.eclipse.jdt.debug.tests.eval.generator;
/**********************************************************************
Copyright (c) 2000, 2002 IBM Corp. and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Common Public License v0.5
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/cpl-v05.html
Contributors:
IBM Corporation - Initial implementation
*********************************************************************/
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class TypeHierarchyTestsGenerator extends TestGenerator {
static int IAA= 0;
static int IAB= 1;
static int IAC= 2;
static int AA= 3;
static int AB= 4;
static int AC= 5;
static int IBB= 6;
static int IBC= 7;
static int BB= 8;
static int BC= 9;
static int ICC= 10;
static int CC= 11;
static int N_A= 12;
static int N_B= 13;
static int N_C= 14;
static int M1= 0;
static int M2= 1;
static int S2= 2;
static int M3= 3;
static int M4= 4;
static int S4= 5;
static int M5= 6;
static int M6= 7;
static int S6= 8;
static String[] qualifiers= new String[] {
"iaa", "iab", "iac", "aa", "ab", "ac", "ibb", "ibc", "bb", "bc",
"icc", "cc", "new A()", "new B()", "new C()" };
static String[] methods= new String[] {"m1", "m2", "s2", "m3", "m4", "s4", "m5", "m6", "s6"};
static int[] staticLevel= new int[] {
0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
2, 2, 0, 1, 2};
static int[] instanceLevel= new int[] {
0, 1, 2, 0, 1, 2, 1, 2, 1, 2,
2, 2, 0, 1, 2};
static int[][] values= new int[][] {
{ 1, 2, 9},
{ 11, 22, 99, 33, 44, 88},
{ 111, 222, 999, 333, 444, 888, 555, 666, 777}
};
public static void main(String[] args) throws Exception {
gen_main();
gen_aa_testA();
gen_ab_testA();
gen_ac_testA();
gen_bb_testA();
gen_bb_testB();
gen_bc_testA();
gen_bc_testB();
gen_cc_testA();
gen_cc_testB();
gen_cc_testC();
System.out.println("done");
}
public static void gen_main() throws Exception {
StringBuffer code= new StringBuffer();
createTestQualifier(IAA, M1, code);
createTestQualifier(IAB, M1, code);
createTestQualifier(IAC, M1, code);
createTestQualifier(AA, M1, code);
createTestQualifier(AA, M2, code);
createTestQualifier(AA, S2, code);
createTestQualifier(AB, M1, code);
createTestQualifier(AB, M2, code);
createTestQualifier(AB, S2, code);
createTestQualifier(AC, M1, code);
createTestQualifier(AC, M2, code);
createTestQualifier(AC, S2, code);
createTestQualifier(IBB, M1, code);
createTestQualifier(IBB, M3, code);
createTestQualifier(IBC, M1, code);
createTestQualifier(IBC, M3, code);
createTestQualifier(BB, M1, code);
createTestQualifier(BB, M2, code);
createTestQualifier(BB, S2, code);
createTestQualifier(BB, M3, code);
createTestQualifier(BB, M4, code);
createTestQualifier(BB, S4, code);
createTestQualifier(BC, M1, code);
createTestQualifier(BC, M2, code);
createTestQualifier(BC, S2, code);
createTestQualifier(BC, M3, code);
createTestQualifier(BC, M4, code);
createTestQualifier(BC, S4, code);
createTestQualifier(ICC, M1, code);
createTestQualifier(ICC, M3, code);
createTestQualifier(ICC, M5, code);
createTestQualifier(CC, M1, code);
createTestQualifier(CC, M2, code);
createTestQualifier(CC, S2, code);
createTestQualifier(CC, M3, code);
createTestQualifier(CC, M4, code);
createTestQualifier(CC, S4, code);
createTestQualifier(CC, M5, code);
createTestQualifier(CC, M6, code);
createTestQualifier(CC, S6, code);
createTestQualifier(N_A, M1, code);
createTestQualifier(N_A, M2, code);
createTestQualifier(N_A, S2, code);
createTestQualifier(N_B, M1, code);
createTestQualifier(N_B, M2, code);
createTestQualifier(N_B, S2, code);
createTestQualifier(N_B, M3, code);
createTestQualifier(N_B, M4, code);
createTestQualifier(N_B, S4, code);
createTestQualifier(N_C, M1, code);
createTestQualifier(N_C, M2, code);
createTestQualifier(N_C, S2, code);
createTestQualifier(N_C, M3, code);
createTestQualifier(N_C, M4, code);
createTestQualifier(N_C, S4, code);
createTestQualifier(N_C, M5, code);
createTestQualifier(N_C, M6, code);
createTestQualifier(N_C, S6, code);
createJavaFile(code, 135, 1, 1);
}
public static void gen_aa_testA() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestA(code, AA);
createJavaFile(code, 21, 2, 1);
}
public static void gen_ab_testA() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestA(code, AB);
createJavaFile(code, 21, 2, 2);
}
public static void gen_ac_testA() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestA(code, AC);
createJavaFile(code, 21, 2, 3);
}
public static void gen_bb_testA() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestA(code, BB);
createJavaFile(code, 21, 2, 4);
}
public static void gen_bc_testA() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestA(code, BC);
createJavaFile(code, 21, 2, 5);
}
public static void gen_cc_testA() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestA(code, CC);
createJavaFile(code, 21, 2, 6);
}
public static void gen_bb_testB() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestB(code, BB);
createJavaFile(code, 57, 2, 1);
}
public static void gen_bc_testB() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestB(code, BC);
createJavaFile(code, 57, 2, 2);
}
public static void gen_cc_testB() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestB(code, CC);
createJavaFile(code, 57, 2, 3);
}
public static void gen_cc_testC() throws Exception {
StringBuffer code= new StringBuffer();
createTest_TestC(code, CC);
createJavaFile(code, 108, 2, 1);
}
//-------------
public static void createTest_TestA(StringBuffer code, int qualifier) {
createTest(instanceLevel[qualifier], M1, code);
createTest(instanceLevel[qualifier], M2, code);
createTest(0, S2, code);
}
public static void createTest_TestB(StringBuffer code, int qualifier) {
createTest(instanceLevel[qualifier], M1, code);
createTest(instanceLevel[qualifier], M2, code);
createTest(1, S2, code);
createTest(instanceLevel[qualifier], M3, code);
createTest(instanceLevel[qualifier], M4, code);
createTest(1, S4, code);
}
public static void createTest_TestC(StringBuffer code, int qualifier) {
createTest(instanceLevel[qualifier], M1, code);
createTest(instanceLevel[qualifier], M2, code);
createTest(2, S2, code);
createTest(instanceLevel[qualifier], M3, code);
createTest(instanceLevel[qualifier], M4, code);
createTest(2, S4, code);
createTest(instanceLevel[qualifier], M5, code);
createTest(instanceLevel[qualifier], M6, code);
createTest(2, S6, code);
}
//-------------
public static void createTest(int level, int method, StringBuffer code) {
String strMethod= methods[method];
code.append("\tpublic void testEvalNestedTypeTest_" + strMethod + "() throws Throwable {\n");
tryBlockBegin(code);
genCodeEval("\"" + strMethod + "()\"", true, code);
genCodeReturnTypeCheck(strMethod, "int", true, code);
genCodeReturnValueCheckPrimitiveType(strMethod, "int", "Int", "" + values[level][method], true, code);
tryBlockEnd(code);
code.append("\t}\n\n");
}
public static void createTestQualifier(int qualifier, int method, StringBuffer code) {
String strQualifier= qualifiers[qualifier];
String nameQualifier= strQualifier.replace('(', '_').replace(')', '_').replace(' ', '_');
String strMethod= methods[method];
int[] level= ((method + 1) % 3 == 0) ? staticLevel : instanceLevel;
code.append("\tpublic void testEvalNestedTypeTest_" + nameQualifier + "_" + strMethod + "() throws Throwable {\n");
tryBlockBegin(code);
genCodeEval("\"" + strQualifier + "." + strMethod + "()\"", true, code);
genCodeReturnTypeCheck(strQualifier + "." + strMethod, "int", true, code);
genCodeReturnValueCheckPrimitiveType(strQualifier + "." + strMethod, "int", "Int", "" + values[level[qualifier]][method], true, code);
tryBlockEnd(code);
code.append("\t}\n\n");
}
//------------
public static void createJavaFile(StringBuffer tests, int lineNumber, int numberFrames, int hitCount) throws Exception {
StringBuffer code= new StringBuffer();
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");
code.append("import org.eclipse.jdt.internal.debug.core.model.JDIObjectValue;\n\n");
code.append("public class TypeHierarchy_" + lineNumber + "_" + hitCount + " 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 TypeHierarchy_" + lineNumber + "_" + hitCount + "(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(\"EvalTypeHierarchyTests\", " + 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");
Writer file = new FileWriter(new File("TypeHierarchy_" + lineNumber + "_" + hitCount + ".java").getAbsoluteFile());
file.write(code.toString());
file.close();
}
}