From d67c1fe05f7fe4e4ea354e2282db3f93eb5ff0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20W=2E=20V=2E=20Tran-J=C3=B8rgensen?= Date: Tue, 25 Oct 2016 09:36:48 +0200 Subject: [PATCH] Test that set comprehensions work Related to #42 --- .../overture/codegen/vdm2c/NativeTests.java | 8 +++++++ .../ExpressionComprehensions_Tests.cpp | 21 +++++++++++++++++++ .../ExpressionComprehensions.vdmrt | 8 +++++++ 3 files changed, 37 insertions(+) create mode 100644 core/vdm2c/src/test/resources/native/comprehensions/ExpressionComprehensions_Tests.cpp create mode 100644 core/vdm2c/src/test/resources/vdmrt/expressions/ExpressionComprehensions.vdmrt diff --git a/core/vdm2c/src/test/java/org/overture/codegen/vdm2c/NativeTests.java b/core/vdm2c/src/test/java/org/overture/codegen/vdm2c/NativeTests.java index e35f0a81..2d8b3155 100644 --- a/core/vdm2c/src/test/java/org/overture/codegen/vdm2c/NativeTests.java +++ b/core/vdm2c/src/test/java/org/overture/codegen/vdm2c/NativeTests.java @@ -79,6 +79,14 @@ public void ExpressionQuote() throws IOException, InterruptedException, generate(getPath("expressions/ExpressionQuote.vdmrt")); compileAndTest(getTestCppFile("quote/ExpressionQuote_Tests.cpp")); } + + @Test + public void ExpressionComprehensions() throws IOException, InterruptedException, + CMakeGenerateException + { + generate(getPath("expressions/ExpressionComprehensions.vdmrt")); + compileAndTest(getTestCppFile("comprehensions/ExpressionComprehensions_Tests.cpp")); + } @Test public void SubclassResponsibility() throws IOException, InterruptedException, diff --git a/core/vdm2c/src/test/resources/native/comprehensions/ExpressionComprehensions_Tests.cpp b/core/vdm2c/src/test/resources/native/comprehensions/ExpressionComprehensions_Tests.cpp new file mode 100644 index 00000000..e76edc06 --- /dev/null +++ b/core/vdm2c/src/test/resources/native/comprehensions/ExpressionComprehensions_Tests.cpp @@ -0,0 +1,21 @@ + +#include "gtest/gtest.h" + +extern "C" { +#include "Vdm.h" +#include +#include "ExpressionComprehensions.h" + +} + +#define CHECK(methodId) TVP c=_Z24ExpressionComprehensionsEV(NULL);\ +TVP res=CALL_FUNC( ExpressionComprehensions, ExpressionComprehensions,c,methodId);\ +EXPECT_EQ (true,res->value.boolVal);\ +vdmFree(res);\ +vdmFree(c) + +TEST(ExpressionComprehensions, retSetComp) +{ + CHECK(CLASS_ExpressionComprehensions__Z10retSetCompEV); +} + diff --git a/core/vdm2c/src/test/resources/vdmrt/expressions/ExpressionComprehensions.vdmrt b/core/vdm2c/src/test/resources/vdmrt/expressions/ExpressionComprehensions.vdmrt new file mode 100644 index 00000000..d35991c0 --- /dev/null +++ b/core/vdm2c/src/test/resources/vdmrt/expressions/ExpressionComprehensions.vdmrt @@ -0,0 +1,8 @@ +class ExpressionComprehensions + +functions + +public retSetComp : () -> bool +retSetComp () == {x | x in set {1,2,3} & x > 0} = {1,2,3}; + +end ExpressionComprehensions \ No newline at end of file