Merge remote-tracking branch 'origin/master'
# Conflicts: # src/main/java/TestClass.java
This commit is contained in:
commit
5d75c23f49
BIN
CharArgument.class
Normal file
BIN
CharArgument.class
Normal file
Binary file not shown.
BIN
ClassFields.class
Normal file
BIN
ClassFields.class
Normal file
Binary file not shown.
BIN
ClassOne.class
Normal file
BIN
ClassOne.class
Normal file
Binary file not shown.
BIN
ClassTwo.class
Normal file
BIN
ClassTwo.class
Normal file
Binary file not shown.
BIN
ConstructorParams.class
Normal file
BIN
ConstructorParams.class
Normal file
Binary file not shown.
BIN
ConstructorThisDot.class
Normal file
BIN
ConstructorThisDot.class
Normal file
Binary file not shown.
BIN
DivMethod.class
Normal file
BIN
DivMethod.class
Normal file
Binary file not shown.
BIN
FieldVar.class
Normal file
BIN
FieldVar.class
Normal file
Binary file not shown.
BIN
FieldWithExpr.class
Normal file
BIN
FieldWithExpr.class
Normal file
Binary file not shown.
BIN
GetterFunction.class
Normal file
BIN
GetterFunction.class
Normal file
Binary file not shown.
BIN
IfElseIfStatement.class
Normal file
BIN
IfElseIfStatement.class
Normal file
Binary file not shown.
BIN
IfElseIfStatementWithOneReturn.class
Normal file
BIN
IfElseIfStatementWithOneReturn.class
Normal file
Binary file not shown.
BIN
classWithMain.class
Normal file
BIN
classWithMain.class
Normal file
Binary file not shown.
BIN
getI.class
Normal file
BIN
getI.class
Normal file
Binary file not shown.
@ -29,6 +29,49 @@ public class Program implements Node {
|
||||
this.classes = classes;
|
||||
}
|
||||
|
||||
public TypeCheckResult typeCheckWithoutMain() throws TypeCheckException {
|
||||
this.typeContext = new HashMap<>();
|
||||
this.methodContext = new HashMap<>();
|
||||
|
||||
for(RefType oneClass : classes){
|
||||
|
||||
// build type context
|
||||
HashMap<String, String> classVars = new HashMap<>();
|
||||
for (FieldDecl fieldDecl: oneClass.fieldDecls){
|
||||
classVars.put(fieldDecl.identifier, fieldDecl.type);
|
||||
}
|
||||
typeContext.put(oneClass.name, classVars);
|
||||
|
||||
// build method context
|
||||
|
||||
HashMap<String, HashMap<String, ParameterList>> identifierAndMethod = new HashMap<>();
|
||||
for (MethodDecl methodDecl : oneClass.methodDecls){
|
||||
if(methodDecl.returnType == null) continue;
|
||||
HashMap<String, ParameterList> returnTypeAndParameter = new HashMap<>();
|
||||
returnTypeAndParameter.put(methodDecl.returnType, methodDecl.parameters);
|
||||
identifierAndMethod.put(methodDecl.name, returnTypeAndParameter);
|
||||
}
|
||||
methodContext.put(oneClass.name, identifierAndMethod);
|
||||
}
|
||||
|
||||
int mainCounter = 0;
|
||||
// check if main exists
|
||||
for(RefType oneClass : classes){
|
||||
if(oneClass.hasMain)
|
||||
mainCounter++;
|
||||
}
|
||||
if(mainCounter != 1) {
|
||||
//throw new TypeCheckException("There is not 1 Main method.");
|
||||
}
|
||||
|
||||
// typecheck each class
|
||||
TypeCheckResult result = new TypeCheckResult();
|
||||
for(RefType oneClass : classes){
|
||||
oneClass.typeCheck(methodContext, typeContext);
|
||||
}
|
||||
result.type = "program";
|
||||
return result;
|
||||
}
|
||||
|
||||
public TypeCheckResult typeCheck() throws TypeCheckException {
|
||||
this.typeContext = new HashMap<>();
|
||||
|
@ -58,7 +58,7 @@ public class ByteCodeTester {
|
||||
|
||||
if(generateAST){
|
||||
try {
|
||||
abstractSyntaxTree.typeCheck();
|
||||
abstractSyntaxTree.typeCheckWithoutMain();
|
||||
} catch (Exception e){
|
||||
System.out.println("Le Exception in le type-check");
|
||||
//fail();
|
||||
@ -86,6 +86,7 @@ public class ByteCodeTester {
|
||||
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,10 +126,10 @@ public class ByteCodeTester {
|
||||
Program abstractSyntaxTree = (Program) generator.visit(tree);
|
||||
|
||||
try {
|
||||
abstractSyntaxTree.typeCheck();
|
||||
abstractSyntaxTree.typeCheckWithoutMain();
|
||||
} catch (Exception e){
|
||||
System.out.println("Le Exception in le type-check");
|
||||
//fail();
|
||||
fail();
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -4,6 +4,7 @@ import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Parameter;
|
||||
|
||||
import static ByteCode.CompareByteCodeSyntax.compareMethod;
|
||||
|
||||
@ -54,12 +55,16 @@ public class CompareByteCodeBehaviour {
|
||||
try {
|
||||
this.sortMethods(class1, class2);
|
||||
// Create instances
|
||||
Constructor<?> constructor1 = class1.getDeclaredConstructor();
|
||||
Constructor<?> constructor2 = class2.getDeclaredConstructor();
|
||||
Constructor<?>[] constructors1 = class1.getDeclaredConstructors();
|
||||
Constructor<?>[] constructors2 = class2.getDeclaredConstructors();
|
||||
Constructor<?> constructor1 = constructors1[0];
|
||||
Constructor<?> constructor2 = constructors2[0];
|
||||
constructor1.setAccessible(true);
|
||||
constructor2.setAccessible(true);
|
||||
Object obj1 = constructor1.newInstance();
|
||||
Object obj2 = constructor2.newInstance();
|
||||
Object[] constructorArgs1 = getDefaultArguments(constructor1.getParameters());
|
||||
Object[] constructorArgs2 = getDefaultArguments(constructor2.getParameters());
|
||||
Object obj1 = constructor1.newInstance(constructorArgs1);
|
||||
Object obj2 = constructor2.newInstance(constructorArgs2);
|
||||
|
||||
// Get methods
|
||||
Method[] methods1 = new Method[this.methodArray1.size()];
|
||||
@ -96,8 +101,9 @@ public class CompareByteCodeBehaviour {
|
||||
}
|
||||
|
||||
} catch (InstantiationException | IllegalAccessException |
|
||||
NoSuchMethodException | InvocationTargetException e) {
|
||||
InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -110,10 +116,35 @@ public class CompareByteCodeBehaviour {
|
||||
inputs[i] = 1; // example value
|
||||
} else if (parameterTypes[i] == String.class) {
|
||||
inputs[i] = "test"; // example value
|
||||
} else if (parameterTypes[i] == char.class) {
|
||||
inputs[i] = 'a';
|
||||
} else if (parameterTypes[i] == boolean.class) {
|
||||
inputs[i] = false;
|
||||
}
|
||||
// Add more cases as needed for different parameter types
|
||||
}
|
||||
return inputs;
|
||||
}
|
||||
|
||||
private Object[] getDefaultArguments(Parameter[] parameters) {
|
||||
Object[] defaultArgs = new Object[parameters.length];
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
Class<?> paramType = parameters[i].getType();
|
||||
if (paramType.isPrimitive()) {
|
||||
if (paramType == boolean.class) {
|
||||
defaultArgs[i] = false;
|
||||
} else if (paramType == int.class) {
|
||||
defaultArgs[i] = 1;
|
||||
} else if (paramType == char.class) {
|
||||
defaultArgs[i] = '\u0000';
|
||||
} else if (paramType == String.class) {
|
||||
defaultArgs[i] = "baguette";
|
||||
}
|
||||
} else {
|
||||
defaultArgs[i] = null; // Use null for non-primitive types
|
||||
}
|
||||
}
|
||||
return defaultArgs;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -42,6 +42,122 @@ public class TestAll {
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCharArgument() {
|
||||
String classPath = "src/test/resources/SimpleTests/CharArgument.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "CharArgument";
|
||||
String javacode = "src/test/resources/SimpleTests/CharArgument.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClassFields() {
|
||||
String classPath = "src/test/resources/SimpleTests/ClassFields.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "ClassFields";
|
||||
String javacode = "src/test/resources/SimpleTests/ClassFields.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstructorParams() {
|
||||
String classPath = "src/test/resources/SimpleTests/ConstructorParams.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "ConstructorParams";
|
||||
String javacode = "src/test/resources/SimpleTests/ConstructorParams.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstructorThisDot() {
|
||||
String classPath = "src/test/resources/SimpleTests/ConstructorThisDot.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "ConstructorThisDot";
|
||||
String javacode = "src/test/resources/SimpleTests/ConstructorThisDot.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDivMethod() {
|
||||
String classPath = "src/test/resources/SimpleTests/DivMethod.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "DivMethod";
|
||||
String javacode = "src/test/resources/SimpleTests/DivMethod.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
// We dont do null assignments
|
||||
/*
|
||||
@Test
|
||||
public void testExplicitNullAssign() {
|
||||
String classPath = "src/test/resources/SimpleTests/ExplicitNullAssign.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "ExplicitNullAssign";
|
||||
String javacode = "src/test/resources/SimpleTests/ExplicitNullAssign.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
*/
|
||||
|
||||
@Test
|
||||
public void testFieldVar() {
|
||||
String classPath = "src/test/resources/SimpleTests/FieldVar.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "FieldVar";
|
||||
String javacode = "src/test/resources/SimpleTests/FieldVar.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFieldWithExpr() {
|
||||
String classPath = "src/test/resources/SimpleTests/FieldWithExpr.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "FieldWithExpr";
|
||||
String javacode = "src/test/resources/SimpleTests/FieldWithExpr.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetterFunction() {
|
||||
String classPath = "src/test/resources/SimpleTests/GetterFunction.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "GetterFunction";
|
||||
String javacode = "src/test/resources/SimpleTests/GetterFunction.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIfElseIfStatement() {
|
||||
String classPath = "src/test/resources/SimpleTests/IfElseIfStatement.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "IfElseIfStatement";
|
||||
String javacode = "src/test/resources/SimpleTests/IfElseIfStatement.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIfElseIfStatementWithOneReturn() {
|
||||
String classPath = "src/test/resources/SimpleTests/IfElseIfStatementWithOneReturn.class";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String className = "IfElseIfStatementWithOneReturn";
|
||||
String javacode = "src/test/resources/SimpleTests/IfElseIfStatementWithOneReturn.java";
|
||||
//testByteCodeFromAst(classPath, ast ,className);
|
||||
byteCodeTester.testClassFileFromScratch(classPath, javacode, className);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testTwoClasses() {
|
||||
String jarPath = "src/test/resources/basicClasses/TwoClasses.jar";
|
||||
@ -51,6 +167,7 @@ public class TestAll {
|
||||
byteCodeTester.compareJarFilesFromScratch(javacode, jarPath, classNames);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testFourClasses() {
|
||||
String jarPath = "src/test/resources/basicClasses/FourClasses.jar";
|
||||
@ -60,6 +177,15 @@ public class TestAll {
|
||||
byteCodeTester.compareJarFilesFromScratch(javacode, jarPath, classNames);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDijkstra() {
|
||||
String jarPath = "src/test/resources/Integration/Dijkstra.jar";
|
||||
//Program ast = ClassWithMainASTTyped.getProgram();
|
||||
String[] classNames = {"FourClasses", "Test", "Test2", "Test3"};
|
||||
String javacode = "src/test/resources/Integration/Dijkstra.java";
|
||||
byteCodeTester.compareJarFilesFromScratch(javacode, jarPath, classNames);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -67,5 +67,10 @@ public class TestAll {
|
||||
testLexer.testTokens("SimpleTests/FieldVar.java", "SimpleTests/FieldVar.tokens");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIfElseIfStatementWithOneReturn() throws Exception {
|
||||
testLexer.testTokens("SimpleTests/IfElseIfStatementWithOneReturn.java", "SimpleTests/IfElseIfStatementWithOneReturn.tokens");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -8,10 +8,22 @@ import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TypeChecker {
|
||||
// Method to test if the TypeCheck returns the expected Result
|
||||
static public void assertTypeCheckResultNoMain(boolean testForMain, Program programmToBeTested, Program correctAST, boolean expectedResult) {
|
||||
assertTypeCheckResult(false, programmToBeTested, correctAST, expectedResult);
|
||||
}
|
||||
|
||||
static public void assertTypeCheckResult(Program programmToBeTested, Program correctAST, boolean expectedResult) {
|
||||
assertTypeCheckResult(true, programmToBeTested, correctAST, expectedResult);
|
||||
}
|
||||
static public void assertTypeCheckResult(boolean testForMain, Program programmToBeTested, Program correctAST, boolean expectedResult) {
|
||||
boolean actualResult;
|
||||
try {
|
||||
TypeCheckResult typeCheckResult = programmToBeTested.typeCheck();
|
||||
if(testForMain){
|
||||
programmToBeTested.typeCheck();
|
||||
} else {
|
||||
programmToBeTested.typeCheckWithoutMain();
|
||||
}
|
||||
|
||||
actualResult = true;
|
||||
} catch (Exception e) {
|
||||
actualResult = false;
|
||||
|
@ -1,5 +1,3 @@
|
||||
package Integration;
|
||||
|
||||
class Dijkstra {
|
||||
|
||||
void main() {
|
||||
@ -29,33 +27,33 @@ class Dijkstra {
|
||||
g.addVertex(v11);
|
||||
g.addVertex(v12);
|
||||
|
||||
g.addEdge(v1, v2); // A-B
|
||||
g.addEdge(v1, v5); // A-E
|
||||
g.addEdge(v1, v10); // A-J
|
||||
g.addEdge(v1, v2);
|
||||
g.addEdge(v1, v5);
|
||||
g.addEdge(v1, v10);
|
||||
|
||||
g.addEdge(v2, v3); // B
|
||||
g.addEdge(v2, v3);
|
||||
g.addEdge(v2, v7);
|
||||
|
||||
g.addEdge(v3, v4); // C
|
||||
g.addEdge(v3, v4);
|
||||
g.addEdge(v3, v5);
|
||||
|
||||
g.addEdge(v4, v8); // D
|
||||
g.addEdge(v4, v8);
|
||||
|
||||
g.addEdge(v5, v6); // E
|
||||
g.addEdge(v5, v6);
|
||||
g.addEdge(v5, v9);
|
||||
|
||||
g.addEdge(v6, v7); // F
|
||||
g.addEdge(v6, v7);
|
||||
|
||||
g.addEdge(v7, v8); // G
|
||||
g.addEdge(v7, v8);
|
||||
|
||||
g.addEdge(v8, v12); // H
|
||||
g.addEdge(v8, v12);
|
||||
g.addEdge(v8, v10);
|
||||
|
||||
g.addEdge(v9, v10); // I
|
||||
g.addEdge(v9, v10);
|
||||
|
||||
g.addEdge(v10, v11); // J
|
||||
g.addEdge(v10, v11);
|
||||
|
||||
g.addEdge(v11, v12); // K
|
||||
g.addEdge(v11, v12);
|
||||
|
||||
g.getShortestPath(v1, v8);
|
||||
g.getShortestPath(v1, v12);
|
||||
@ -69,7 +67,7 @@ class Dijkstra {
|
||||
|
||||
class Graph {
|
||||
|
||||
private VertexSet vertexList;
|
||||
public VertexSet vertexList;
|
||||
|
||||
public Graph(VertexSet vertexList) {
|
||||
this.vertexList = vertexList;
|
||||
@ -98,23 +96,25 @@ class Graph {
|
||||
calcList.get(source.id).setPrevious(null);
|
||||
Vertex current = calcList.get(source.id);
|
||||
|
||||
// Fill the list with the distances
|
||||
while (current != null) {
|
||||
current.setVisited(true);
|
||||
// Search for every adjacent vertex
|
||||
VertexSet currentAdjanceyList = current.getAdjanceyList();
|
||||
if (currentAdjanceyList != null) {
|
||||
for (int i = 0; i < currentAdjanceyList.size(); i = i + 1) {
|
||||
int i = 0;
|
||||
int i = 0;
|
||||
while (i < currentAdjanceyList.size()) {
|
||||
Vertex adjancey = currentAdjanceyList.getFromIndex(i);
|
||||
adjancey = calcList.get(adjancey.id);
|
||||
if ((adjancey != null) && !adjancey.isVisited()) {
|
||||
int distance = current.getDistance() + 1;
|
||||
if (distance < adjancey.getDistance()) {
|
||||
adjancey.setDistance(distance);
|
||||
adjancey.setPrevious(current);
|
||||
if (adjancey != null) {
|
||||
if (!adjancey.isVisited()) {
|
||||
int distance = current.getDistance() + 1;
|
||||
if (distance < adjancey.getDistance()) {
|
||||
adjancey.setDistance(distance);
|
||||
adjancey.setPrevious(current);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i = i + 1;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
@ -132,8 +132,8 @@ class Graph {
|
||||
previous = previous.getPrevious();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class Vertex {
|
||||
|
||||
public int id;
|
||||
@ -177,7 +177,7 @@ class Vertex {
|
||||
public Vertex(Vertex vertex) {
|
||||
this.id = vertex.id;
|
||||
this.adjanceyList = vertex.adjanceyList;
|
||||
this.distance = 10000; // No infinity so...
|
||||
this.distance = 10000;
|
||||
this.previous = null;
|
||||
this.visited = false;
|
||||
}
|
||||
@ -202,8 +202,8 @@ class Vertex {
|
||||
|
||||
class VertexSet {
|
||||
|
||||
private Vertex vertex;
|
||||
private VertexSet next;
|
||||
public Vertex vertex;
|
||||
public VertexSet next;
|
||||
|
||||
public VertexSet(Vertex vertex) {
|
||||
this.vertex = vertex;
|
||||
@ -318,7 +318,7 @@ class VertexSet {
|
||||
}
|
||||
|
||||
public Vertex get(int index) {
|
||||
if ((vertex == null)) {
|
||||
if (vertex == null) {
|
||||
return null;
|
||||
} else if (vertex.id == index) {
|
||||
return this.vertex;
|
||||
@ -363,4 +363,4 @@ class IntStack {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
BIN
src/test/resources/SimpleTests/CharArgument.class
Normal file
BIN
src/test/resources/SimpleTests/CharArgument.class
Normal file
Binary file not shown.
BIN
src/test/resources/SimpleTests/ClassFields.class
Normal file
BIN
src/test/resources/SimpleTests/ClassFields.class
Normal file
Binary file not shown.
@ -1,9 +1,7 @@
|
||||
package SimpleTests;
|
||||
|
||||
class ClassFields {
|
||||
|
||||
private int privateAccess;
|
||||
public int privateAccess;
|
||||
public int publicAccess;
|
||||
protected int protectedAccess;
|
||||
public int protectedAccess;
|
||||
|
||||
}
|
||||
|
BIN
src/test/resources/SimpleTests/ConstructorParams.class
Normal file
BIN
src/test/resources/SimpleTests/ConstructorParams.class
Normal file
Binary file not shown.
@ -1,5 +1,3 @@
|
||||
package SimpleTests;
|
||||
|
||||
class ConstructorParams {
|
||||
|
||||
public ConstructorParams(int i) {
|
||||
|
BIN
src/test/resources/SimpleTests/ConstructorThisDot.class
Normal file
BIN
src/test/resources/SimpleTests/ConstructorThisDot.class
Normal file
Binary file not shown.
@ -1,5 +1,3 @@
|
||||
package SimpleTests;
|
||||
|
||||
class ConstructorThisDot{
|
||||
|
||||
public int i;
|
||||
|
@ -1,17 +0,0 @@
|
||||
package SimpleTests;
|
||||
|
||||
class DecTest {
|
||||
|
||||
void foo() {
|
||||
for (int i = 10; i > 0; i--) {
|
||||
System.out.println(i);
|
||||
}
|
||||
}
|
||||
|
||||
void bar() {
|
||||
for (int i = 10; i > 0; --i) {
|
||||
System.out.println(i);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
BIN
src/test/resources/SimpleTests/DivMethod.class
Normal file
BIN
src/test/resources/SimpleTests/DivMethod.class
Normal file
Binary file not shown.
@ -1,5 +1,3 @@
|
||||
package SimpleTests;
|
||||
|
||||
class DivMethod {
|
||||
|
||||
int foo(int i){
|
||||
|
@ -1,3 +0,0 @@
|
||||
package SimpleTests;
|
||||
|
||||
class EmptyClass{}
|
BIN
src/test/resources/SimpleTests/ExplicitNullAssign.class
Normal file
BIN
src/test/resources/SimpleTests/ExplicitNullAssign.class
Normal file
Binary file not shown.
@ -1,5 +1,3 @@
|
||||
package SimpleTests;
|
||||
|
||||
class ExplicitNullAssign {
|
||||
|
||||
ExplicitNullAssign e;
|
||||
|
@ -1,18 +0,0 @@
|
||||
package SimpleTests;
|
||||
|
||||
class ExtendedNotTest {
|
||||
|
||||
boolean notequal(int a, int b) {
|
||||
return !(a == b);
|
||||
}
|
||||
|
||||
boolean multiple(boolean a, boolean b) {
|
||||
return !(!a || b);
|
||||
}
|
||||
|
||||
boolean notWithAssigns(boolean a) {
|
||||
boolean b = !a;
|
||||
return !b;
|
||||
}
|
||||
|
||||
}
|
BIN
src/test/resources/SimpleTests/FieldVar.class
Normal file
BIN
src/test/resources/SimpleTests/FieldVar.class
Normal file
Binary file not shown.
BIN
src/test/resources/SimpleTests/FieldWithExpr.class
Normal file
BIN
src/test/resources/SimpleTests/FieldWithExpr.class
Normal file
Binary file not shown.
@ -1,5 +1,3 @@
|
||||
package SimpleTests;
|
||||
|
||||
class FieldWithExpr {
|
||||
|
||||
public int x = 5;
|
||||
|
@ -1,11 +0,0 @@
|
||||
package SimpleTests;
|
||||
|
||||
class ForTest {
|
||||
|
||||
void foo() {
|
||||
for (int i = 0; i < 10; i = i + 1) {
|
||||
System.out.println(i);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
BIN
src/test/resources/SimpleTests/GetterFunction.class
Normal file
BIN
src/test/resources/SimpleTests/GetterFunction.class
Normal file
Binary file not shown.
@ -1,11 +1,9 @@
|
||||
package SimpleTests;
|
||||
|
||||
class GetterFunction {
|
||||
|
||||
private int i;
|
||||
public int i;
|
||||
|
||||
public GetterFunction(int i) {
|
||||
this.i = i;
|
||||
public GetterFunction(int number) {
|
||||
this.i = number;
|
||||
}
|
||||
|
||||
public int getI() {
|
||||
|
BIN
src/test/resources/SimpleTests/IfElseIfStatement.class
Normal file
BIN
src/test/resources/SimpleTests/IfElseIfStatement.class
Normal file
Binary file not shown.
@ -1,8 +1,6 @@
|
||||
package SimpleTests;
|
||||
|
||||
class IfElseIfStatement {
|
||||
|
||||
int foo(int i) {
|
||||
public int foo(int i) {
|
||||
if (i == 1) {
|
||||
return 10;
|
||||
} else if (i == 2) {
|
||||
|
Binary file not shown.
@ -1,5 +1,3 @@
|
||||
package SimpleTests;
|
||||
|
||||
class IfElseIfStatementWithOneReturn {
|
||||
|
||||
int foo(int i) {
|
||||
|
@ -0,0 +1,14 @@
|
||||
Class: "class"
|
||||
Identifier: "IfElseIfStatementWithOneReturn"
|
||||
OpenCurlyBracket: "{"
|
||||
Int: "int"
|
||||
Identifier: "foo"
|
||||
OpenRoundBracket: "("
|
||||
Int: "int"
|
||||
ClosedRoundBracket: ")"
|
||||
OpenCurlyBracket: "{"
|
||||
Int: "int"
|
||||
Identifier: "result"
|
||||
Assign: "="
|
||||
IntValue: "0"
|
||||
Semicolon: ";"
|
BIN
src/test/resources/basicClasses/ClassOne.class
Normal file
BIN
src/test/resources/basicClasses/ClassOne.class
Normal file
Binary file not shown.
BIN
src/test/resources/basicClasses/ClassTwo.class
Normal file
BIN
src/test/resources/basicClasses/ClassTwo.class
Normal file
Binary file not shown.
BIN
src/test/resources/basicClasses/FourClasses.class
Normal file
BIN
src/test/resources/basicClasses/FourClasses.class
Normal file
Binary file not shown.
BIN
src/test/resources/basicClasses/FourClasses.jar
Normal file
BIN
src/test/resources/basicClasses/FourClasses.jar
Normal file
Binary file not shown.
@ -1,13 +1,14 @@
|
||||
class FourClasses {
|
||||
|
||||
public int main(int i) {
|
||||
public int method(int i) {
|
||||
Test t = new Test(i);
|
||||
Test2 t2 = new Test2(t.y);
|
||||
return t2.test.test3.getX();
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
|
||||
FourClasses fourClasses = new FourClasses();
|
||||
fourClasses.method(1);
|
||||
}
|
||||
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/test/resources/basicClasses/TwoClasses.jar
Normal file
BIN
src/test/resources/basicClasses/TwoClasses.jar
Normal file
Binary file not shown.
BIN
src/test/resources/basicClasses/classWithMain.class
Normal file
BIN
src/test/resources/basicClasses/classWithMain.class
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user