Files
Compoiler/TestDriver.java
2026-06-17 23:38:36 +02:00

87 lines
5.9 KiB
Java

// Compile the test sources first, then run this driver against the generated classes.
// Example:
// ./src/Main src/Testsuite/javaFiles/ArithmeticTest.java
// javac -cp out/javac:. TestDriver.java
// java -ea -cp .:out/javac TestDriver
public class TestDriver {
public static void main(String[] args)
{
EmptyTest empty = new EmptyTest();
empty.hashCode();
FieldsTest fields = new FieldsTest();
ConstructorTest constructor = new ConstructorTest(42);
ArithmeticTest arithmetic = new ArithmeticTest();
MultipleClassesTest multipleClasses = new MultipleClassesTest();
RecursionTest recursion = new RecursionTest(10);
MaliciousTest malicious = new MaliciousTest();
LoopTest loop = new LoopTest();
MethodOverloadTest overload = new MethodOverloadTest();
ShenaniganceTest shenanigance = new ShenaniganceTest();
AllSyntaxTest allSyntax = new AllSyntaxTest(0);
CombinedControlTest combined = new CombinedControlTest(6);
ExpressionTest expression = new ExpressionTest();
IfTest ifTest = new IfTest();
MultiClassTest multiClass = new MultiClassTest();
multiClass.hashCode();
SingletonTest singleton = new SingletonTest();
WhileTest whileTest = new WhileTest();
// constructing a basic class works
System.out.println("test empty non-null. Expected: non-null, Real: non-null");
// initializers (and default initializers to 0/null) work
System.out.println("test fields initializers. Expected: a==0 and b==42, Real: a=" + fields.a + " and b=" + fields.b);
// constructor parameters override initializers
System.out.println("test constructor a. Expected result: 42, Real result: " + constructor.a);
// basic arithmetics
System.out.println("test arithmetic basic(1,2,3). Expected: 2, Real: " + arithmetic.basic(1, 2, 3));
// we have boolean logic as well
System.out.println("test arithmetic logic(false,false,true). Expected: true, Real: " + arithmetic.logic(false, false, true));
// multiple classes within one file work. Referencing another classes fields/methods works.
System.out.println("test multiple classes field. Expected: 42, Real: " + multipleClasses.a.a);
// self-referencing classes work.
System.out.println("test nested child value. Expected: 5, Real: " + recursion.child.child.child.child.child.value);
// self-referencing methods work.
System.out.println("test recursion fibonacci(15). Expected: 610, Real: " + recursion.fibonacci(15));
System.out.println("test factorial(5). Expected: 120, Real: " + loop.factorial(5));
System.out.println("test weirdFor(). Expected: 5, Real: " + loop.weirdFor());
// methods with the same name but different parameters work
System.out.println("test MethodOverload(). Expected: 42, Real: " + overload.MethodOverload());
System.out.println("test MethodOverload(15). Expected: 57, Real: " + overload.MethodOverload(15));
// constructor overloading works, too.
System.out.println("test ctor overload default. Expected: 42, Real: " + (new ConstructorOverloadTest()).a);
System.out.println("test ctor overload with arg. Expected: 12, Real: " + (new ConstructorOverloadTest(12)).a);
// intentionally dodgy expressions work
for(int i = 0; i < 3; i++)
{
System.out.println("test cursedFormatting i=" + i + ". Expected: " + i + ", Real: " + malicious.cursedFormatting(i));
}
// other syntactic sugar
System.out.println("test shenanigance.testAssignment(). Expected: 5, Real: " + shenanigance.testAssignment());
System.out.println("test shenanigance.divEqual(). Expected: " + (234_343_000 / 4) + ", Real: " + shenanigance.divEqual());
// AllSyntaxTest tests
System.out.println("test AllSyntaxTest constructor state. Expected: x=0 and counter=1, Real: x=" + allSyntax.x + " and counter=" + allSyntax.counter);
System.out.println("test AllSyntaxTest.inc(). Expected: 1, Real: " + allSyntax.inc());
System.out.println("test AllSyntaxTest.inc(4). Expected: 5, Real: " + allSyntax.inc(4));
System.out.println("test AllSyntaxTest.sumUpTo(5). Expected: 15, Real: " + allSyntax.sumUpTo(5));
System.out.println("test AllSyntaxTest.predicate('a'). Expected: true, Real: " + allSyntax.predicate('a'));
System.out.println("test AllSyntaxTest.predicate('z'). Expected: false, Real: " + allSyntax.predicate('z'));
// CombinedControlTest tests
System.out.println("test CombinedControlTest.compute(). Expected: -3, Real: " + combined.compute());
// ExpressionTest tests
System.out.println("test ExpressionTest instance created. Expected: non-null, Real: non-null");
System.out.println("test ExpressionTest.shortCircuit(2, 1). Expected: true, Real: " + expression.shortCircuit(2, 1));
System.out.println("test ExpressionTest.shortCircuit(0, 1). Expected: false, Real: " + expression.shortCircuit(0, 1));
// IfTest tests
System.out.println("test IfTest instance created. Expected: non-null, Real: non-null");
System.out.println("test IfTest.ifElseTest(-1). Expected: false, Real: " + ifTest.ifElseTest(-1));
System.out.println("test IfTest.ifElseTest(0). Expected: true, Real: " + ifTest.ifElseTest(0));
System.out.println("test IfTest.ifElseTest(11). Expected: true, Real: " + ifTest.ifElseTest(11));
// MultiClassTest tests
System.out.println("test MultiClassTest instance created. Expected: non-null, Real: non-null");
// SingletonTest tests
System.out.println("test SingletonTest.getInstance(). Expected: true, Real: " + (singleton.getInstance() != null));
// WhileTest tests
System.out.println("test WhileTest.whileLoopTest(5). Expected: 15, Real: " + whileTest.whileLoopTest(5));
}
}