aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/interpreter
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-21 08:13:45 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-21 08:13:45 +0000
commitfe113241971cfe87b163a9eb4dc51e9d5e32410e (patch)
treef9e435c44020ffbbb9231df79719a4d407ea8000 /src/test/java/org/zwobble/couscous/tests/interpreter
parent22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff)
Move standard type definitions into a Types class
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/interpreter')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java48
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java16
2 files changed, 30 insertions, 34 deletions
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);