aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java38
1 files changed, 33 insertions, 5 deletions
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 cc95f0f..b8309b3 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
@@ -35,9 +35,11 @@ import static org.zwobble.couscous.ast.FieldDeclarationNode.field;
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.StaticMethodCallNode.boxBoolean;
import static org.zwobble.couscous.ast.StaticMethodCallNode.boxInt;
import static org.zwobble.couscous.ast.StaticMethodCallNode.same;
import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall;
+import static org.zwobble.couscous.ast.StaticMethodCallNode.unboxInt;
import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional;
import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference;
import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
@@ -250,7 +252,7 @@ public class JavaReaderTests {
}
@Test
- public void integersAreBoxedIfAssignedToObjectVariable() {
+ public void valuesOfAssignmentsAreBoxedIfNecessary() {
ClassNode classNode = readClass(
"private Object value;" +
"public Object getValue() {" +
@@ -283,19 +285,45 @@ public class JavaReaderTests {
}
@Test
- public void integersAreBoxedIfDeclaredAsObjectVariable() {
+ public void initialValueOfLocalVariableDeclarationsAreBoxedIfNecessary() {
List<StatementNode> statements = readStatements("Object x = 4;");
LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statements.get(0);
- assertEquals(StaticMethodCallNode.boxInt(literal(4)), declaration.getInitialValue());
+ assertEquals(boxInt(literal(4)), declaration.getInitialValue());
}
@Test
- public void booleansAreBoxedIfDeclaredAsObjectVariable() {
+ public void integersAreBoxedWhenTargetTypeIsObject() {
+ List<StatementNode> statements = readStatements("Object x = 4;");
+
+ LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statements.get(0);
+ assertEquals(boxInt(literal(4)), declaration.getInitialValue());
+ }
+
+ @Test
+ public void booleansAreBoxedWhenTargetTypeIsObject() {
List<StatementNode> statements = readStatements("Object x = true;");
LocalVariableDeclarationNode declaration = (LocalVariableDeclarationNode) statements.get(0);
- assertEquals(StaticMethodCallNode.boxBoolean(literal(true)), declaration.getInitialValue());
+ assertEquals(boxBoolean(literal(true)), declaration.getInitialValue());
+ }
+
+ @Test
+ public void integersAreUnboxedIfTargetTypeIsPrimitive() {
+ List<StatementNode> statements = readStatements("Integer x = 4; int y = x;");
+
+ LocalVariableDeclarationNode boxedDeclaration = (LocalVariableDeclarationNode) statements.get(0);
+ LocalVariableDeclarationNode unboxedDeclaration = (LocalVariableDeclarationNode) statements.get(1);
+ assertEquals(unboxInt(reference(boxedDeclaration)), unboxedDeclaration.getInitialValue());
+ }
+
+ @Test
+ public void booleansAreUnboxedIfTargetTypeIsPrimitive() {
+ List<StatementNode> statements = readStatements("Boolean x = false; boolean y = x;");
+
+ LocalVariableDeclarationNode boxedDeclaration = (LocalVariableDeclarationNode) statements.get(0);
+ LocalVariableDeclarationNode unboxedDeclaration = (LocalVariableDeclarationNode) statements.get(1);
+ assertEquals(StaticMethodCallNode.unboxBoolean(reference(boxedDeclaration)), unboxedDeclaration.getInitialValue());
}
@Test