aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-31 16:07:19 +0000
committerMichael Williamson <mike@zwobble.org>2015-10-31 16:07:19 +0000
commitad4903f04c757779b2e9a875298ef8418cb140b4 (patch)
tree49c28509587633d484e6fbcdd8537e15e854a567 /src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
parent4e13a3a626f630eb1031f32b1c3405cbf40952bc (diff)
Support equality on reference types
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
index 63ac1a9..cac2fe0 100644
--- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
@@ -1,5 +1,6 @@
package org.zwobble.couscous.tests;
+import java.util.Collections;
import java.util.List;
import org.junit.Test;
@@ -7,6 +8,7 @@ import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.ExpressionNode;
import org.zwobble.couscous.ast.FormalArgumentNode;
import org.zwobble.couscous.ast.MethodCallNode;
+import org.zwobble.couscous.ast.TypeName;
import org.zwobble.couscous.values.BooleanValue;
import org.zwobble.couscous.values.IntegerValue;
import org.zwobble.couscous.values.PrimitiveValue;
@@ -24,6 +26,7 @@ import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
import static org.zwobble.couscous.ast.MethodCallNode.not;
import static org.zwobble.couscous.ast.ReturnNode.returns;
+import static org.zwobble.couscous.ast.StaticMethodCallNode.same;
import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall;
import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional;
import static org.zwobble.couscous.ast.VariableDeclaration.var;
@@ -41,6 +44,15 @@ public abstract class BackendEvalTests {
}
@Test
+ public void equalityOnReferenceTypesChecksForIdentity() {
+ assertEquals(
+ value(false),
+ evalExpression(same(
+ constructorCall(TypeName.of("java.lang.Object"), Collections.emptyList()),
+ constructorCall(TypeName.of("java.lang.Object"), Collections.emptyList()))));
+ }
+
+ @Test
public void canEvaluateOperationsOnBooleans() {
assertEquals(
value(true),
@@ -136,8 +148,11 @@ public abstract class BackendEvalTests {
@Test
public void canCallBuiltinStaticMethod() {
- PrimitiveValue result = evalExpression(
- staticMethodCall("java.lang.Integer", "parseInt", literal("42")));
+ PrimitiveValue result = evalExpression(staticMethodCall(
+ "java.lang.Integer",
+ "parseInt",
+ asList(literal("42")),
+ IntegerValue.REF));
assertEquals(value(42), result);
}
@@ -145,10 +160,14 @@ public abstract class BackendEvalTests {
public void canCallStaticMethodFromUserDefinedStaticMethod() {
ClassNode classNode = ClassNode.builder("com.example.Example")
.staticMethod("main", method -> method
- .statement(returns(staticMethodCall("java.lang.Integer", "parseInt", literal("42")))))
+ .statement(returns(staticMethodCall(
+ "java.lang.Integer",
+ "parseInt",
+ asList(literal("42")),
+ IntegerValue.REF))))
.build();
PrimitiveValue result = evalExpression(asList(classNode),
- staticMethodCall("com.example.Example", "main"));
+ staticMethodCall("com.example.Example", "main", asList(), IntegerValue.REF));
assertEquals(value(42), result);
}