From 904dff6724e224f24772854fa184f62ca33c1795 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 11 Feb 2016 21:55:36 +0000 Subject: Read static field accesses and static constructors in Java frontend --- .../tests/frontends/java/JavaReaderTests.java | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src/test/java/org') 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 staticConstructor = classNode.getStaticConstructor(); + + assertEquals( + list(assignStatement( + fieldAccess( + TypeName.of("com.example.Example"), + "name", + StringValue.REF), + literal("Flaws"))), + staticConstructor); + } @Test public void canDeclareStaticMethodWithAnnotation() { -- cgit v1.2.3