Skip to content

Commit

Permalink
[NF] Add record array evaluation tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
perost authored and OpenModelica-Hudson committed Jun 21, 2018
1 parent bede778 commit fb83712
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 9 deletions.
39 changes: 39 additions & 0 deletions flattening/modelica/scodeinst/CevalRecordArray1.mo
@@ -0,0 +1,39 @@
// name: CevalRecordArray1
// keywords:
// status: correct
// cflags: -d=newInst
//

record R
Real x;
Real y;
Real z;
end R;

model CevalRecordArray1
constant R r[2] = {R(1.0, 2.0, 3.0), R(4.0, 5.0, 6.0)};
Real x[2] = r.x;
Real y[2] = r.y;
Real z[2] = r.z;
end CevalRecordArray1;

// Result:
// class CevalRecordArray1
// constant Real r[1].x = 1.0;
// constant Real r[1].y = 2.0;
// constant Real r[1].z = 3.0;
// constant Real r[2].x = 4.0;
// constant Real r[2].y = 5.0;
// constant Real r[2].z = 6.0;
// Real x[1];
// Real x[2];
// Real y[1];
// Real y[2];
// Real z[1];
// Real z[2];
// equation
// x = {1.0, 4.0};
// y = {2.0, 5.0};
// z = {3.0, 6.0};
// end CevalRecordArray1;
// endResult
40 changes: 40 additions & 0 deletions flattening/modelica/scodeinst/CevalRecordArray2.mo
@@ -0,0 +1,40 @@
// name: CevalRecordArray2
// keywords:
// status: correct
// cflags: -d=newInst
//

package P
record R
Real x = 1.0;
Real y = 2.0;
Real z = 3.0;
end R;

constant R r[2];

function f
input Real x;
output Real y;
algorithm
y := x * r[2].y;
end f;
end P;


model CevalRecordArray2
Real x = P.f(1.0);
end CevalRecordArray2;

// Result:
// function P.f
// input Real x;
// output Real y;
// algorithm
// y := x * 2.0;
// end P.f;
//
// class CevalRecordArray2
// Real x = P.f(1.0);
// end CevalRecordArray2;
// endResult
43 changes: 43 additions & 0 deletions flattening/modelica/scodeinst/CevalRecordArray3.mo
@@ -0,0 +1,43 @@
// name: CevalRecordArray3
// keywords:
// status: correct
// cflags: -d=newInst
//

record R
Real x;
Real y;
Real z;
end R;

model CevalRecordArray3
constant R r[2](each x = 1.0, y = {2, 3}, z = {4, 5});
Real r1[2] = r.x;
Real r2[2] = r.y;
Real r3[2] = r.z;
Real r4 = r[2].x;
Real r5 = r[1].y;
end CevalRecordArray3;

// Result:
// class CevalRecordArray3
// constant Real r[1].x = 1.0;
// constant Real r[1].y = 2.0;
// constant Real r[1].z = 4.0;
// constant Real r[2].x = 1.0;
// constant Real r[2].y = 3.0;
// constant Real r[2].z = 5.0;
// Real r1[1];
// Real r1[2];
// Real r2[1];
// Real r2[2];
// Real r3[1];
// Real r3[2];
// Real r4 = 1.0;
// Real r5 = 2.0;
// equation
// r1 = {1.0, 1.0};
// r2 = {2.0, 3.0};
// r3 = {4.0, 5.0};
// end CevalRecordArray3;
// endResult
30 changes: 30 additions & 0 deletions flattening/modelica/scodeinst/CevalRecordArray4.mo
@@ -0,0 +1,30 @@
// name: CevalRecordArray4
// keywords:
// status: correct
// cflags: -d=newInst
//

record R
Real x = 1.0;
Real y = 2.0;
Real z = 3.0;
end R;

model CevalRecordArray4
constant R r1[2];
Real x = r1[1].x;
Real y = r1[2].y;
end CevalRecordArray4;

// Result:
// class CevalRecordArray4
// constant Real r1[1].x = 1.0;
// constant Real r1[1].y = 2.0;
// constant Real r1[1].z = 3.0;
// constant Real r1[2].x = 1.0;
// constant Real r1[2].y = 2.0;
// constant Real r1[2].z = 3.0;
// Real x = 1.0;
// Real y = 2.0;
// end CevalRecordArray4;
// endResult
39 changes: 39 additions & 0 deletions flattening/modelica/scodeinst/CevalRecordArray5.mo
@@ -0,0 +1,39 @@
// name: CevalRecordArray5
// keywords:
// status: correct
// cflags: -d=newInst
//

record R
Real x;
Real y;
Real z;
end R;

model CevalRecordArray5
constant R r[1] = {R(1.0, 2.0, 3.0)};
Real r1 = r[1].x;
Real r2 = r[1].y;
Real r3 = r[1].z;
Real r4[1] = r.x;
Real r5[1] = r.y;
Real r6[1] = r.z;
end CevalRecordArray5;

// Result:
// class CevalRecordArray5
// constant Real r[1].x = 1.0;
// constant Real r[1].y = 2.0;
// constant Real r[1].z = 3.0;
// Real r1 = 1.0;
// Real r2 = 2.0;
// Real r3 = 3.0;
// Real r4[1];
// Real r5[1];
// Real r6[1];
// equation
// r4 = {1.0};
// r5 = {2.0};
// r6 = {3.0};
// end CevalRecordArray5;
// endResult
5 changes: 5 additions & 0 deletions flattening/modelica/scodeinst/Makefile
Expand Up @@ -119,6 +119,10 @@ CevalRecord3.mo \
CevalRecord4.mo \
CevalRecord5.mo \
CevalRecord6.mo \
CevalRecordArray1.mo \
CevalRecordArray2.mo \
CevalRecordArray4.mo \
CevalRecordArray5.mo \
CevalReduction1.mo \
CevalReduction2.mo \
CevalRelation1.mo \
Expand Down Expand Up @@ -731,6 +735,7 @@ Wild1.mo \
# test that currently fail. Move up when fixed.
# Run make testfailing
FAILINGTESTFILES=\
CevalRecordArray3.mo \
ModClass6.mo \
IfExpression6.mo \
TupleOperation3.mo \
Expand Down
15 changes: 6 additions & 9 deletions flattening/modelica/scodeinst/RecordBinding2.mo
Expand Up @@ -16,14 +16,11 @@ end RecordBinding2;

// Result:
// class RecordBinding2
// Real r[1].x;
// Real r[1].y;
// Real r[1].z;
// Real r[2].x;
// Real r[2].y;
// Real r[2].z;
// equation
// r[1] = R(4.0, 5.0, 3.0);
// r[2] = R(6.0, 7.0, 3.0);
// Real r[1].x = 4.0;
// Real r[1].y = 5.0;
// Real r[1].z = 3.0;
// Real r[2].x = 6.0;
// Real r[2].y = 7.0;
// Real r[2].z = 3.0;
// end RecordBinding2;
// endResult

0 comments on commit fb83712

Please sign in to comment.