aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-11 21:55:36 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-11 21:55:36 +0000
commit904dff6724e224f24772854fa184f62ca33c1795 (patch)
treee9e4989c0930e3c220f9cfcda7f7bac1cbb4548e /src/test/java/org/zwobble
parenta34a00ba19f6ffb61762da4629b53b8a633f9d17 (diff)
Read static field accesses and static constructors in Java frontend
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java46
1 files changed, 46 insertions, 0 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 6bc0816..13484c2 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
@@ -99,6 +99,32 @@ public class JavaReaderTests {
StringValue.REF),
returnNode.getValue());
}
+
+ @Test
+ public void canReadExplicitStaticFieldReference() {
+ canReadStaticFieldReference("this.name");
+ }
+
+ @Test
+ public void canReadImplicitStaticFieldReference() {
+ canReadStaticFieldReference("name");
+ }
+
+ private void canReadStaticFieldReference(String expression) {
+ ClassNode classNode = readClass(
+ "private static String name;" +
+ "public String getName() {" +
+ " return " + expression + ";" +
+ "}");
+
+ ReturnNode returnNode = (ReturnNode) classNode.getMethods().get(0).getBody().get(0);
+ assertEquals(
+ fieldAccess(
+ TypeName.of("com.example.Example"),
+ "name",
+ StringValue.REF),
+ returnNode.getValue());
+ }
@Test
public void canReadInstanceMethodCalls() {
@@ -610,6 +636,26 @@ public class JavaReaderTests {
literal("Flaws"))),
constructor.getBody());
}
+
+ @Test
+ public void canDeclareStaticConstructor() {
+ ClassNode classNode = readClass(
+ "private static final String name;" +
+ "static {" +
+ " name = \"Flaws\";" +
+ "}");
+
+ List<StatementNode> staticConstructor = classNode.getStaticConstructor();
+
+ assertEquals(
+ list(assignStatement(
+ fieldAccess(
+ TypeName.of("com.example.Example"),
+ "name",
+ StringValue.REF),
+ literal("Flaws"))),
+ staticConstructor);
+ }
@Test
public void canDeclareStaticMethodWithAnnotation() {