forked from JavaTX/JavaCompilerCore
Object wird standardmäßig importiert. TestFiles angefügt
This commit is contained in:
parent
c6ddc8036d
commit
4a67a4a58e
@ -1092,6 +1092,9 @@ public class SourceFile
|
||||
Modifiers mod = new Modifiers();
|
||||
mod.addModifier(new Public());
|
||||
|
||||
//Für Object:
|
||||
//TODO: toString()-Methode gerät nicht in die BasicAssumptions
|
||||
imports.add(new UsedId("java.lang.Object",-1));
|
||||
|
||||
// Für jede einzelne Klasse
|
||||
while (imports.size()>0) {
|
||||
|
@ -11,4 +11,5 @@ import mycompiler.mytype.GenericTypeVar;
|
||||
*/
|
||||
public interface Generic {
|
||||
public void setGenericParameter(Vector<GenericTypeVar> params);
|
||||
//public int getGenericParameterOffset();
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ public class TypeInsertPoint implements Comparable<TypeInsertPoint>{
|
||||
if(! (obj instanceof TypeInsertPoint))return false;
|
||||
TypeInsertPoint equals = (TypeInsertPoint) obj;
|
||||
if(!(equals.getInsertNode().equals(this.getInsertNode())))return false;
|
||||
if(!(equals.resultSet.equals(this.resultSet)))return false;
|
||||
if(!(equals.resultSet.equals(this.resultSet)))return false; //ResultSet spielt bei Equals keine Rolle
|
||||
if(!(equals.getInsertType().equals(this.getInsertType())))return false;
|
||||
|
||||
return true;
|
||||
|
@ -35,17 +35,15 @@ public class TypeInsertSet {
|
||||
* @param typeInsertPoint
|
||||
* @return
|
||||
*/
|
||||
public Vector<TypePlaceholder> add(TypeInsertPoint typeInsertPoint) {
|
||||
public void add(TypeInsertPoint typeInsertPoint) {
|
||||
if( typeInsertPoint!=null && ! this.points.contains(typeInsertPoint)){ //Nur falls typeInsertPoint noch nicht im Set vorhanden ist:
|
||||
points.add(typeInsertPoint);
|
||||
return typeInsertPoint.getUnresolvedTPH();
|
||||
}
|
||||
return new Vector<TypePlaceholder>();
|
||||
}
|
||||
|
||||
public void add(GenericTypeInsertPoint typeInsertPoint) {
|
||||
//this.add((TypeInsertPoint)typeInsertPoint);
|
||||
this.genericTypeInsertPoints.add(typeInsertPoint);
|
||||
if(!this.genericTypeInsertPoints.contains(typeInsertPoint))this.genericTypeInsertPoints.add(typeInsertPoint);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -107,13 +105,20 @@ public class TypeInsertSet {
|
||||
if(! (obj instanceof TypeInsertSet))return false;
|
||||
TypeInsertSet equals = (TypeInsertSet) obj;
|
||||
if(points.size()!=equals.points.size())return false;
|
||||
|
||||
for(TypeInsertPoint point : points){
|
||||
//Jeder TypeInsertPoint muss auch in equals vorkommen:
|
||||
if(!equals.points.contains(point))return false;
|
||||
if(!equals.points.contains(point))
|
||||
return false;
|
||||
//... aber nicht öfter als 1x :
|
||||
if(equals.points.lastIndexOf(point)!=equals.points.indexOf(point))return false;
|
||||
}
|
||||
|
||||
for(GenericTypeInsertPoint point : this.genericTypeInsertPoints){
|
||||
//Jeder TypeInsertPoint muss auch in equals vorkommen:
|
||||
if(!equals.genericTypeInsertPoints.contains(point))return false;
|
||||
//... aber nicht öfter als 1x :
|
||||
if(equals.genericTypeInsertPoints.lastIndexOf(point)!=equals.genericTypeInsertPoints.indexOf(point))return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
import java.util.Vector;
|
||||
|
||||
class BasicAssumptionsTest{
|
||||
|
||||
varString;
|
||||
@ -5,6 +7,6 @@ var = 2;
|
||||
|
||||
void methode(){
|
||||
var = 1;
|
||||
varString = varString.toString();
|
||||
varString.add(var);
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@ public class TestAssign extends TestCase{
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
variableTypeAssumptions.put("stringVar", "String");
|
||||
variableTypeAssumptions.put("stringVar", "java.lang.String");
|
||||
executeTest();
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,6 @@ public class TestMethodCall {
|
||||
public void executeTest(){
|
||||
LambdaTest tester = new LambdaTest(exampleJavFile);
|
||||
tester.runTestAndCheckResultSet(classname, variableTypeAssumptions);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
10
test/plugindevelopment/TypeInsertSetEqualTest.jav
Normal file
10
test/plugindevelopment/TypeInsertSetEqualTest.jav
Normal file
@ -0,0 +1,10 @@
|
||||
import java.util.Vector;
|
||||
|
||||
class ImportTest{
|
||||
Vector<String> var;
|
||||
var2;
|
||||
methode(){
|
||||
var.add(var2);
|
||||
}
|
||||
|
||||
}
|
48
test/plugindevelopment/TypeInsertSetEqualTest.java
Normal file
48
test/plugindevelopment/TypeInsertSetEqualTest.java
Normal file
@ -0,0 +1,48 @@
|
||||
package plugindevelopment;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Vector;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import mycompiler.MyCompiler;
|
||||
import mycompiler.MyCompilerAPI;
|
||||
import mycompiler.myparser.JavaParser.yyException;
|
||||
import mycompiler.mytypereconstruction.TypeinferenceResultSet;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import typinferenz.TypeInsertSet;
|
||||
|
||||
public class TypeInsertSetEqualTest {
|
||||
|
||||
|
||||
private static final String TEST_FILE = "TypeInsertSetEqualTest.jav";
|
||||
|
||||
@Test
|
||||
public void run(){
|
||||
String inferedSource = "";
|
||||
MyCompilerAPI compiler = MyCompiler.getAPI();
|
||||
try {
|
||||
compiler.parse(new File(TypeInsertTester.rootDirectory + TEST_FILE));
|
||||
Vector<TypeinferenceResultSet> results = compiler.typeReconstruction();
|
||||
//TestCase.assertTrue("Es darf nicht mehr als eine Lösungsmöglichkeit geben und nicht "+results.size(), results.size()==1);
|
||||
Vector<TypeInsertSet> insertSets = new Vector<TypeInsertSet>();
|
||||
for(TypeinferenceResultSet result : results){
|
||||
TypeInsertSet point = result.getTypeInsertionPoints();
|
||||
if(!insertSets.contains(point))insertSets.add(point);
|
||||
//TestCase.assertTrue("Es muss mindestens ein TypeInsertSet vorhanden sein", points.size()>0);
|
||||
|
||||
}
|
||||
if(insertSets.size()!=1){
|
||||
TestCase.fail("Es darf nur ein TypeInsertSet geben und nicht "+insertSets.size());
|
||||
}
|
||||
|
||||
} catch (IOException | yyException e) {
|
||||
e.printStackTrace();
|
||||
TestCase.fail();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
6
test/plugindevelopment/TypeInsertTests/IntTest.jav
Normal file
6
test/plugindevelopment/TypeInsertTests/IntTest.jav
Normal file
@ -0,0 +1,6 @@
|
||||
class IntTest{
|
||||
var;
|
||||
int methode(){
|
||||
return var;
|
||||
}
|
||||
}
|
18
test/plugindevelopment/TypeInsertTests/IntTest.java
Normal file
18
test/plugindevelopment/TypeInsertTests/IntTest.java
Normal file
@ -0,0 +1,18 @@
|
||||
package plugindevelopment.TypeInsertTests;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
public class IntTest {
|
||||
|
||||
private static final String TEST_FILE = "IntTest.jav";
|
||||
|
||||
@Test
|
||||
public void run(){
|
||||
Vector<String> mustContain = new Vector<String>();
|
||||
mustContain.add("int var");
|
||||
MultipleTypesInsertTester.test(this.TEST_FILE, mustContain);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user