diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-21 08:13:45 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-21 08:13:45 +0000 |
| commit | fe113241971cfe87b163a9eb4dc51e9d5e32410e (patch) | |
| tree | f9e435c44020ffbbb9231df79719a4d407ea8000 /src/test/java | |
| parent | 22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff) | |
Move standard type definitions into a Types class
Diffstat (limited to 'src/test/java')
10 files changed, 136 insertions, 152 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index cccd305..c9c7414 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -3,9 +3,8 @@ package org.zwobble.couscous.tests; import org.junit.Test; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.types.ScalarType; -import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.PrimitiveValue; -import org.zwobble.couscous.values.StringValue; import java.util.Collections; import java.util.List; @@ -35,7 +34,7 @@ public abstract class BackendEvalTests { assertEquals(value(true), evalExpression(literal(true))); assertEquals(value(false), evalExpression(literal(false))); assertEquals(value(42), evalExpression(literal(42))); - assertEquals(value(StringValue.REF), evalExpression(literal(StringValue.REF))); + assertEquals(value(Types.STRING), evalExpression(literal(Types.STRING))); } @Test @@ -127,7 +126,7 @@ public abstract class BackendEvalTests { literal("hello"), "length", list(), - IntegerValue.REF)); + Types.INT)); assertEquals(value(5), result); } @@ -137,7 +136,7 @@ public abstract class BackendEvalTests { literal("hello"), "substring", list(literal(1), literal(4)), - StringValue.REF)); + Types.STRING)); assertEquals(value("ell"), result); } @@ -147,7 +146,7 @@ public abstract class BackendEvalTests { "java.lang.Integer", "parseInt", list(literal("42")), - IntegerValue.REF)); + Types.INT)); assertEquals(value(42), result); } @@ -155,15 +154,15 @@ public abstract class BackendEvalTests { public void canCallStaticMethodFromUserDefinedStaticMethod() { ClassNode classNode = ClassNode.builder("com.example.Example") .staticMethod("main", method -> method - .returns(IntegerValue.REF) + .returns(Types.INT) .statement(returns(staticMethodCall( "java.lang.Integer", "parseInt", list(literal("42")), - IntegerValue.REF)))) + Types.INT)))) .build(); PrimitiveValue result = evalExpression(list(classNode), - staticMethodCall("com.example.Example", "main", list(), IntegerValue.REF)); + staticMethodCall("com.example.Example", "main", list(), Types.INT)); assertEquals(value(42), result); } @@ -171,21 +170,21 @@ public abstract class BackendEvalTests { public void canCallInstanceMethodWithNoArgumentsOnUserDefinedClass() { ClassNode classNode = ClassNode.builder("com.example.Example") .method("main", method -> method - .returns(IntegerValue.REF) + .returns(Types.INT) .statement(returns(literal(42)))) .build(); PrimitiveValue result = evalExpression(list(classNode), - methodCall(constructorCall(classNode.getName(), list()), "main", list(), IntegerValue.REF)); + methodCall(constructorCall(classNode.getName(), list()), "main", list(), Types.INT)); assertEquals(value(42), result); } @Test public void canCallInstanceMethodWithArgumentsOnUserDefinedClass() { - FormalArgumentNode argument = formalArg(var(ANY_ID, "x", IntegerValue.REF)); + FormalArgumentNode argument = formalArg(var(ANY_ID, "x", Types.INT)); ClassNode classNode = ClassNode.builder("com.example.Example") .method("main", method -> method .argument(argument) - .returns(IntegerValue.REF) + .returns(Types.INT) .statement(returns(reference(argument)))) .build(); @@ -195,25 +194,25 @@ public abstract class BackendEvalTests { constructorCall(classNode.getName(), list()), "main", list(literal(42)), - IntegerValue.REF)); + Types.INT)); assertEquals(value(42), result); } @Test public void constructorIsExecutedOnConstruction() { - FormalArgumentNode argument = formalArg(var(ANY_ID, "x", IntegerValue.REF)); + FormalArgumentNode argument = formalArg(var(ANY_ID, "x", Types.INT)); ClassNode classNode = ClassNode.builder("com.example.Example") - .field("value", IntegerValue.REF) + .field("value", Types.INT) .constructor(constructor -> constructor .argument(argument) .statement(assignStatement( - fieldAccess(constructor.thisReference(), "value", IntegerValue.REF), + fieldAccess(constructor.thisReference(), "value", Types.INT), reference(argument)))) .method("main", method -> method - .returns(IntegerValue.REF) + .returns(Types.INT) .statement(returns( - fieldAccess(method.thisReference(), "value", IntegerValue.REF)))) + fieldAccess(method.thisReference(), "value", Types.INT)))) .build(); PrimitiveValue result = evalExpression( @@ -222,7 +221,7 @@ public abstract class BackendEvalTests { constructorCall(classNode.getName(), list(literal(42))), "main", list(), - IntegerValue.REF)); + Types.INT)); assertEquals(value(42), result); } @@ -231,16 +230,16 @@ public abstract class BackendEvalTests { public void staticConstructorIsExecutedOnReference() { ScalarType type = ScalarType.of("com.example.Example"); ClassNode classNode = ClassNode.builder(type) - .staticField("value", IntegerValue.REF) + .staticField("value", Types.INT) .staticConstructor(list( assignStatement( - fieldAccess(type, "value", IntegerValue.REF), + fieldAccess(type, "value", Types.INT), literal(42)))) .build(); PrimitiveValue result = evalExpression( list(classNode), - fieldAccess(type, "value", IntegerValue.REF)); + fieldAccess(type, "value", Types.INT)); assertEquals(value(42), result); } diff --git a/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java b/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java index c8b2b70..635dae8 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java @@ -2,10 +2,9 @@ package org.zwobble.couscous.tests; import org.junit.Test; import org.zwobble.couscous.ast.*; -import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; -import org.zwobble.couscous.values.StringValue; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; @@ -38,7 +37,7 @@ public abstract class BackendMethodTests { @Test public void canReturnLiteralValue() { MethodNode.Builder method = staticMethod("hello") - .returns(StringValue.REF) + .returns(Types.STRING) .statement(returns(literal("hello, world!"))); final java.lang.Object result = runMethod(method); assertEquals(value("hello, world!"), result); @@ -46,10 +45,10 @@ public abstract class BackendMethodTests { @Test public void canPassValueToMethod() { - FormalArgumentNode arg = formalArg(var(ANY_ID, "x", StringValue.REF)); + FormalArgumentNode arg = formalArg(var(ANY_ID, "x", Types.STRING)); MethodNode.Builder method = staticMethod("hello") .argument(arg) - .returns(StringValue.REF) + .returns(Types.STRING) .statement(returns(reference(arg))); final java.lang.Object result = runMethod(method, value("hello, world!")); assertEquals(value("hello, world!"), result); @@ -57,10 +56,10 @@ public abstract class BackendMethodTests { @Test public void canReassignValueToArgument() { - FormalArgumentNode arg = formalArg(var(ANY_ID, "x", StringValue.REF)); + FormalArgumentNode arg = formalArg(var(ANY_ID, "x", Types.STRING)); MethodNode.Builder method = staticMethod("hello") .argument(arg) - .returns(StringValue.REF) + .returns(Types.STRING) .statement(expressionStatement(assign( reference(arg), literal("[updated value]")))) @@ -71,9 +70,9 @@ public abstract class BackendMethodTests { @Test public void canDeclareVariable() { - LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration(ANY_ID, "x", StringValue.REF, LiteralNode.literal("[initial value]")); + LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration(ANY_ID, "x", Types.STRING, LiteralNode.literal("[initial value]")); MethodNode.Builder method = staticMethod("hello") - .returns(StringValue.REF) + .returns(Types.STRING) .statement(localVariableDeclaration) .statement(returns(reference(localVariableDeclaration))); final java.lang.Object result = runMethod(method); @@ -82,9 +81,9 @@ public abstract class BackendMethodTests { @Test public void canDeclareVariableAndThenAssignValues() { - LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration(ANY_ID, "x", StringValue.REF, LiteralNode.literal("[initial value]")); + LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration(ANY_ID, "x", Types.STRING, LiteralNode.literal("[initial value]")); MethodNode.Builder method = staticMethod("hello") - .returns(StringValue.REF) + .returns(Types.STRING) .statement(localVariableDeclaration) .statement(expressionStatement(assign( reference(localVariableDeclaration), @@ -97,7 +96,7 @@ public abstract class BackendMethodTests { @Test public void whenConditionIsTrueIfStatementExecutesTrueBranch() { MethodNode.Builder method = staticMethod("hello") - .returns(StringValue.REF) + .returns(Types.STRING) .statement(ifStatement( literal(true), list(returns(literal("[true]"))), @@ -108,7 +107,7 @@ public abstract class BackendMethodTests { @Test public void whenConditionIsFalseIfStatementExecutesTrueBranch() { MethodNode.Builder method = staticMethod("hello") - .returns(StringValue.REF) + .returns(Types.STRING) .statement(ifStatement( literal(false), list(returns(literal("[true]"))), @@ -118,10 +117,10 @@ public abstract class BackendMethodTests { @Test public void whileLoopIsExecutedWhileConditionIsTrue() { - LocalVariableDeclarationNode x = localVariableDeclaration(TestIds.id("x"), "x", IntegerValue.REF, literal(0)); - LocalVariableDeclarationNode y = localVariableDeclaration(TestIds.id("y"), "y", IntegerValue.REF, literal(2)); + LocalVariableDeclarationNode x = localVariableDeclaration(TestIds.id("x"), "x", Types.INT, literal(0)); + LocalVariableDeclarationNode y = localVariableDeclaration(TestIds.id("y"), "y", Types.INT, literal(2)); MethodNode.Builder method = staticMethod("hello") - .returns(IntegerValue.REF) + .returns(Types.INT) .statement(x) .statement(y) .statement(whileLoop( @@ -133,10 +132,10 @@ public abstract class BackendMethodTests { @Test public void returnWillExitWhileLoopEarly() { - LocalVariableDeclarationNode x = localVariableDeclaration(TestIds.id("x"), "x", IntegerValue.REF, literal(0)); - LocalVariableDeclarationNode y = localVariableDeclaration(TestIds.id("y"), "y", IntegerValue.REF, literal(2)); + LocalVariableDeclarationNode x = localVariableDeclaration(TestIds.id("x"), "x", Types.INT, literal(0)); + LocalVariableDeclarationNode y = localVariableDeclaration(TestIds.id("y"), "y", Types.INT, literal(2)); MethodNode.Builder method = staticMethod("hello") - .returns(IntegerValue.REF) + .returns(Types.INT) .statement(x) .statement(y) .statement(whileLoop( diff --git a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java index ae8376b..7df7582 100644 --- a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java @@ -2,10 +2,8 @@ package org.zwobble.couscous.tests; import org.junit.Test; import org.zwobble.couscous.types.ScalarType; -import org.zwobble.couscous.values.BooleanValue; -import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.PrimitiveValue; -import org.zwobble.couscous.values.StringValue; import java.io.File; import java.io.IOException; @@ -23,7 +21,7 @@ import static org.zwobble.couscous.values.PrimitiveValues.value; public abstract class CompilerTests { @Test public void canEvaluateLiterals() { - assertEquals(value("hello"), evalExpression(StringValue.REF, "\"hello\"")); + assertEquals(value("hello"), evalExpression(Types.STRING, "\"hello\"")); assertEquals(value(42), evalIntExpression("42")); } @@ -41,13 +39,13 @@ public abstract class CompilerTests { @Test public void equalityOnReferenceTypesChecksForIdentity() { assertEquals(value(false), evalBooleanExpression("new Object() == new Object()")); - assertEquals(value(true), exec(BooleanValue.REF, "Object x = new Object(); return x == x;")); + assertEquals(value(true), exec(Types.BOOLEAN, "Object x = new Object(); return x == x;")); } @Test public void integersCanBeAssignedToObjectVariable() { - assertEquals(value(false), exec(BooleanValue.REF, "Object x = 1; return x.equals(new Object());")); - assertEquals(value(true), exec(BooleanValue.REF, "Object x = 1; return x.equals(1);")); + assertEquals(value(false), exec(Types.BOOLEAN, "Object x = 1; return x.equals(new Object());")); + assertEquals(value(true), exec(Types.BOOLEAN, "Object x = 1; return x.equals(1);")); } @Test @@ -59,7 +57,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.RecursiveFactorial"), "factorial", list(value(6)), - IntegerValue.REF)); + Types.INT)); } @Test @@ -71,7 +69,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.WhileFactorial"), "factorial", list(value(6)), - IntegerValue.REF)); + Types.INT)); } @Test @@ -83,7 +81,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.ForFactorial"), "factorial", list(value(6)), - IntegerValue.REF)); + Types.INT)); } @Test @@ -95,7 +93,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.StaticNestedClass"), "value", list(), - IntegerValue.REF)); + Types.INT)); } @Test @@ -107,7 +105,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.InnerClass"), "run", list(), - IntegerValue.REF)); + Types.INT)); } @Test @@ -119,7 +117,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.InnerClass"), "run", list(), - IntegerValue.REF)); + Types.INT)); } @Test @@ -131,7 +129,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.ConstantIntSupplier"), "value", list(), - IntegerValue.REF)); + Types.INT)); } @Test @@ -143,7 +141,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.AnonymousClass"), "value", list(), - IntegerValue.REF)); + Types.INT)); } @Test @@ -155,7 +153,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.AnonymousClass"), "value", list(value(42)), - IntegerValue.REF)); + Types.INT)); } @Test @@ -167,7 +165,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.Lambda"), "value", list(), - IntegerValue.REF)); + Types.INT)); } @Test @@ -179,7 +177,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.Lambda"), "value", list(value(2)), - IntegerValue.REF)); + Types.INT)); } @Test @@ -191,7 +189,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.Lambda"), "value", list(value(2)), - IntegerValue.REF)); + Types.INT)); } @Test @@ -203,7 +201,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.GenericInterface"), "value", list(), - StringValue.REF)); + Types.STRING)); } @Test @@ -215,7 +213,7 @@ public abstract class CompilerTests { ScalarType.of("com.example.GenericInterface"), "value", list(), - StringValue.REF)); + Types.STRING)); } @Test @@ -227,17 +225,17 @@ public abstract class CompilerTests { ScalarType.of("com.example.StaticMethodOverloads"), "value", list(), - IntegerValue.REF)); + Types.INT)); } @Test public void stringAdd() throws Exception { - assertEquals(value("42"), evalExpression(StringValue.REF, "\"4\" + \"2\"")); + assertEquals(value("42"), evalExpression(Types.STRING, "\"4\" + \"2\"")); } @Test public void stringToLowerCase() throws Exception { - assertEquals(value("patrick wolf"), evalExpression(StringValue.REF, "\"Patrick Wolf\".toLowerCase()")); + assertEquals(value("patrick wolf"), evalExpression(Types.STRING, "\"Patrick Wolf\".toLowerCase()")); } @Test @@ -305,11 +303,11 @@ public abstract class CompilerTests { } private PrimitiveValue evalBooleanExpression(String expressionSource) { - return evalExpression(BooleanValue.REF, expressionSource); + return evalExpression(Types.BOOLEAN, expressionSource); } private PrimitiveValue evalIntExpression(String expressionSource) { - return evalExpression(IntegerValue.REF, expressionSource); + return evalExpression(Types.INT, expressionSource); } private PrimitiveValue evalExpression(ScalarType type, String expressionSource) { diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java index 2ca3b2d..fbc3c54 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java @@ -14,11 +14,10 @@ import org.zwobble.couscous.backends.csharp.CsharpBackend; import org.zwobble.couscous.backends.csharp.CsharpSerializer; import org.zwobble.couscous.tests.MethodRunner; import org.zwobble.couscous.tests.backends.Processes; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.util.ExtraLists; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; -import org.zwobble.couscous.values.StringValue; -import org.zwobble.couscous.values.UnitValue; import java.io.IOException; import java.nio.file.Files; @@ -72,7 +71,7 @@ public class CsharpMethodRunner implements MethodRunner { eagerMap(arguments, LiteralNode::literal), returnType)); - boolean isVoid = returnType.equals(UnitValue.REF); + boolean isVoid = returnType.equals(Types.VOID); String body = isVoid ? value + ";" : "var value = " + value + ";" + @@ -123,7 +122,7 @@ public class CsharpMethodRunner implements MethodRunner { return value(value.equals("True")); case "System.MonoType": if (value.equals("System.String")) { - return value(StringValue.REF); + return value(Types.STRING); } else { assertThat(value, Matchers.startsWith(NAMESPACE_PREFIX)); return value(ScalarType.of(value.substring(NAMESPACE_PREFIX.length()))); diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java index 3eebf1a..5c1044d 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java @@ -5,8 +5,7 @@ import org.zwobble.couscous.ast.*; import org.zwobble.couscous.types.ScalarType; import org.zwobble.couscous.backends.csharp.CsharpSerializer; import org.zwobble.couscous.tests.TestIds; -import org.zwobble.couscous.values.BooleanValue; -import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.types.Types; import static org.junit.Assert.assertEquals; import static org.zwobble.couscous.ast.AssignmentNode.assign; @@ -71,7 +70,7 @@ public class CsharpSerializerTests { @Test public void assignmentSeparatesTargetAndValueWithEqualsSign() { String output = serialize(assign( - reference(var(TestIds.ANY_ID, "x", BooleanValue.REF)), + reference(var(TestIds.ANY_ID, "x", Types.BOOLEAN)), literal(true))); assertEquals("x = true", output); } @@ -131,7 +130,7 @@ public class CsharpSerializerTests { @Test public void prefixExpression() { String output = serialize(not( - reference(var(TestIds.ANY_ID, "x", BooleanValue.REF)))); + reference(var(TestIds.ANY_ID, "x", Types.BOOLEAN)))); assertEquals("!x", output); } @@ -360,7 +359,7 @@ public class CsharpSerializerTests { @Test public void interfaceWithMethod() { - MethodNode method = MethodNode.builder("get").isAbstract().returns(IntegerValue.REF).build(); + MethodNode method = MethodNode.builder("get").isAbstract().returns(Types.INT).build(); Node node = new ClassNodeBuilder(ScalarType.of("com.example.Example")) .method(method) .buildInterface(); diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java index cc36c20..3ad255b 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java @@ -3,10 +3,7 @@ package org.zwobble.couscous.tests.frontends.java; import org.junit.Test; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.types.ScalarType; -import org.zwobble.couscous.values.BooleanValue; -import org.zwobble.couscous.values.IntegerValue; -import org.zwobble.couscous.values.ObjectValues; -import org.zwobble.couscous.values.StringValue; +import org.zwobble.couscous.types.Types; import java.util.List; @@ -38,7 +35,7 @@ public class ExpressionReadingTests { assertEquals(literal(false), readBooleanExpression("false")); assertEquals(literal(42), readIntExpression("42")); assertEquals(literal('h'), readIntExpression("'h'")); - assertEquals(literal(StringValue.REF), readExpression("Class<String>", "String.class")); + assertEquals(literal(Types.STRING), readExpression("Class<String>", "String.class")); } @Test @@ -51,7 +48,7 @@ public class ExpressionReadingTests { @Test public void canReadCasts() { assertEquals( - cast(literal(42), ObjectValues.OBJECT), + cast(literal(42), Types.OBJECT), readExpression("Object", "(Object)42")); } @Test @@ -96,7 +93,7 @@ public class ExpressionReadingTests { fieldAccess( thisReference(ScalarType.of("com.example.Example")), "name", - StringValue.REF), + Types.STRING), returnNode.getValue()); } @@ -122,21 +119,21 @@ public class ExpressionReadingTests { fieldAccess( ScalarType.of("com.example.Example"), "name", - StringValue.REF), + Types.STRING), returnNode.getValue()); } @Test public void canReadInstanceMethodCalls() { assertEquals( - methodCall(literal("hello"), "startsWith", list(literal("h")), BooleanValue.REF), + methodCall(literal("hello"), "startsWith", list(literal("h")), Types.BOOLEAN), readBooleanExpression("\"hello\".startsWith(\"h\")")); List<StatementNode> statements = readStatements("int", "Object x = 1; return x.hashCode();"); LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statements.get(0); ReturnNode returnNode = (ReturnNode) statements.get(1); assertEquals( - methodCall(reference(declaration), "hashCode", list(), IntegerValue.REF), + methodCall(reference(declaration), "hashCode", list(), Types.INT), returnNode.getValue()); } @@ -153,7 +150,7 @@ public class ExpressionReadingTests { ThisReferenceNode.thisReference(ScalarType.of("com.example.Example")), "loop", list(), - StringValue.REF), + Types.STRING), returnNode.getValue()); } @@ -164,7 +161,7 @@ public class ExpressionReadingTests { ScalarType.of("java.lang.Integer"), "parseInt", list(literal("42")), - IntegerValue.REF), + Types.INT), readIntExpression("Integer.parseInt(\"42\")")); } @@ -181,7 +178,7 @@ public class ExpressionReadingTests { ScalarType.of("com.example.Example"), "loop", list(), - StringValue.REF), + Types.STRING), returnNode.getValue()); } @@ -198,7 +195,7 @@ public class ExpressionReadingTests { "String", "java.util.Objects.toString(42)"); assertEquals( - typeCoercion(literal(42), ObjectValues.OBJECT), + typeCoercion(literal(42), Types.OBJECT), expression.getArguments().get(0)); } @@ -285,14 +282,14 @@ public class ExpressionReadingTests { public void equalityOperatorDoesNotUnboxIfBothOperandsAreBoxed() { assertEquals( same( - typeCoercion(constructorCall(ObjectValues.BOXED_INT, list(literal(1))), ObjectValues.OBJECT), - typeCoercion(constructorCall(ObjectValues.BOXED_INT, list(literal(2))), ObjectValues.OBJECT)), + typeCoercion(constructorCall(Types.BOXED_INT, list(literal(1))), Types.OBJECT), + typeCoercion(constructorCall(Types.BOXED_INT, list(literal(2))), Types.OBJECT)), readBooleanExpression("new Integer(1) == new Integer(2)")); assertEquals( not(same( - typeCoercion(constructorCall(ObjectValues.BOXED_INT, list(literal(1))), ObjectValues.OBJECT), - typeCoercion(constructorCall(ObjectValues.BOXED_INT, list(literal(2))), ObjectValues.OBJECT))), + typeCoercion(constructorCall(Types.BOXED_INT, list(literal(1))), Types.OBJECT), + typeCoercion(constructorCall(Types.BOXED_INT, list(literal(2))), Types.OBJECT))), readBooleanExpression("new Integer(1) != new Integer(2)")); } @@ -326,7 +323,7 @@ public class ExpressionReadingTests { fieldAccess( thisReference(ScalarType.of("com.example.Example")), "name", - StringValue.REF), + Types.STRING), literal("blah")), returnNode.getValue()); } @@ -345,8 +342,8 @@ public class ExpressionReadingTests { fieldAccess( thisReference(ScalarType.of("com.example.Example")), "value", - ObjectValues.OBJECT), - typeCoercion(literal(4), ObjectValues.OBJECT)), + Types.OBJECT), + typeCoercion(literal(4), Types.OBJECT)), returnNode.getValue()); } diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java index 84e9508..8bcf38d 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/FreeVariablesTests.java @@ -4,11 +4,10 @@ import org.junit.Test; import org.zwobble.couscous.ast.ReferenceNode; import org.zwobble.couscous.ast.VariableDeclaration; import org.zwobble.couscous.tests.TestIds; -import org.zwobble.couscous.values.StringValue; +import org.zwobble.couscous.types.Types; import java.util.List; -import static java.util.Arrays.asList; import static java.util.Collections.emptyList; import static org.junit.Assert.assertEquals; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; @@ -22,14 +21,14 @@ import static org.zwobble.couscous.util.ExtraLists.list; public class FreeVariablesTests { @Test public void referenceIsFreeIfThereIsNoAssociatedDeclaration() { - VariableDeclaration declaration = var(TestIds.ANY_ID, "[name]", StringValue.REF); + VariableDeclaration declaration = var(TestIds.ANY_ID, "[name]", Types.STRING); List<ReferenceNode> freeVariables = findFreeVariables(list(reference(declaration))); assertEquals(list(reference(declaration)), freeVariables); } @Test public void referenceIsNotFreeIfIsDeclaredAsArgument() { - VariableDeclaration declaration = var(TestIds.ANY_ID, "[name]", StringValue.REF); + VariableDeclaration declaration = var(TestIds.ANY_ID, "[name]", Types.STRING); List<ReferenceNode> freeVariables = findFreeVariables( list(formalArg(declaration), reference(declaration))); assertEquals(emptyList(), freeVariables); @@ -37,7 +36,7 @@ public class FreeVariablesTests { @Test public void referenceIsNotFreeIfIsReferenceToLocalDefinedInBody() { - VariableDeclaration declaration = var(TestIds.ANY_ID, "[name]", StringValue.REF); + VariableDeclaration declaration = var(TestIds.ANY_ID, "[name]", Types.STRING); List<ReferenceNode> freeVariables = findFreeVariables( list( localVariableDeclaration(declaration, literal("[value]")), diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java index c3b83a0..97b8b66 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java @@ -3,9 +3,7 @@ package org.zwobble.couscous.tests.frontends.java; import org.junit.Test; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.types.ScalarType; -import org.zwobble.couscous.values.IntegerValue; -import org.zwobble.couscous.values.ObjectValues; -import org.zwobble.couscous.values.StringValue; +import org.zwobble.couscous.types.Types; import java.util.List; @@ -41,7 +39,7 @@ public class JavaReaderTests { LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statements.get(0); assertEquals("x", declaration.getName()); - assertEquals(IntegerValue.REF, declaration.getType()); + assertEquals(Types.INT, declaration.getType()); assertEquals(literal(4), declaration.getInitialValue()); ReturnNode returnNode = (ReturnNode) statements.get(1); assertEquals( @@ -54,7 +52,7 @@ public class JavaReaderTests { StatementNode statement = readStatement("void", "Object x = 4;"); LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statement; - assertEquals(typeCoercion(literal(4), ObjectValues.OBJECT), declaration.getInitialValue()); + assertEquals(typeCoercion(literal(4), Types.OBJECT), declaration.getInitialValue()); } @Test @@ -65,7 +63,7 @@ public class JavaReaderTests { "}"); MethodNode method = classNode.getMethods().get(0); - assertEquals(IntegerValue.REF, method.getReturnType()); + assertEquals(Types.INT, method.getReturnType()); } @Test @@ -93,7 +91,7 @@ public class JavaReaderTests { ScalarType.of("java.lang.Integer"), "parseInt", list(literal("42")), - IntegerValue.REF)), + Types.INT)), readStatement("void", "Integer.parseInt(\"42\");")); } @@ -182,7 +180,7 @@ public class JavaReaderTests { fieldAccess( thisReference(ScalarType.of("com.example.Example")), "name", - StringValue.REF), + Types.STRING), literal("Flaws"))), constructor.getBody()); } @@ -205,13 +203,13 @@ public class JavaReaderTests { fieldAccess( thisReference(ScalarType.of("com.example.Example")), "year", - IntegerValue.REF), + Types.INT), literal(2013)), assignStatement( fieldAccess( thisReference(ScalarType.of("com.example.Example")), "name", - StringValue.REF), + Types.STRING), literal("Flaws"))), constructor.getBody()); } @@ -233,13 +231,13 @@ public class JavaReaderTests { fieldAccess( thisReference(ScalarType.of("com.example.Example")), "year", - IntegerValue.REF), + Types.INT), literal(2013)), assignStatement( fieldAccess( thisReference(ScalarType.of("com.example.Example")), "name", - StringValue.REF), + Types.STRING), literal("Flaws"))), constructor.getBody()); } @@ -259,7 +257,7 @@ public class JavaReaderTests { fieldAccess( ScalarType.of("com.example.Example"), "name", - StringValue.REF), + Types.STRING), literal("Flaws"))), staticConstructor); } @@ -276,7 +274,7 @@ public class JavaReaderTests { fieldAccess( ScalarType.of("com.example.Example"), "name", - StringValue.REF), + Types.STRING), literal("Flaws"))), staticConstructor); } @@ -362,7 +360,7 @@ public class JavaReaderTests { MethodNode expectedMethod = MethodNode.builder("get") .isAbstract() - .returns(IntegerValue.REF) + .returns(Types.INT) .build(); assertEquals(list(expectedMethod), classNode.getMethods()); } diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java index 760cc56..6112c8e 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java @@ -13,10 +13,8 @@ import org.zwobble.couscous.interpreter.values.IntegerInterpreterValue; import org.zwobble.couscous.interpreter.values.InterpreterValue; import org.zwobble.couscous.interpreter.values.StringInterpreterValue; import org.zwobble.couscous.tests.BackendEvalTests; -import org.zwobble.couscous.values.IntegerValue; -import org.zwobble.couscous.values.ObjectValues; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.PrimitiveValue; -import org.zwobble.couscous.values.StringValue; import java.util.List; import java.util.Optional; @@ -41,7 +39,7 @@ import static org.zwobble.couscous.util.ExtraLists.list; public class EvaluatorTests extends BackendEvalTests { @Test public void valueOfAssignmentExpressionIsNewValue() { - FormalArgumentNode arg = formalArg(var(ANY_ID, "x", StringValue.REF)); + FormalArgumentNode arg = formalArg(var(ANY_ID, "x", Types.STRING)); Environment environment = new Environment( new MapBackedProject(ImmutableMap.of()), Optional.empty(), @@ -66,8 +64,8 @@ public class EvaluatorTests extends BackendEvalTests { literal("hello"), "size", list(), - IntegerValue.REF))); - assertEquals(new MethodSignature("size", list(), IntegerValue.REF), exception.getSignature()); + Types.INT))); + assertEquals(new MethodSignature("size", list(), Types.INT), exception.getSignature()); } @Test @@ -78,8 +76,8 @@ public class EvaluatorTests extends BackendEvalTests { literal("hello"), "substring", list(literal(1)), - StringValue.REF))); - assertEquals(new MethodSignature("substring", list(IntegerValue.REF), StringValue.REF), exception.getSignature()); + Types.STRING))); + assertEquals(new MethodSignature("substring", list(Types.INT), Types.STRING), exception.getSignature()); } @Test @@ -90,15 +88,15 @@ public class EvaluatorTests extends BackendEvalTests { literal("hello"), "substring", list(literal(0), literal("")), - StringValue.REF))); + Types.STRING))); assertEquals( - new MethodSignature("substring", list(IntegerValue.REF, StringValue.REF), StringValue.REF), + new MethodSignature("substring", list(Types.INT, Types.STRING), Types.STRING), exception.getSignature()); } @Test public void errorIfConstructorArgumentIsWrongType() { - FormalArgumentNode argument = formalArg(var(ANY_ID, "x", IntegerValue.REF)); + FormalArgumentNode argument = formalArg(var(ANY_ID, "x", Types.INT)); ClassNode classNode = ClassNode.builder("com.example.Example") .constructor(constructor -> constructor .argument(argument)) @@ -111,7 +109,7 @@ public class EvaluatorTests extends BackendEvalTests { classNode.getName(), list(literal(""))))); - assertEquals(new UnexpectedValueType(IntegerValue.REF, StringValue.REF), exception); + assertEquals(new UnexpectedValueType(Types.INT, Types.STRING), exception); } @Test @@ -127,7 +125,7 @@ public class EvaluatorTests extends BackendEvalTests { classNode.getName(), list()), "value", - IntegerValue.REF))); + Types.INT))); assertEquals(new NoSuchField("value"), exception); } @@ -135,7 +133,7 @@ public class EvaluatorTests extends BackendEvalTests { @Test public void cannotGetValueOfUnboundField() { ClassNode classNode = ClassNode.builder("com.example.Example") - .field("value", IntegerValue.REF) + .field("value", Types.INT) .build(); UnboundField exception = assertThrows(UnboundField.class, @@ -146,7 +144,7 @@ public class EvaluatorTests extends BackendEvalTests { classNode.getName(), list()), "value", - IntegerValue.REF))); + Types.INT))); assertEquals(new UnboundField("value"), exception); } @@ -156,7 +154,7 @@ public class EvaluatorTests extends BackendEvalTests { ClassNode classNode = ClassNode.builder("com.example.Example") .constructor(constructor -> constructor .statement(assignStatement( - fieldAccess(constructor.thisReference(), "value", IntegerValue.REF), + fieldAccess(constructor.thisReference(), "value", Types.INT), literal(42)))) .build(); @@ -174,10 +172,10 @@ public class EvaluatorTests extends BackendEvalTests { public void cannotSetValueOfInstanceFieldAsThoughItIsAStaticField() { ScalarType type = ScalarType.of("com.example.Example"); ClassNode classNode = ClassNode.builder(type) - .field("value", IntegerValue.REF) + .field("value", Types.INT) .constructor(constructor -> constructor .statement(assignStatement( - fieldAccess(type, "value", IntegerValue.REF), + fieldAccess(type, "value", Types.INT), literal(42)))) .build(); @@ -194,10 +192,10 @@ public class EvaluatorTests extends BackendEvalTests { @Test public void cannotSetValueOfFieldWithWrongType() { ClassNode classNode = ClassNode.builder("com.example.Example") - .field("value", IntegerValue.REF) + .field("value", Types.INT) .constructor(constructor -> constructor .statement(assignStatement( - fieldAccess(constructor.thisReference(), "value", IntegerValue.REF), + fieldAccess(constructor.thisReference(), "value", Types.INT), literal("")))) .build(); @@ -208,14 +206,14 @@ public class EvaluatorTests extends BackendEvalTests { classNode.getName(), list()))); - assertEquals(new UnexpectedValueType(IntegerValue.REF, StringValue.REF), exception); + assertEquals(new UnexpectedValueType(Types.INT, Types.STRING), exception); } @Test public void validCastPassesValueThrough() { InterpreterValue value = eval( emptyEnvironment(), - cast(literal("42"), ObjectValues.OBJECT)); + cast(literal("42"), Types.OBJECT)); assertEquals(value("42"), value); } @@ -223,9 +221,9 @@ public class EvaluatorTests extends BackendEvalTests { public void errorIfCastIsNotValid() { InvalidCast exception = assertThrows(InvalidCast.class, () -> eval(emptyEnvironment(), - cast(literal(42), StringValue.REF))); - assertEquals(StringValue.REF, exception.getExpected()); - assertEquals(IntegerValue.REF, exception.getActual()); + cast(literal(42), Types.STRING))); + assertEquals(Types.STRING, exception.getExpected()); + assertEquals(Types.INT, exception.getActual()); } private static Environment emptyEnvironment() { diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java index 9787ee2..0e644e1 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java @@ -15,10 +15,8 @@ import org.zwobble.couscous.interpreter.values.InterpreterValue; import org.zwobble.couscous.interpreter.values.InterpreterValues; import org.zwobble.couscous.tests.BackendMethodTests; import org.zwobble.couscous.tests.MethodRunner; -import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.PrimitiveValue; -import org.zwobble.couscous.values.StringValue; -import org.zwobble.couscous.values.UnitValue; import java.util.List; import java.util.stream.Collectors; @@ -46,12 +44,12 @@ public class InterpreterMethodTests extends BackendMethodTests { NoSuchMethod exception = assertThrows(NoSuchMethod.class, () -> runMethod(method, value("hello, world!"))); - assertEquals(new MethodSignature("hello", list(StringValue.REF), UnitValue.REF), exception.getSignature()); + assertEquals(new MethodSignature("hello", list(Types.STRING), Types.VOID), exception.getSignature()); } @Test public void errorIfTryingToAssignValueOfWrongTypeToVariable() { - FormalArgumentNode arg = formalArg(var(ANY_ID, "x", StringValue.REF)); + FormalArgumentNode arg = formalArg(var(ANY_ID, "x", Types.STRING)); MethodNode.Builder method = staticMethod("hello") .argument(arg) .statement(expressionStatement(assign(reference(arg), literal(0)))); @@ -59,13 +57,13 @@ public class InterpreterMethodTests extends BackendMethodTests { UnexpectedValueType exception = assertThrows(UnexpectedValueType.class, () -> runMethod(method, value(""))); - assertEquals(new UnexpectedValueType(StringValue.REF, IntegerValue.REF), exception); + assertEquals(new UnexpectedValueType(Types.STRING, Types.INT), exception); } @Test public void errorIfTryingToAssignToVariableNotInScope() { LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration( - ANY_ID, "x", StringValue.REF, literal("")); + ANY_ID, "x", Types.STRING, literal("")); MethodNode.Builder method = staticMethod("hello") .statement(expressionStatement(assign(reference(localVariableDeclaration), LiteralNode.literal("[updated value]")))); @@ -78,7 +76,7 @@ public class InterpreterMethodTests extends BackendMethodTests { @Test public void errorIfTryingToGetValueOfVariableNotInScope() { LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration( - ANY_ID, "x", StringValue.REF, literal("")); + ANY_ID, "x", Types.STRING, literal("")); MethodNode.Builder method = staticMethod("hello") .statement(returns(reference(localVariableDeclaration))); @@ -91,7 +89,7 @@ public class InterpreterMethodTests extends BackendMethodTests { @Test public void errorIfTryingToGetValueOfUnboundVariable() { LocalVariableDeclarationNode localVariableDeclaration = localVariableDeclaration( - ANY_ID, "x", StringValue.REF, literal("")); + ANY_ID, "x", Types.STRING, literal("")); MethodNode.Builder method = staticMethod("hello") .statement(returns(reference(localVariableDeclaration))) .statement(localVariableDeclaration); |
