armodel 1.8.2__py3-none-any.whl → 1.8.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- armodel/cli/format_xml_cli.py +62 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +17 -15
- armodel/models/M2/AUTOSARTemplates/CommonStructure/TriggerDeclaration.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/__init__.py +44 -28
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +5 -5
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +13 -1
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +247 -45
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/AutosarVariableRef.py +9 -6
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/DataElements.py +7 -5
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/RTEEvents.py +3 -3
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/Trigger.py +43 -2
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +40 -43
- armodel/models/M2/MSR/AsamHdo/ComputationMethod.py +13 -12
- armodel/models/M2/MSR/DataDictionary/DataDefProperties.py +40 -9
- armodel/parser/abstract_arxml_parser.py +4 -0
- armodel/parser/arxml_parser.py +88 -56
- armodel/tests/test_armodel/models/test_common_structure.py +2 -2
- armodel/tests/test_armodel/parser/test_arxml_parser.py +38 -0
- armodel/tests/test_armodel/parser/test_implementation_data_type.py +247 -0
- armodel/tests/test_armodel/parser/test_rte_event.py +142 -0
- armodel/tests/test_armodel/parser/test_runnable_entity.py +135 -0
- armodel/writer/abstract_arxml_writer.py +2 -0
- armodel/writer/arxml_writer.py +89 -25
- {armodel-1.8.2.dist-info → armodel-1.8.3.dist-info}/METADATA +11 -1
- {armodel-1.8.2.dist-info → armodel-1.8.3.dist-info}/RECORD +29 -25
- {armodel-1.8.2.dist-info → armodel-1.8.3.dist-info}/entry_points.txt +1 -0
- {armodel-1.8.2.dist-info → armodel-1.8.3.dist-info}/LICENSE +0 -0
- {armodel-1.8.2.dist-info → armodel-1.8.3.dist-info}/WHEEL +0 -0
- {armodel-1.8.2.dist-info → armodel-1.8.3.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
|
|
2
|
+
from ....writer.arxml_writer import ARXMLWriter
|
|
3
|
+
from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSARDoc
|
|
2
4
|
from ....parser.arxml_parser import ARXMLParser
|
|
5
|
+
import xml.etree.ElementTree as ET
|
|
3
6
|
|
|
4
7
|
|
|
5
8
|
class TestARXMLParser:
|
|
@@ -13,3 +16,38 @@ class TestARXMLParser:
|
|
|
13
16
|
assert (parser.convert_find_key("A/B/*") == "xmlns:A/xmlns:B/*")
|
|
14
17
|
assert (parser.convert_find_key("./A/B") == "./xmlns:A/xmlns:B")
|
|
15
18
|
assert (parser.convert_find_key("./A/B/*") == "./xmlns:A/xmlns:B/*")
|
|
19
|
+
|
|
20
|
+
def test_read_ar_packages(self):
|
|
21
|
+
parser = ARXMLParser()
|
|
22
|
+
parser.nsmap = {"xmlns": "http://autosar.org/schema/r4.0"}
|
|
23
|
+
xml_content = """
|
|
24
|
+
<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd">
|
|
25
|
+
<AR-PACKAGES T="2023-03-08T00:27:29+08:00" UUID="cb03ce49-8b4b-4565-abce-0a7a054d24af">
|
|
26
|
+
<AR-PACKAGE>
|
|
27
|
+
<SHORT-NAME>ApplicationTypes</SHORT-NAME>s
|
|
28
|
+
<ELEMENTS>
|
|
29
|
+
<IMPLEMENTATION-DATA-TYPE>
|
|
30
|
+
<SHORT-NAME>MyDataType</SHORT-NAME>
|
|
31
|
+
</IMPLEMENTATION-DATA-TYPE>
|
|
32
|
+
</ELEMENTS>
|
|
33
|
+
</AR-PACKAGE>
|
|
34
|
+
<AR-PACKAGE>
|
|
35
|
+
<SHORT-NAME>MyPackage</SHORT-NAME>
|
|
36
|
+
<ELEMENTS>
|
|
37
|
+
<IMPLEMENTATION-DATA-TYPE>
|
|
38
|
+
<SHORT-NAME>MyDataType2</SHORT-NAME>
|
|
39
|
+
</IMPLEMENTATION-DATA-TYPE>
|
|
40
|
+
</ELEMENTS>
|
|
41
|
+
</AR-PACKAGE>
|
|
42
|
+
</AR-PACKAGES>
|
|
43
|
+
</AUTOSAR>
|
|
44
|
+
""" # noqa E501
|
|
45
|
+
|
|
46
|
+
# prepare the XML content
|
|
47
|
+
element = ET.fromstring(xml_content)
|
|
48
|
+
|
|
49
|
+
document = AUTOSARDoc()
|
|
50
|
+
parser.readARPackages(element, document)
|
|
51
|
+
assert len(document.getARPackages()) == 2
|
|
52
|
+
assert document.getARPackages()[0].getShortName() == "ApplicationTypes"
|
|
53
|
+
assert document.getARPackages()[1].getShortName() == "MyPackage"
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
from ....writer.arxml_writer import ARXMLWriter
|
|
2
|
+
from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSARDoc
|
|
3
|
+
from ....parser.arxml_parser import ARXMLParser
|
|
4
|
+
import xml.etree.ElementTree as ET
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TestImplementationDataTypeParser:
|
|
8
|
+
|
|
9
|
+
def test_read_value_implementation_data_type(self):
|
|
10
|
+
parser = ARXMLParser()
|
|
11
|
+
parser.nsmap = {"xmlns": "http://autosar.org/schema/r4.0"}
|
|
12
|
+
xml_content = """
|
|
13
|
+
<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd">
|
|
14
|
+
<AR-PACKAGES T="2023-03-08T00:27:29+08:00" UUID="cb03ce49-8b4b-4565-abce-0a7a054d24af">
|
|
15
|
+
<AR-PACKAGE>
|
|
16
|
+
<SHORT-NAME>ImplementationDataType</SHORT-NAME>s
|
|
17
|
+
<ELEMENTS>
|
|
18
|
+
<IMPLEMENTATION-DATA-TYPE>
|
|
19
|
+
<SHORT-NAME>MyDataType</SHORT-NAME>
|
|
20
|
+
<CATEGORY>VALUE</CATEGORY>
|
|
21
|
+
<SW-DATA-DEF-PROPS T="2020-08-24T10:22:17+02:00">
|
|
22
|
+
<SW-DATA-DEF-PROPS-VARIANTS>
|
|
23
|
+
<SW-DATA-DEF-PROPS-CONDITIONAL T="2020-08-31T10:28:32+02:00">
|
|
24
|
+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
|
|
25
|
+
<COMPU-METHOD-REF DEST="COMPU-METHOD">/Application/ApplicationTypes/compu_Application_E_MyDataType</COMPU-METHOD-REF>
|
|
26
|
+
</SW-DATA-DEF-PROPS-CONDITIONAL>
|
|
27
|
+
</SW-DATA-DEF-PROPS-VARIANTS>
|
|
28
|
+
</SW-DATA-DEF-PROPS>
|
|
29
|
+
</IMPLEMENTATION-DATA-TYPE>
|
|
30
|
+
</ELEMENTS>
|
|
31
|
+
</AR-PACKAGE>
|
|
32
|
+
</AR-PACKAGES>
|
|
33
|
+
</AUTOSAR>
|
|
34
|
+
""" # noqa E501
|
|
35
|
+
|
|
36
|
+
# prepare the XML content
|
|
37
|
+
element = ET.fromstring(xml_content)
|
|
38
|
+
|
|
39
|
+
# read the XML content using the parser
|
|
40
|
+
document = AUTOSARDoc()
|
|
41
|
+
parser.readARPackages(element, document)
|
|
42
|
+
|
|
43
|
+
# assert the ARPackages
|
|
44
|
+
assert len(document.getARPackages()) == 1
|
|
45
|
+
ar_package = document.getARPackages()[0]
|
|
46
|
+
assert ar_package.getShortName() == "ImplementationDataType"
|
|
47
|
+
|
|
48
|
+
# assert the ImplementationDataType
|
|
49
|
+
assert len(ar_package.getImplementationDataTypes()) == 1
|
|
50
|
+
data_type = ar_package.getImplementationDataTypes()[0]
|
|
51
|
+
assert data_type.getShortName() == "MyDataType"
|
|
52
|
+
assert str(data_type.getCategory()) == "VALUE"
|
|
53
|
+
assert data_type.getCategory().getValue() == "VALUE"
|
|
54
|
+
assert data_type.getSwDataDefProps() is not None
|
|
55
|
+
assert data_type.getSwDataDefProps().getBaseTypeRef().getDest() == "SW-BASE-TYPE"
|
|
56
|
+
assert data_type.getSwDataDefProps().getBaseTypeRef().getValue() == "/AUTOSAR_Platform/BaseTypes/uint8"
|
|
57
|
+
assert data_type.getSwDataDefProps().getCompuMethodRef().getDest() == "COMPU-METHOD"
|
|
58
|
+
assert data_type.getSwDataDefProps().getCompuMethodRef().getValue() == "/Application/ApplicationTypes/compu_Application_E_MyDataType"
|
|
59
|
+
|
|
60
|
+
def test_read_array_implementation_data_type(self):
|
|
61
|
+
parser = ARXMLParser()
|
|
62
|
+
parser.nsmap = {"xmlns": "http://autosar.org/schema/r4.0"}
|
|
63
|
+
xml_content = """
|
|
64
|
+
<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd">
|
|
65
|
+
<AR-PACKAGES T="2023-03-08T00:27:29+08:00" UUID="cb03ce49-8b4b-4565-abce-0a7a054d24af">
|
|
66
|
+
<AR-PACKAGE>
|
|
67
|
+
<SHORT-NAME>ImplementationDataType</SHORT-NAME>s
|
|
68
|
+
<ELEMENTS>
|
|
69
|
+
<IMPLEMENTATION-DATA-TYPE>
|
|
70
|
+
<SHORT-NAME>MyArrayDataType</SHORT-NAME>
|
|
71
|
+
<CATEGORY>ARRAY</CATEGORY>
|
|
72
|
+
<SW-DATA-DEF-PROPS>
|
|
73
|
+
<SW-DATA-DEF-PROPS-VARIANTS>
|
|
74
|
+
<SW-DATA-DEF-PROPS-CONDITIONAL></SW-DATA-DEF-PROPS-CONDITIONAL>
|
|
75
|
+
</SW-DATA-DEF-PROPS-VARIANTS>
|
|
76
|
+
</SW-DATA-DEF-PROPS>
|
|
77
|
+
<SUB-ELEMENTS>
|
|
78
|
+
<IMPLEMENTATION-DATA-TYPE-ELEMENT UUID="2264d081-8375-489d-bd02-b71b9d495a18">
|
|
79
|
+
<SHORT-NAME>Byte</SHORT-NAME>
|
|
80
|
+
<CATEGORY>VALUE</CATEGORY>
|
|
81
|
+
<ARRAY-SIZE T="2021-03-26T19:19:25+01:00">8</ARRAY-SIZE>
|
|
82
|
+
<ARRAY-SIZE-SEMANTICS>FIXED-SIZE</ARRAY-SIZE-SEMANTICS>
|
|
83
|
+
<SW-DATA-DEF-PROPS>
|
|
84
|
+
<SW-DATA-DEF-PROPS-VARIANTS>
|
|
85
|
+
<SW-DATA-DEF-PROPS-CONDITIONAL T="2021-03-26T20:19:25+01:00">
|
|
86
|
+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
|
|
87
|
+
</SW-DATA-DEF-PROPS-CONDITIONAL>
|
|
88
|
+
</SW-DATA-DEF-PROPS-VARIANTS>
|
|
89
|
+
</SW-DATA-DEF-PROPS>
|
|
90
|
+
</IMPLEMENTATION-DATA-TYPE-ELEMENT>
|
|
91
|
+
</SUB-ELEMENTS>
|
|
92
|
+
</IMPLEMENTATION-DATA-TYPE>
|
|
93
|
+
</ELEMENTS>
|
|
94
|
+
</AR-PACKAGE>
|
|
95
|
+
</AR-PACKAGES>
|
|
96
|
+
</AUTOSAR>
|
|
97
|
+
""" # noqa E501
|
|
98
|
+
|
|
99
|
+
# prepare the XML content
|
|
100
|
+
element = ET.fromstring(xml_content)
|
|
101
|
+
|
|
102
|
+
# read the XML content using the parser
|
|
103
|
+
document = AUTOSARDoc()
|
|
104
|
+
parser.readARPackages(element, document)
|
|
105
|
+
|
|
106
|
+
# assert the ARPackages
|
|
107
|
+
assert len(document.getARPackages()) == 1
|
|
108
|
+
ar_package = document.getARPackages()[0]
|
|
109
|
+
assert ar_package.getShortName() == "ImplementationDataType"
|
|
110
|
+
|
|
111
|
+
# assert the ImplementationDataType
|
|
112
|
+
assert len(ar_package.getImplementationDataTypes()) == 1
|
|
113
|
+
data_type = ar_package.getImplementationDataTypes()[0]
|
|
114
|
+
assert data_type.getShortName() == "MyArrayDataType"
|
|
115
|
+
assert str(data_type.getCategory()) == "ARRAY"
|
|
116
|
+
assert data_type.getCategory().getValue() == "ARRAY"
|
|
117
|
+
assert data_type.getSwDataDefProps() is not None
|
|
118
|
+
assert data_type.getSwDataDefProps().getBaseTypeRef() is None
|
|
119
|
+
assert data_type.getSwDataDefProps().getCompuMethodRef() is None
|
|
120
|
+
|
|
121
|
+
# assert the SubElements of ImplementationDataType
|
|
122
|
+
assert len(data_type.getSubElements()) == 1
|
|
123
|
+
sub_element = data_type.getSubElements()[0]
|
|
124
|
+
assert sub_element.getShortName() == "Byte"
|
|
125
|
+
assert str(sub_element.getCategory()) == "VALUE"
|
|
126
|
+
assert sub_element.getCategory().getValue() == "VALUE"
|
|
127
|
+
assert sub_element.getArraySize().getValue() == 8
|
|
128
|
+
assert str(sub_element.getArraySizeSemantics()) == "FIXED-SIZE"
|
|
129
|
+
assert sub_element.getArraySizeSemantics().getValue() == "FIXED-SIZE"
|
|
130
|
+
assert sub_element.getSwDataDefProps() is not None
|
|
131
|
+
assert sub_element.getSwDataDefProps().getBaseTypeRef() is not None
|
|
132
|
+
assert sub_element.getSwDataDefProps().getBaseTypeRef().getDest() == "SW-BASE-TYPE"
|
|
133
|
+
assert sub_element.getSwDataDefProps().getBaseTypeRef().getValue() == "/AUTOSAR_Platform/BaseTypes/uint8"
|
|
134
|
+
assert sub_element.getSwDataDefProps().getCompuMethodRef() is None
|
|
135
|
+
|
|
136
|
+
# root = ET.Element("AUTOSAR", parser.nsmap)
|
|
137
|
+
# writer = ARXMLWriter()
|
|
138
|
+
# writer.writeARPackage(root, document)
|
|
139
|
+
# xml_str = ET.tostring(root, encoding='utf-8')
|
|
140
|
+
# assert xml_str == xml_content
|
|
141
|
+
|
|
142
|
+
def test_structure_implementation_data_type(self):
|
|
143
|
+
parser = ARXMLParser()
|
|
144
|
+
parser.nsmap = {"xmlns": "http://autosar.org/schema/r4.0"}
|
|
145
|
+
xml_content = """
|
|
146
|
+
<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-3-0.xsd">
|
|
147
|
+
<AR-PACKAGES T="2023-03-08T00:27:29+08:00" UUID="cb03ce49-8b4b-4565-abce-0a7a054d24af">
|
|
148
|
+
<AR-PACKAGE>
|
|
149
|
+
<SHORT-NAME>ImplementationDataType</SHORT-NAME>s
|
|
150
|
+
<ELEMENTS>
|
|
151
|
+
<IMPLEMENTATION-DATA-TYPE>
|
|
152
|
+
<SHORT-NAME>MyStructDataType</SHORT-NAME>
|
|
153
|
+
<CATEGORY>STRUCTURE</CATEGORY>
|
|
154
|
+
<SW-DATA-DEF-PROPS>
|
|
155
|
+
<SW-DATA-DEF-PROPS-VARIANTS>
|
|
156
|
+
<SW-DATA-DEF-PROPS-CONDITIONAL></SW-DATA-DEF-PROPS-CONDITIONAL>
|
|
157
|
+
</SW-DATA-DEF-PROPS-VARIANTS>
|
|
158
|
+
</SW-DATA-DEF-PROPS>
|
|
159
|
+
<SUB-ELEMENTS>
|
|
160
|
+
<IMPLEMENTATION-DATA-TYPE-ELEMENT T="2021-03-26T20:42:24+01:00" UUID="DCE:7700371a-cddc-4346-8b1e-749bddae5ed0">
|
|
161
|
+
<SHORT-NAME>PayloadSize</SHORT-NAME>
|
|
162
|
+
<CATEGORY>VALUE</CATEGORY>
|
|
163
|
+
<SW-DATA-DEF-PROPS>
|
|
164
|
+
<SW-DATA-DEF-PROPS-VARIANTS>
|
|
165
|
+
<SW-DATA-DEF-PROPS-CONDITIONAL T="2021-03-26T19:16:35+01:00">
|
|
166
|
+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
|
|
167
|
+
</SW-DATA-DEF-PROPS-CONDITIONAL>
|
|
168
|
+
</SW-DATA-DEF-PROPS-VARIANTS>
|
|
169
|
+
</SW-DATA-DEF-PROPS>
|
|
170
|
+
</IMPLEMENTATION-DATA-TYPE-ELEMENT>
|
|
171
|
+
<IMPLEMENTATION-DATA-TYPE-ELEMENT T="2021-03-26T20:42:45+01:00">
|
|
172
|
+
<SHORT-NAME>Payload</SHORT-NAME>
|
|
173
|
+
<CATEGORY>TYPE_REFERENCE</CATEGORY>
|
|
174
|
+
<SW-DATA-DEF-PROPS>
|
|
175
|
+
<SW-DATA-DEF-PROPS-VARIANTS>
|
|
176
|
+
<SW-DATA-DEF-PROPS-CONDITIONAL T="2021-03-26T19:25:45+01:00">
|
|
177
|
+
<IMPLEMENTATION-DATA-TYPE-REF DEST="IMPLEMENTATION-DATA-TYPE">/Application/ApplicationTypes/ArrayData</IMPLEMENTATION-DATA-TYPE-REF>
|
|
178
|
+
</SW-DATA-DEF-PROPS-CONDITIONAL>
|
|
179
|
+
</SW-DATA-DEF-PROPS-VARIANTS>
|
|
180
|
+
</SW-DATA-DEF-PROPS>
|
|
181
|
+
</IMPLEMENTATION-DATA-TYPE-ELEMENT>
|
|
182
|
+
</SUB-ELEMENTS>
|
|
183
|
+
</IMPLEMENTATION-DATA-TYPE>
|
|
184
|
+
</ELEMENTS>
|
|
185
|
+
</AR-PACKAGE>
|
|
186
|
+
</AR-PACKAGES>
|
|
187
|
+
</AUTOSAR>
|
|
188
|
+
""" # noqa E501
|
|
189
|
+
|
|
190
|
+
# prepare the XML content
|
|
191
|
+
element = ET.fromstring(xml_content)
|
|
192
|
+
|
|
193
|
+
# read the XML content using the parser
|
|
194
|
+
document = AUTOSARDoc()
|
|
195
|
+
parser.readARPackages(element, document)
|
|
196
|
+
|
|
197
|
+
# assert the ARPackages
|
|
198
|
+
assert len(document.getARPackages()) == 1
|
|
199
|
+
ar_package = document.getARPackages()[0]
|
|
200
|
+
assert ar_package.getShortName() == "ImplementationDataType"
|
|
201
|
+
|
|
202
|
+
# assert the ImplementationDataType
|
|
203
|
+
assert len(ar_package.getImplementationDataTypes()) == 1
|
|
204
|
+
data_type = ar_package.getImplementationDataTypes()[0]
|
|
205
|
+
assert data_type.getShortName() == "MyStructDataType"
|
|
206
|
+
assert str(data_type.getCategory()) == "STRUCTURE"
|
|
207
|
+
assert data_type.getCategory().getValue() == "STRUCTURE"
|
|
208
|
+
assert data_type.getSwDataDefProps() is not None
|
|
209
|
+
assert data_type.getSwDataDefProps().getBaseTypeRef() is None
|
|
210
|
+
assert data_type.getSwDataDefProps().getCompuMethodRef() is None
|
|
211
|
+
|
|
212
|
+
# assert the SubElements of ImplementationDataType
|
|
213
|
+
assert len(data_type.getSubElements()) == 2
|
|
214
|
+
|
|
215
|
+
# assert the first sub element
|
|
216
|
+
sub_element1 = data_type.getSubElements()[0]
|
|
217
|
+
assert sub_element1.getShortName() == "PayloadSize"
|
|
218
|
+
assert str(sub_element1.getCategory()) == "VALUE"
|
|
219
|
+
assert sub_element1.getCategory().getValue() == "VALUE"
|
|
220
|
+
assert sub_element1.getSwDataDefProps() is not None
|
|
221
|
+
assert sub_element1.getSwDataDefProps().getBaseTypeRef() is not None
|
|
222
|
+
assert sub_element1.getSwDataDefProps().getBaseTypeRef().getDest() == "SW-BASE-TYPE"
|
|
223
|
+
assert sub_element1.getSwDataDefProps().getBaseTypeRef().getValue() == "/AUTOSAR_Platform/BaseTypes/uint8"
|
|
224
|
+
assert sub_element1.getSwDataDefProps().getCompuMethodRef() is None
|
|
225
|
+
assert sub_element1.getArraySize() is None
|
|
226
|
+
assert sub_element1.getArraySizeSemantics() is None
|
|
227
|
+
assert sub_element1.getArraySizeHandling() is None
|
|
228
|
+
assert sub_element1.getIsOptional() is None
|
|
229
|
+
assert sub_element1.getSwDataDefProps().getCompuMethodRef() is None
|
|
230
|
+
|
|
231
|
+
# assert the second sub element
|
|
232
|
+
sub_element2 = data_type.getSubElements()[1]
|
|
233
|
+
assert sub_element2.getShortName() == "Payload"
|
|
234
|
+
assert str(sub_element2.getCategory()) == "TYPE_REFERENCE"
|
|
235
|
+
assert sub_element2.getCategory().getValue() == "TYPE_REFERENCE"
|
|
236
|
+
assert sub_element2.getSwDataDefProps() is not None
|
|
237
|
+
assert sub_element2.getSwDataDefProps().getBaseTypeRef() is None
|
|
238
|
+
assert sub_element2.getSwDataDefProps().getImplementationDataTypeRef() is not None
|
|
239
|
+
assert sub_element2.getSwDataDefProps().getImplementationDataTypeRef().getDest() == "IMPLEMENTATION-DATA-TYPE"
|
|
240
|
+
assert sub_element2.getSwDataDefProps().getImplementationDataTypeRef().getValue() == "/Application/ApplicationTypes/ArrayData"
|
|
241
|
+
assert sub_element2.getSwDataDefProps().getCompuMethodRef() is None
|
|
242
|
+
assert sub_element2.getArraySize() is None
|
|
243
|
+
assert sub_element2.getArraySizeSemantics() is None
|
|
244
|
+
assert sub_element2.getArraySizeHandling() is None
|
|
245
|
+
assert sub_element2.getIsOptional() is None
|
|
246
|
+
assert sub_element2.getSwDataDefProps().getCompuMethodRef() is None
|
|
247
|
+
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import xml.etree.ElementTree as ET
|
|
2
|
+
|
|
3
|
+
from armodel.models.M2.AUTOSARTemplates.SWComponentTemplate.Components import AtomicSwComponentType
|
|
4
|
+
|
|
5
|
+
from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSARDoc
|
|
6
|
+
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import SwcInternalBehavior
|
|
7
|
+
from ....writer.arxml_writer import ARXMLWriter
|
|
8
|
+
from ....parser.arxml_parser import ARXMLParser
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TestRteEVent:
|
|
12
|
+
|
|
13
|
+
def test_data_send_completed_events(self):
|
|
14
|
+
xml_content = """
|
|
15
|
+
<APPLICATION-SW-COMPONENT-TYPE>
|
|
16
|
+
<SHORT-NAME>MyComponents</SHORT-NAME>
|
|
17
|
+
<INTERNAL-BEHAVIORS>
|
|
18
|
+
<SWC-INTERNAL-BEHAVIOR T="2024-11-01T09:39:52+02:00" UUID="0c573b8e-57a1-4bc5-b815-07b6e0094060">
|
|
19
|
+
<SHORT-NAME>MyInternalBehavior</SHORT-NAME>
|
|
20
|
+
<DATA-TYPE-MAPPING-REFS>
|
|
21
|
+
<DATA-TYPE-MAPPING-REF DEST="DATA-TYPE-MAPPING-SET">/DataType/MappingSet/Array_mapping_set</DATA-TYPE-MAPPING-REF>
|
|
22
|
+
<DATA-TYPE-MAPPING-REF DEST="DATA-TYPE-MAPPING-SET">/DataType/MappingSet/uint8_mapping_set</DATA-TYPE-MAPPING-REF>
|
|
23
|
+
</DATA-TYPE-MAPPING-REFS>
|
|
24
|
+
<EVENTS>
|
|
25
|
+
<DATA-SEND-COMPLETED-EVENT >
|
|
26
|
+
<SHORT-NAME>data_send_event1</SHORT-NAME>
|
|
27
|
+
<START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/MyComponents/MySwc_IB/re_data_send_completed_1</START-ON-EVENT-REF>
|
|
28
|
+
<EVENT-SOURCE-REF DEST="VARIABLE-ACCESS">/MyComponents/MySwc_IB/re_CyclicJob_20ms/dsp_data_send_completed_1</EVENT-SOURCE-REF>
|
|
29
|
+
</DATA-SEND-COMPLETED-EVENT>
|
|
30
|
+
<DATA-SEND-COMPLETED-EVENT>
|
|
31
|
+
<SHORT-NAME>data_send_event2</SHORT-NAME>
|
|
32
|
+
<START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/MyComponents/MySwc_IB/re_data_send_completed_2</START-ON-EVENT-REF>
|
|
33
|
+
<EVENT-SOURCE-REF DEST="VARIABLE-ACCESS">/MyComponents/MySwc_IB/re_CyclicJob_20ms/dsp_data_send_completed_2</EVENT-SOURCE-REF>
|
|
34
|
+
</DATA-SEND-COMPLETED-EVENT>
|
|
35
|
+
</EVENTS>
|
|
36
|
+
</SWC-INTERNAL-BEHAVIOR>
|
|
37
|
+
</INTERNAL-BEHAVIORS>
|
|
38
|
+
</APPLICATION-SW-COMPONENT-TYPE>
|
|
39
|
+
""" # noqa E501
|
|
40
|
+
|
|
41
|
+
# prepare the XML content
|
|
42
|
+
element = ET.fromstring(xml_content)
|
|
43
|
+
document = AUTOSARDoc()
|
|
44
|
+
|
|
45
|
+
parser = ARXMLParser()
|
|
46
|
+
parser.nsmap = {"xmlns": ""}
|
|
47
|
+
|
|
48
|
+
sw_component = AtomicSwComponentType(document, "MyComponents")
|
|
49
|
+
parser.readAtomicSwComponentType(element, sw_component)
|
|
50
|
+
|
|
51
|
+
internal_behavior = sw_component.getInternalBehavior()
|
|
52
|
+
assert internal_behavior is not None
|
|
53
|
+
assert isinstance(internal_behavior, SwcInternalBehavior) is True
|
|
54
|
+
assert internal_behavior.getShortName() == "MyInternalBehavior"
|
|
55
|
+
assert len(internal_behavior.getDataSendCompletedEvents()) == 2
|
|
56
|
+
|
|
57
|
+
event1 = internal_behavior.getDataSendCompletedEvents()[0]
|
|
58
|
+
assert event1.getShortName() == "data_send_event1"
|
|
59
|
+
assert event1.getStartOnEventRef().getDest() == "RUNNABLE-ENTITY"
|
|
60
|
+
assert event1.getStartOnEventRef().getValue() == "/MyComponents/MySwc_IB/re_data_send_completed_1"
|
|
61
|
+
assert event1.getEventSourceRef().getDest() == "VARIABLE-ACCESS"
|
|
62
|
+
assert event1.getEventSourceRef().getValue() == "/MyComponents/MySwc_IB/re_CyclicJob_20ms/dsp_data_send_completed_1"
|
|
63
|
+
|
|
64
|
+
event2 = internal_behavior.getDataSendCompletedEvents()[1]
|
|
65
|
+
assert event2.getShortName() == "data_send_event2"
|
|
66
|
+
assert event2.getStartOnEventRef().getDest() == "RUNNABLE-ENTITY"
|
|
67
|
+
assert event2.getStartOnEventRef().getValue() == "/MyComponents/MySwc_IB/re_data_send_completed_2"
|
|
68
|
+
assert event2.getEventSourceRef().getDest() == "VARIABLE-ACCESS"
|
|
69
|
+
assert event2.getEventSourceRef().getValue() == "/MyComponents/MySwc_IB/re_CyclicJob_20ms/dsp_data_send_completed_2"
|
|
70
|
+
|
|
71
|
+
def test_operation_invoked_events(self):
|
|
72
|
+
xml_content = """
|
|
73
|
+
<APPLICATION-SW-COMPONENT-TYPE>
|
|
74
|
+
<SHORT-NAME>MyComponents</SHORT-NAME>
|
|
75
|
+
<INTERNAL-BEHAVIORS>
|
|
76
|
+
<SWC-INTERNAL-BEHAVIOR T="2024-11-01T09:39:52+02:00" UUID="0c573b8e-57a1-4bc5-b815-07b6e0094060">
|
|
77
|
+
<SHORT-NAME>MyInternalBehavior</SHORT-NAME>
|
|
78
|
+
<DATA-TYPE-MAPPING-REFS>
|
|
79
|
+
<DATA-TYPE-MAPPING-REF DEST="DATA-TYPE-MAPPING-SET">/DataType/MappingSet/Array_mapping_set</DATA-TYPE-MAPPING-REF>
|
|
80
|
+
<DATA-TYPE-MAPPING-REF DEST="DATA-TYPE-MAPPING-SET">/DataType/MappingSet/uint8_mapping_set</DATA-TYPE-MAPPING-REF>
|
|
81
|
+
</DATA-TYPE-MAPPING-REFS>
|
|
82
|
+
<EVENTS>
|
|
83
|
+
<DATA-SEND-COMPLETED-EVENT >
|
|
84
|
+
<SHORT-NAME>data_send_event1</SHORT-NAME>
|
|
85
|
+
<START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/MyComponents/MySwc_IB/re_data_send_completed_1</START-ON-EVENT-REF>
|
|
86
|
+
<EVENT-SOURCE-REF DEST="VARIABLE-ACCESS">/MyComponents/MySwc_IB/re_CyclicJob_20ms/dsp_data_send_completed_1</EVENT-SOURCE-REF>
|
|
87
|
+
</DATA-SEND-COMPLETED-EVENT>
|
|
88
|
+
<OPERATION-INVOKED-EVENT>
|
|
89
|
+
<SHORT-NAME>oie_event1</SHORT-NAME>
|
|
90
|
+
<START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/MyComponents/MySwc_IB/re_event1</START-ON-EVENT-REF>
|
|
91
|
+
<OPERATION-IREF>
|
|
92
|
+
<CONTEXT-P-PORT-REF DEST="P-PORT-PROTOTYPE">/MyComponents/pp_oie_port</CONTEXT-P-PORT-REF>
|
|
93
|
+
<TARGET-PROVIDED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION">/MyComponents/Interfaces/ClientServerInterfaces/IfCs_event/operation1</TARGET-PROVIDED-OPERATION-REF>
|
|
94
|
+
</OPERATION-IREF>
|
|
95
|
+
</OPERATION-INVOKED-EVENT>
|
|
96
|
+
<OPERATION-INVOKED-EVENT >
|
|
97
|
+
<SHORT-NAME>oie_event2</SHORT-NAME>
|
|
98
|
+
<START-ON-EVENT-REF DEST="RUNNABLE-ENTITY">/MyComponents/MySwc_IB/re_event2</START-ON-EVENT-REF>
|
|
99
|
+
<OPERATION-IREF T="2021-07-21T17:39:44+03:00">
|
|
100
|
+
<CONTEXT-P-PORT-REF DEST="P-PORT-PROTOTYPE">/MyComponents//pp_oie_port</CONTEXT-P-PORT-REF>
|
|
101
|
+
<TARGET-PROVIDED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION">/MyComponents/Interfaces/ClientServerInterfaces/IfCs_event/operation2</TARGET-PROVIDED-OPERATION-REF>
|
|
102
|
+
</OPERATION-IREF>
|
|
103
|
+
</OPERATION-INVOKED-EVENT>
|
|
104
|
+
</EVENTS>
|
|
105
|
+
</SWC-INTERNAL-BEHAVIOR>
|
|
106
|
+
</INTERNAL-BEHAVIORS>
|
|
107
|
+
</APPLICATION-SW-COMPONENT-TYPE>
|
|
108
|
+
""" # noqa E501
|
|
109
|
+
|
|
110
|
+
# prepare the XML content
|
|
111
|
+
element = ET.fromstring(xml_content)
|
|
112
|
+
document = AUTOSARDoc()
|
|
113
|
+
|
|
114
|
+
parser = ARXMLParser()
|
|
115
|
+
parser.nsmap = {"xmlns": ""}
|
|
116
|
+
|
|
117
|
+
sw_component = AtomicSwComponentType(document, "MyComponents")
|
|
118
|
+
parser.readAtomicSwComponentType(element, sw_component)
|
|
119
|
+
|
|
120
|
+
internal_behavior = sw_component.getInternalBehavior()
|
|
121
|
+
assert internal_behavior is not None
|
|
122
|
+
assert isinstance(internal_behavior, SwcInternalBehavior) is True
|
|
123
|
+
assert internal_behavior.getShortName() == "MyInternalBehavior"
|
|
124
|
+
assert len(internal_behavior.getOperationInvokedEvents()) == 2
|
|
125
|
+
|
|
126
|
+
event1 = internal_behavior.getOperationInvokedEvents()[0]
|
|
127
|
+
assert event1.getShortName() == "oie_event1"
|
|
128
|
+
assert event1.getStartOnEventRef().getDest() == "RUNNABLE-ENTITY"
|
|
129
|
+
assert event1.getStartOnEventRef().getValue() == "/MyComponents/MySwc_IB/re_event1"
|
|
130
|
+
assert event1.getOperationIRef().getContextPPortRef().getDest() == "P-PORT-PROTOTYPE"
|
|
131
|
+
assert event1.getOperationIRef().getContextPPortRef().getValue() == "/MyComponents/pp_oie_port"
|
|
132
|
+
assert event1.getOperationIRef().getTargetProvidedOperationRef().getDest() == "CLIENT-SERVER-OPERATION"
|
|
133
|
+
assert event1.getOperationIRef().getTargetProvidedOperationRef().getValue() == "/MyComponents/Interfaces/ClientServerInterfaces/IfCs_event/operation1"
|
|
134
|
+
|
|
135
|
+
event2 = internal_behavior.getOperationInvokedEvents()[1]
|
|
136
|
+
assert event2.getShortName() == "oie_event2"
|
|
137
|
+
assert event2.getStartOnEventRef().getDest() == "RUNNABLE-ENTITY"
|
|
138
|
+
assert event2.getStartOnEventRef().getValue() == "/MyComponents/MySwc_IB/re_event2"
|
|
139
|
+
assert event2.getOperationIRef().getContextPPortRef().getDest() == "P-PORT-PROTOTYPE"
|
|
140
|
+
assert event2.getOperationIRef().getContextPPortRef().getValue() == "/MyComponents//pp_oie_port"
|
|
141
|
+
assert event2.getOperationIRef().getTargetProvidedOperationRef().getDest() == "CLIENT-SERVER-OPERATION"
|
|
142
|
+
assert event2.getOperationIRef().getTargetProvidedOperationRef().getValue() == "/MyComponents/Interfaces/ClientServerInterfaces/IfCs_event/operation2"
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import xml.etree.ElementTree as ET
|
|
2
|
+
|
|
3
|
+
from ....models.M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior import RunnableEntity, SwcInternalBehavior
|
|
4
|
+
from ....models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSARDoc
|
|
5
|
+
from ....parser.arxml_parser import ARXMLParser
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TestRunnableEntity:
|
|
9
|
+
def setup_method(self):
|
|
10
|
+
self.xml_content = """
|
|
11
|
+
<SWC-INTERNAL-BEHAVIOR>
|
|
12
|
+
<RUNNABLES>
|
|
13
|
+
<RUNNABLE-ENTITY>
|
|
14
|
+
<SHORT-NAME>Cyclic</SHORT-NAME>
|
|
15
|
+
<MINIMUM-START-INTERVAL>0.0</MINIMUM-START-INTERVAL>
|
|
16
|
+
<CAN-BE-INVOKED-CONCURRENTLY>false</CAN-BE-INVOKED-CONCURRENTLY>
|
|
17
|
+
<DATA-RECEIVE-POINT-BY-ARGUMENTS>
|
|
18
|
+
<VARIABLE-ACCESS>
|
|
19
|
+
<SHORT-NAME>DRP_P_Special_EventMessage</SHORT-NAME>
|
|
20
|
+
<ACCESSED-VARIABLE>
|
|
21
|
+
<AUTOSAR-VARIABLE-IREF>
|
|
22
|
+
<PORT-PROTOTYPE-REF DEST="R-PORT-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/R_SpecialHandling</PORT-PROTOTYPE-REF>
|
|
23
|
+
<TARGET-DATA-PROTOTYPE-REF DEST="VARIABLE-DATA-PROTOTYPE">/DemoApplication/PortInterfaces/If_Internal/EventMessage</TARGET-DATA-PROTOTYPE-REF>
|
|
24
|
+
</AUTOSAR-VARIABLE-IREF>
|
|
25
|
+
</ACCESSED-VARIABLE>
|
|
26
|
+
</VARIABLE-ACCESS>
|
|
27
|
+
</DATA-RECEIVE-POINT-BY-ARGUMENTS>
|
|
28
|
+
<DATA-SEND-POINTS>
|
|
29
|
+
<VARIABLE-ACCESS>
|
|
30
|
+
<SHORT-NAME>DWA_P_CounterOut_CounterValue</SHORT-NAME>
|
|
31
|
+
<ACCESSED-VARIABLE>
|
|
32
|
+
<AUTOSAR-VARIABLE-IREF>
|
|
33
|
+
<PORT-PROTOTYPE-REF DEST="P-PORT-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/P_CounterOut</PORT-PROTOTYPE-REF>
|
|
34
|
+
<TARGET-DATA-PROTOTYPE-REF DEST="VARIABLE-DATA-PROTOTYPE">/DemoApplication/PortInterfaces/If_Counter/CounterValue</TARGET-DATA-PROTOTYPE-REF>
|
|
35
|
+
</AUTOSAR-VARIABLE-IREF>
|
|
36
|
+
</ACCESSED-VARIABLE>
|
|
37
|
+
</VARIABLE-ACCESS>
|
|
38
|
+
</DATA-SEND-POINTS>
|
|
39
|
+
<READ-LOCAL-VARIABLES>
|
|
40
|
+
<VARIABLE-ACCESS>
|
|
41
|
+
<SHORT-NAME>CurrentCounterValue3</SHORT-NAME>
|
|
42
|
+
<ACCESSED-VARIABLE>
|
|
43
|
+
<LOCAL-VARIABLE-REF DEST="VARIABLE-DATA-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/IB_SWC_CyclicCounter/CurrentCounterValue</LOCAL-VARIABLE-REF>
|
|
44
|
+
</ACCESSED-VARIABLE>
|
|
45
|
+
</VARIABLE-ACCESS>
|
|
46
|
+
</READ-LOCAL-VARIABLES>
|
|
47
|
+
<SERVER-CALL-POINTS>
|
|
48
|
+
<SYNCHRONOUS-SERVER-CALL-POINT>
|
|
49
|
+
<SHORT-NAME>CS_DETService_ReportError</SHORT-NAME>
|
|
50
|
+
<OPERATION-IREF>
|
|
51
|
+
<CONTEXT-R-PORT-REF DEST="R-PORT-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/R_CyclicCounterDet</CONTEXT-R-PORT-REF>
|
|
52
|
+
<TARGET-REQUIRED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION">/DemoApplication/PortInterfaces/DETService/ReportError</TARGET-REQUIRED-OPERATION-REF>
|
|
53
|
+
</OPERATION-IREF>
|
|
54
|
+
<TIMEOUT>0.0</TIMEOUT>
|
|
55
|
+
</SYNCHRONOUS-SERVER-CALL-POINT>
|
|
56
|
+
<SYNCHRONOUS-SERVER-CALL-POINT>
|
|
57
|
+
<SHORT-NAME>CS_EchoResult_SetCounterAndAdd</SHORT-NAME>
|
|
58
|
+
<OPERATION-IREF>
|
|
59
|
+
<CONTEXT-R-PORT-REF DEST="R-PORT-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/R_MyLED</CONTEXT-R-PORT-REF>
|
|
60
|
+
<TARGET-REQUIRED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION">/DemoApplication/PortInterfaces/If_DiscreteValueOutput/SetDiscreteValue</TARGET-REQUIRED-OPERATION-REF>
|
|
61
|
+
</OPERATION-IREF>
|
|
62
|
+
<TIMEOUT>0.0</TIMEOUT>
|
|
63
|
+
</SYNCHRONOUS-SERVER-CALL-POINT>
|
|
64
|
+
<SYNCHRONOUS-SERVER-CALL-POINT>
|
|
65
|
+
<SHORT-NAME>CS_UR_ComMUser_0_ComM_UserRequest</SHORT-NAME>
|
|
66
|
+
<OPERATION-IREF>
|
|
67
|
+
<CONTEXT-R-PORT-REF DEST="R-PORT-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/UR_ComMUser_0</CONTEXT-R-PORT-REF>
|
|
68
|
+
<TARGET-REQUIRED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION">/DemoApplication/PortInterfaces/ComM_UserRequest/RequestComMode</TARGET-REQUIRED-OPERATION-REF>
|
|
69
|
+
</OPERATION-IREF>
|
|
70
|
+
<TIMEOUT>0.0</TIMEOUT>
|
|
71
|
+
</SYNCHRONOUS-SERVER-CALL-POINT>
|
|
72
|
+
</SERVER-CALL-POINTS>
|
|
73
|
+
<SYMBOL>SWC_CyclicCounter_Cyclic</SYMBOL>
|
|
74
|
+
<WRITTEN-LOCAL-VARIABLES>
|
|
75
|
+
<VARIABLE-ACCESS>
|
|
76
|
+
<SHORT-NAME>CurrentCounterValue4</SHORT-NAME>
|
|
77
|
+
<ACCESSED-VARIABLE T="2020-08-03T07:59:25+02:00">
|
|
78
|
+
<LOCAL-VARIABLE-REF DEST="VARIABLE-DATA-PROTOTYPE">/DemoApplication/SwComponentTypes/SWC_CyclicCounter/IB_SWC_CyclicCounter/CurrentCounterValue</LOCAL-VARIABLE-REF>
|
|
79
|
+
</ACCESSED-VARIABLE>
|
|
80
|
+
</VARIABLE-ACCESS>
|
|
81
|
+
</WRITTEN-LOCAL-VARIABLES>
|
|
82
|
+
</RUNNABLE-ENTITY>
|
|
83
|
+
</RUNNABLES>
|
|
84
|
+
</SWC-INTERNAL-BEHAVIOR>
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
def test_data_receive_point_by_argument(self):
|
|
88
|
+
# prepare the XML content
|
|
89
|
+
element = ET.fromstring(self.xml_content)
|
|
90
|
+
document = AUTOSARDoc()
|
|
91
|
+
|
|
92
|
+
parser = ARXMLParser()
|
|
93
|
+
parser.nsmap = {"xmlns": ""}
|
|
94
|
+
|
|
95
|
+
behavior = SwcInternalBehavior(document, "Behavior")
|
|
96
|
+
parser.readSwcInternalBehaviorRunnables(element, behavior)
|
|
97
|
+
|
|
98
|
+
assert len(behavior.getRunnableEntities()) == 1
|
|
99
|
+
assert isinstance(behavior.getRunnableEntities()[0], RunnableEntity) is True
|
|
100
|
+
|
|
101
|
+
runnable_entity = behavior.getRunnableEntities()[0]
|
|
102
|
+
assert runnable_entity.getShortName() == "Cyclic"
|
|
103
|
+
assert runnable_entity.getMinimumStartInterval().getValue() == 0.0
|
|
104
|
+
assert runnable_entity.getCanBeInvokedConcurrently().getValue() is False
|
|
105
|
+
assert len(runnable_entity.getDataReceivePointByArguments()) == 1
|
|
106
|
+
|
|
107
|
+
drp_arg = runnable_entity.getDataReceivePointByArguments()[0]
|
|
108
|
+
assert drp_arg.getShortName() == "DRP_P_Special_EventMessage"
|
|
109
|
+
assert drp_arg.getAccessedVariableRef().getAutosarVariableIRef().getPortPrototypeRef().getDest() == "R-PORT-PROTOTYPE"
|
|
110
|
+
assert drp_arg.getAccessedVariableRef().getAutosarVariableIRef().getPortPrototypeRef().getValue() == "/DemoApplication/SwComponentTypes/SWC_CyclicCounter/R_SpecialHandling"
|
|
111
|
+
assert drp_arg.getAccessedVariableRef().getAutosarVariableIRef().getTargetDataPrototypeRef().getDest() == "VARIABLE-DATA-PROTOTYPE"
|
|
112
|
+
assert drp_arg.getAccessedVariableRef().getAutosarVariableIRef().getTargetDataPrototypeRef().getValue() == "/DemoApplication/PortInterfaces/If_Internal/EventMessage"
|
|
113
|
+
|
|
114
|
+
def test_written_local_variables(self):
|
|
115
|
+
# prepare the XML content
|
|
116
|
+
element = ET.fromstring(self.xml_content)
|
|
117
|
+
document = AUTOSARDoc()
|
|
118
|
+
|
|
119
|
+
parser = ARXMLParser()
|
|
120
|
+
parser.nsmap = {"xmlns": ""}
|
|
121
|
+
|
|
122
|
+
behavior = SwcInternalBehavior(document, "Behavior")
|
|
123
|
+
parser.readSwcInternalBehaviorRunnables(element, behavior)
|
|
124
|
+
|
|
125
|
+
assert len(behavior.getRunnableEntities()) == 1
|
|
126
|
+
assert isinstance(behavior.getRunnableEntities()[0], RunnableEntity) is True
|
|
127
|
+
|
|
128
|
+
runnable_entity = behavior.getRunnableEntities()[0]
|
|
129
|
+
assert len(runnable_entity.getWrittenLocalVariables()) == 1
|
|
130
|
+
|
|
131
|
+
written_var = runnable_entity.getWrittenLocalVariables()[0]
|
|
132
|
+
assert written_var.getShortName() == "CurrentCounterValue4"
|
|
133
|
+
assert written_var.getAccessedVariableRef().timestamp == "2020-08-03T07:59:25+02:00"
|
|
134
|
+
assert written_var.getAccessedVariableRef().getLocalVariableRef().getDest() == "VARIABLE-DATA-PROTOTYPE"
|
|
135
|
+
assert written_var.getAccessedVariableRef().getLocalVariableRef().getValue() == "/DemoApplication/SwComponentTypes/SWC_CyclicCounter/IB_SWC_CyclicCounter/CurrentCounterValue"
|
|
@@ -74,6 +74,8 @@ class AbstractARXMLWriter:
|
|
|
74
74
|
if numerical is not None:
|
|
75
75
|
child_element = ET.SubElement(element, key)
|
|
76
76
|
self.writeARObjectAttributes(child_element, numerical)
|
|
77
|
+
if numerical.getShortLabel() is not None:
|
|
78
|
+
child_element.attrib["SHORT-LABEL"] = numerical.getShortLabel()
|
|
77
79
|
child_element.text = numerical._text
|
|
78
80
|
|
|
79
81
|
def setChildElementOptionalIntegerValue(self, element: ET.Element, key: str, value: Integer):
|