aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-04 17:05:15 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-04 17:05:15 +0100
commit47fad1a4e01422c16c900d38938c210456337dca (patch)
treebd63fc0a82b82d6c869034dee26a3fb6be229ac1 /src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
parentc6fd2a9cac5a5b164c32a04d84543d3d1bd5d51c (diff)
Test that locals can be reassigned
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
index 4078b3f..d461221 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
@@ -89,6 +89,19 @@ public class InterpreterTests {
assertEquals(new StringValue("[initial value]"), result);
}
+
+ @Test
+ public void canDeclareVariableAndAssignValues() {
+ val localVariableDeclaration = localVariableDeclaration(
+ 42, StringValue.REF, "x", LiteralNode.literal("[initial value]"));
+ val method = staticMethod("hello")
+ .statement(localVariableDeclaration)
+ .statement(new ExpressionStatementNode(new Assignment(reference(localVariableDeclaration), LiteralNode.literal("[updated value]"))))
+ .statement(new ReturnNode(reference(localVariableDeclaration)));
+ val result = runMethod(method);
+
+ assertEquals(new StringValue("[updated value]"), result);
+ }
private InterpreterValue runMethod(MethodNode.MethodNodeBuilder methodBuilder, InterpreterValue... arguments) {
val method = methodBuilder.build();