Skip to content

Commit 0a3d790

Browse files
adrpoOpenModelica-Hudson
authored andcommitted
add requirement tests
1 parent 7aeaf08 commit 0a3d790

File tree

3 files changed

+167
-0
lines changed

3 files changed

+167
-0
lines changed

openmodelica/requirements/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
TEST = ../../rtest
33

44
TESTFILES = \
5+
run.mos \
6+
runScenarios.mos \
7+
58

69
# test that currently fail. Move up when fixed.
710
# Run make testfailing

openmodelica/requirements/run.mos

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// name: TwoTanksExample.UserDefinedVerificationModels.UDVModel1
2+
// keywords: requirements, bindings, inference
3+
// status: correct
4+
//
5+
// Testing requirements bindings inference
6+
//
7+
8+
// script to test updating of bindings for a specific scenario
9+
10+
loadFile("TwoTanksExample/package.mo");
11+
getErrorString();
12+
inferBindings(TwoTanksExample.UserDefinedVerificationModels.UDVModel1);
13+
getErrorString();
14+
list(test.TestModel);
15+
getErrorString();
16+
17+
// Result:
18+
// true
19+
// ""
20+
// ... found client : TwoTanksExample.Requirements.LiquidLevel
21+
// ... found client : TwoTanksExample.Requirements.Volume_of_a_tank
22+
// ... found client : TwoTanksExample.Design.Components.Source
23+
// ... infer binding TwoTanksExample.Design.Components.Source TwoTanksExample.Design.TwoTanksDesign
24+
// ... found provider TwoTanksExample.Scenarios.Overflow
25+
// ... found instance provider TwoTanksExample.Design.TwoTanksDesign
26+
// **** Applying modifier twoTanksDesign1
27+
// ... infer binding TwoTanksExample.Requirements.Volume_of_a_tank TwoTanksExample.Requirements.Volume_of_a_tank
28+
// ... found provider TwoTanksExample.Design.Components.Tank
29+
// ... found provider TwoTanksExample.Design.Components.Tank
30+
// ... found instance provider TwoTanksExample.Requirements.Volume_of_a_tank
31+
// **** Applying modifier volume_of_a_tank1_autogen_bind_0
32+
// **** Applying modifier volume_of_a_tank1_autogen_bind_1
33+
// ... infer binding TwoTanksExample.Requirements.LiquidLevel TwoTanksExample.Requirements.LiquidLevel
34+
// ... found provider TwoTanksExample.Design.Components.Tank
35+
// ... found provider TwoTanksExample.Design.Components.Tank
36+
// ... found instance provider TwoTanksExample.Requirements.LiquidLevel
37+
// **** Applying modifier liquidLevel1_autogen_bind_0
38+
// **** Applying modifier liquidLevel1_autogen_bind_1
39+
// model UDVModel1
40+
// TwoTanksExample.Design.TwoTanksDesign twoTanksDesign1(source.flowLevel = overflow1.flowLevel) annotation(
41+
// Placement(visible = true, transformation(origin = {42, -28}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
42+
// TwoTanksExample.Requirements.Volume_of_a_tank volume_of_a_tank1_autogen_bind_0(tankVolume = twoTanksDesign1.tank1.volume) annotation(
43+
// Placement(visible = true, transformation(origin = {-60, 34}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
44+
// TwoTanksExample.Requirements.Volume_of_a_tank volume_of_a_tank1_autogen_bind_1(tankVolume = twoTanksDesign1.tank2.volume) annotation(
45+
// Placement(visible = true, transformation(origin = {-60, 34}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
46+
// TwoTanksExample.Requirements.LiquidLevel liquidLevel1_autogen_bind_0(waterLevel = twoTanksDesign1.tank1.levelOfLiquid) annotation(
47+
// Placement(visible = true, transformation(origin = {-60, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
48+
// TwoTanksExample.Requirements.LiquidLevel liquidLevel1_autogen_bind_1(waterLevel = twoTanksDesign1.tank2.levelOfLiquid) annotation(
49+
// Placement(visible = true, transformation(origin = {-60, -26}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
50+
// TwoTanksExample.Scenarios.Overflow overflow1 annotation(
51+
// Placement(visible = true, transformation(origin = {42, 28}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
52+
// end UDVModel1
53+
// true
54+
// ""
55+
// ""
56+
// ""
57+
// endResult
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
// name: TwoTanksExample.VerificationModels
2+
// keywords: requirements, bindings, inference
3+
// status: correct
4+
//
5+
// Testing requirements verification scenarios generation
6+
//
7+
8+
// script to test updating of bindings for a specific scenario
9+
10+
loadFile("TwoTanksExample/package.mo");
11+
getErrorString();
12+
generateVerificationScenarios(TwoTanksExample.VerificationModels);
13+
getErrorString();
14+
list(TwoTanksExample.VerificationModels);
15+
getErrorString();
16+
17+
// Result:
18+
// true
19+
// ""
20+
// *** Found a VVDRlib.Verification.Design
21+
// *** Found a VVDRlib.Verification.Requirement
22+
// *** Found a VVDRlib.Verification.Requirement
23+
// *** Found a VVDRlib.Verification.Scenario
24+
// *** Found a VVDRlib.Verification.Scenario
25+
// *** Autogenerated class: verif_model_autogen_0
26+
// ... found client : TwoTanksExample.Design.Components.Source
27+
// ... found client : TwoTanksExample.Requirements.LiquidLevel
28+
// ... found client : TwoTanksExample.Requirements.Volume_of_a_tank
29+
// ... infer binding TwoTanksExample.Requirements.Volume_of_a_tank TwoTanksExample.Requirements.Volume_of_a_tank
30+
// ... found provider TwoTanksExample.Design.Components.Tank
31+
// ... found provider TwoTanksExample.Design.Components.Tank
32+
// ... found instance provider TwoTanksExample.Requirements.Volume_of_a_tank
33+
// **** Applying modifier _agen_Volume_of_a_tank3_autogen_bind_0
34+
// **** Applying modifier _agen_Volume_of_a_tank3_autogen_bind_1
35+
// ... infer binding TwoTanksExample.Requirements.LiquidLevel TwoTanksExample.Requirements.LiquidLevel
36+
// ... found provider TwoTanksExample.Design.Components.Tank
37+
// ... found provider TwoTanksExample.Design.Components.Tank
38+
// ... found instance provider TwoTanksExample.Requirements.LiquidLevel
39+
// **** Applying modifier _agen_LiquidLevel2_autogen_bind_0
40+
// **** Applying modifier _agen_LiquidLevel2_autogen_bind_1
41+
// ... infer binding TwoTanksExample.Design.Components.Source TwoTanksExample.Design.TwoTanksDesign
42+
// ... found provider TwoTanksExample.Scenarios.Normal_operation
43+
// ... found instance provider TwoTanksExample.Design.TwoTanksDesign
44+
// **** Applying modifier _agen_TwoTanksDesign1
45+
// *** Autogenerated class: verif_model_autogen_1
46+
// ... found client : TwoTanksExample.Design.Components.Source
47+
// ... found client : TwoTanksExample.Requirements.LiquidLevel
48+
// ... found client : TwoTanksExample.Requirements.Volume_of_a_tank
49+
// ... infer binding TwoTanksExample.Requirements.Volume_of_a_tank TwoTanksExample.Requirements.Volume_of_a_tank
50+
// ... found provider TwoTanksExample.Design.Components.Tank
51+
// ... found provider TwoTanksExample.Design.Components.Tank
52+
// ... found instance provider TwoTanksExample.Requirements.Volume_of_a_tank
53+
// **** Applying modifier _agen_Volume_of_a_tank3_autogen_bind_0
54+
// **** Applying modifier _agen_Volume_of_a_tank3_autogen_bind_1
55+
// ... infer binding TwoTanksExample.Requirements.LiquidLevel TwoTanksExample.Requirements.LiquidLevel
56+
// ... found provider TwoTanksExample.Design.Components.Tank
57+
// ... found provider TwoTanksExample.Design.Components.Tank
58+
// ... found instance provider TwoTanksExample.Requirements.LiquidLevel
59+
// **** Applying modifier _agen_LiquidLevel2_autogen_bind_0
60+
// **** Applying modifier _agen_LiquidLevel2_autogen_bind_1
61+
// ... infer binding TwoTanksExample.Design.Components.Source TwoTanksExample.Design.TwoTanksDesign
62+
// ... found provider TwoTanksExample.Scenarios.Overflow
63+
// ... found instance provider TwoTanksExample.Design.TwoTanksDesign
64+
// **** Applying modifier _agen_TwoTanksDesign1
65+
// ******** Autogenerated classes:
66+
// package VerificationModels
67+
// model verif_model_autogen_1 "Autogenerated verification model"
68+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_0(tankVolume = _agen_TwoTanksDesign1.tank1.volume);
69+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_1(tankVolume = _agen_TwoTanksDesign1.tank2.volume);
70+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_0(waterLevel = _agen_TwoTanksDesign1.tank1.levelOfLiquid);
71+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_1(waterLevel = _agen_TwoTanksDesign1.tank2.levelOfLiquid);
72+
// TwoTanksExample.Design.TwoTanksDesign _agen_TwoTanksDesign1(source.flowLevel = _agen_Overflow0.flowLevel);
73+
// TwoTanksExample.Scenarios.Overflow _agen_Overflow0;
74+
// end verif_model_autogen_1;
75+
//
76+
// model verif_model_autogen_0 "Autogenerated verification model"
77+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_0(tankVolume = _agen_TwoTanksDesign1.tank1.volume);
78+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_1(tankVolume = _agen_TwoTanksDesign1.tank2.volume);
79+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_0(waterLevel = _agen_TwoTanksDesign1.tank1.levelOfLiquid);
80+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_1(waterLevel = _agen_TwoTanksDesign1.tank2.levelOfLiquid);
81+
// TwoTanksExample.Design.TwoTanksDesign _agen_TwoTanksDesign1(source.flowLevel = _agen_Normal_operation0.flowLevel);
82+
// TwoTanksExample.Scenarios.Normal_operation _agen_Normal_operation0;
83+
// end verif_model_autogen_0;
84+
// end VerificationModels
85+
// true
86+
// ""
87+
// "package VerificationModels
88+
// model verif_model_autogen_1 \"Autogenerated verification model\"
89+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_0(tankVolume = _agen_TwoTanksDesign1.tank1.volume);
90+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_1(tankVolume = _agen_TwoTanksDesign1.tank2.volume);
91+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_0(waterLevel = _agen_TwoTanksDesign1.tank1.levelOfLiquid);
92+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_1(waterLevel = _agen_TwoTanksDesign1.tank2.levelOfLiquid);
93+
// TwoTanksExample.Design.TwoTanksDesign _agen_TwoTanksDesign1(source.flowLevel = _agen_Overflow0.flowLevel);
94+
// TwoTanksExample.Scenarios.Overflow _agen_Overflow0;
95+
// end verif_model_autogen_1;
96+
//
97+
// model verif_model_autogen_0 \"Autogenerated verification model\"
98+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_0(tankVolume = _agen_TwoTanksDesign1.tank1.volume);
99+
// TwoTanksExample.Requirements.Volume_of_a_tank _agen_Volume_of_a_tank3_autogen_bind_1(tankVolume = _agen_TwoTanksDesign1.tank2.volume);
100+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_0(waterLevel = _agen_TwoTanksDesign1.tank1.levelOfLiquid);
101+
// TwoTanksExample.Requirements.LiquidLevel _agen_LiquidLevel2_autogen_bind_1(waterLevel = _agen_TwoTanksDesign1.tank2.levelOfLiquid);
102+
// TwoTanksExample.Design.TwoTanksDesign _agen_TwoTanksDesign1(source.flowLevel = _agen_Normal_operation0.flowLevel);
103+
// TwoTanksExample.Scenarios.Normal_operation _agen_Normal_operation0;
104+
// end verif_model_autogen_0;
105+
// end VerificationModels;"
106+
// ""
107+
// endResult

0 commit comments

Comments
 (0)