From 936968730c0f882f2ba8dfa91164abb901ac3c95 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 17 Apr 2016 17:17:34 +0100 Subject: Read finally clauses of try statements --- .../couscous/tests/backends/csharp/CsharpSerializerTests.java | 3 ++- .../couscous/tests/frontends/java/JavaReaderTests.java | 11 ++++++++++- .../zwobble/couscous/tests/frontends/java/NodeMatchers.java | 4 ++++ 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/test') diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java index ba69eb4..c0b9899 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java @@ -309,7 +309,8 @@ public class CsharpSerializerTests { list(returns(literal(1))), list( exceptionHandler(varX, list(returns(reference(varX)))), - exceptionHandler(varY, list(returns(reference(varY))))))); + exceptionHandler(varY, list(returns(reference(varY))))), + list())); assertEquals("try {\n return 1;\n} catch (X x) {\n return x;\n} catch (Y y) {\n return y;\n}\n", output); } 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 3aafb56..8225baa 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 @@ -192,7 +192,7 @@ public class JavaReaderTests { } @Test - public void canReadTryStatements() { + public void canReadTryStatementsWithCatchClauses() { assertThat( readStatement("int", "try { return 1; } catch (Exception exception) { return 2; }"), isTryStatement( @@ -200,6 +200,15 @@ public class JavaReaderTests { hasExceptionHandlers( isExceptionHandler(ScalarType.of("java.lang.Exception"), "exception", list(returns(literal(2))))))); } + + @Test + public void canReadTryStatementsWithFinallyClauses() { + assertThat( + readStatement("int", "try { return 1; } finally { return 2; }"), + isTryStatement( + hasTryBody(list(returns(literal(1)))), + hasFinally(returns(literal(2))))); + } @Test public void canDeclareConstructor() { diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/NodeMatchers.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/NodeMatchers.java index ba356f8..5a39e82 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/NodeMatchers.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/NodeMatchers.java @@ -77,4 +77,8 @@ public class NodeMatchers { hasFeature("exception name", ExceptionHandlerNode::getExceptionName, equalTo(name)), hasFeature("body", ExceptionHandlerNode::getBody, equalTo(body))); } + + public static Matcher hasFinally(StatementNode... statements) { + return hasFeature("finally clause", TryNode::getFinallyBody, contains(statements)); + } } -- cgit v1.2.3