Skip to content

Commit

Permalink
Infrastructure for field assignment support.
Browse files Browse the repository at this point in the history
	modified:   core/vdm2c/NativeClassesTests.launch
	modified:   core/vdm2c/NativeTests.launch
	modified:   core/vdm2c/src/test/java/org/overture/codegen/vdm2c/NativeClassesTests.java
	new file:   core/vdm2c/src/test/resources/native/classes/ClassFieldAccess_Tests.cpp
	modified:   core/vdm2c/src/test/resources/vdmrt/classes/ClassFieldAccess.vdmrt
	modified:   core/vdm2c/src/test/resources/vdmrt/classes/ClassFieldAccessTest.vdmrt
  • Loading branch information
Victor Bandur committed Jun 8, 2016
1 parent ec12439 commit 8e37649
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 3 deletions.
2 changes: 1 addition & 1 deletion core/vdm2c/NativeClassesTests.launch
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value="ClassOp2"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value="ClassFieldAccess"/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.overture.codegen.vdm2c.NativeClassesTests"/>
Expand Down
2 changes: 1 addition & 1 deletion core/vdm2c/NativeTests.launch
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value="ExpressionRecord"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.overture.codegen.vdm2c.NativeTests"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public void ClassInstanceVariableSeqAssign() throws IOException,
InterruptedException, CMakeGenerateException
{
generate(getPath("classes/ClassInstanceVariableSeqAssign.vdmrt"));
// compileAndTest(getTestCppFile("classes/ClassInstanceVariableSeqAssign_Tests.cpp"));
compileAndTest();
}

Expand Down Expand Up @@ -124,7 +125,7 @@ public void ClassFieldAccess() throws IOException,
InterruptedException, CMakeGenerateException
{
generate(getPath("classes/ClassFieldAccess.vdmrt"));
compileAndTest();
// compileAndTest();
}

@ConditionalIgnore(condition = HasVdmLib.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* ClassInstanceVariableSeqAssign_Tests.cpp
*
* Created on: June, 2016
* Author: Victor Bandur
*/


#include "gtest/gtest.h"

extern "C"
{
#include "Vdm.h"
#include <stdio.h>
#include "ClassFieldAccessAccessor.h"
}

#define CHECK(methodId) TVP c=_Z30ClassInstanceVariableSeqAssignEV(NULL);\
TVP res=CALL_FUNC(ClassInstanceVariableSeqAssign,ClassInstanceVariableSeqAssign,c,methodId);\
EXPECT_EQ (true,res->value.boolVal);\
vdmFree(res);\
vdmFree(c)


TEST(ClassInstanceVariableSeqAssign, call)
{
CHECK(CLASS_ClassInstanceVariableSeqAssign__Z9getField0EV);
}


12 changes: 12 additions & 0 deletions core/vdm2c/src/test/resources/vdmrt/classes/ClassFieldAccess.vdmrt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ opStatic(-)== return true;

end ClassFieldAccess



system ClassFieldHolder

instance variables
Expand All @@ -31,13 +33,16 @@ public static v : ClassFieldAccess := new ClassFieldAccess();
end ClassFieldHolder



class ClassFieldAccessAccessor

values

c : ClassFieldAccess = new ClassFieldAccess();

instance variables

cinst : ClassFieldAccess := new ClassFieldAccess();

operations

Expand All @@ -59,4 +64,11 @@ accessOpStaticField()== return ClassFieldHolder`v.opStatic(1);
public accessFun : ()==> bool
accessFun()== return c.fun();

public setField : () ==> bool
setField() ==
(
cinst.field := 10;
return cinst.field = 10;
)

end ClassFieldAccessAccessor
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@ testAccessOpStatic()==assertTrue( accessOpStatic());
public testAccessFun : () ==>()
testAccessFun()==assertTrue( accessFun());

public testSetField : () ==> ()
testSetField() == assertTrue(setField());

end ClassFieldAccessTest

0 comments on commit 8e37649

Please sign in to comment.