armodel 1.3.0__py3-none-any.whl → 1.4.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.
Files changed (75) hide show
  1. armodel/__init__.py +2 -1
  2. armodel/cli/arxml_dump_cli.py +8 -6
  3. armodel/cli/arxml_format_cli.py +72 -0
  4. armodel/cli/connector2xlsx_cli.py +75 -0
  5. armodel/cli/connector_update_cli.py +77 -0
  6. armodel/cli/swc_list_cli.py +2 -2
  7. armodel/data_models/__init__.py +0 -0
  8. armodel/data_models/sw_connector.py +22 -0
  9. armodel/lib/__init__.py +1 -1
  10. armodel/lib/sw_component.py +34 -0
  11. armodel/models/__init__.py +8 -2
  12. armodel/models/annotation.py +20 -0
  13. armodel/models/ar_object.py +184 -0
  14. armodel/models/ar_package.py +144 -14
  15. armodel/models/ar_ref.py +74 -8
  16. armodel/models/bsw_module_template.py +97 -25
  17. armodel/models/calibration.py +119 -0
  18. armodel/models/common_structure.py +203 -36
  19. armodel/models/communication.py +17 -0
  20. armodel/models/data_def_properties.py +16 -0
  21. armodel/models/data_dictionary.py +46 -9
  22. armodel/models/data_prototype.py +24 -5
  23. armodel/models/datatype.py +86 -19
  24. armodel/models/end_to_end_protection.py +67 -0
  25. armodel/models/general_structure.py +72 -17
  26. armodel/models/global_constraints.py +40 -0
  27. armodel/models/implementation.py +80 -32
  28. armodel/models/m2_msr.py +82 -6
  29. armodel/models/multilanguage_data.py +42 -0
  30. armodel/models/per_instance_memory.py +14 -0
  31. armodel/models/port_interface.py +27 -4
  32. armodel/models/port_prototype.py +48 -23
  33. armodel/models/record_layout.py +118 -0
  34. armodel/models/service_mapping.py +11 -0
  35. armodel/models/service_needs.py +48 -0
  36. armodel/models/sw_component.py +257 -43
  37. armodel/models/unit.py +14 -0
  38. armodel/parser/abstract_arxml_parser.py +248 -0
  39. armodel/parser/arxml_parser.py +1550 -648
  40. armodel/parser/connector_xlsx_parser.py +190 -0
  41. armodel/parser/excel_parser.py +18 -0
  42. armodel/report/__init__.py +1 -0
  43. armodel/report/connector_xls_report.py +76 -0
  44. armodel/report/excel_report.py +42 -0
  45. armodel/tests/__init__.py +0 -0
  46. armodel/tests/test_armodel/__init__.py +0 -0
  47. armodel/tests/test_armodel/models/__init__.py +0 -0
  48. armodel/tests/test_armodel/models/test_ar_object.py +152 -0
  49. armodel/tests/test_armodel/models/test_ar_package.py +294 -0
  50. armodel/tests/test_armodel/models/test_ar_ref.py +74 -0
  51. armodel/tests/test_armodel/models/test_bsw_module_template.py +46 -0
  52. armodel/tests/test_armodel/models/test_common_structure.py +73 -0
  53. armodel/tests/test_armodel/models/test_data_dictionary.py +29 -0
  54. armodel/tests/test_armodel/models/test_data_prototype.py +86 -0
  55. armodel/tests/test_armodel/models/test_datatype.py +239 -0
  56. armodel/tests/test_armodel/models/test_general_structure.py +50 -0
  57. armodel/tests/test_armodel/models/test_implementation.py +26 -0
  58. armodel/tests/test_armodel/models/test_m2_msr.py +77 -0
  59. armodel/tests/test_armodel/models/test_port_interface.py +198 -0
  60. armodel/tests/test_armodel/models/test_port_prototype.py +14 -0
  61. armodel/tests/test_armodel/parser/__init__.py +0 -0
  62. armodel/tests/test_armodel/parser/test_arxml_parser.py +15 -0
  63. armodel/tests/test_armodel/parser/test_parse_bswmd.py +192 -0
  64. armodel/tests/test_armodel/parser/test_sw_components.py +93 -0
  65. armodel/writer/__init__.py +1 -0
  66. armodel/writer/abstract_arxml_writer.py +123 -0
  67. armodel/writer/arxml_writer.py +1755 -0
  68. {armodel-1.3.0.dist-info → armodel-1.4.3.dist-info}/METADATA +124 -4
  69. armodel-1.4.3.dist-info/RECORD +78 -0
  70. armodel-1.4.3.dist-info/entry_points.txt +7 -0
  71. armodel-1.3.0.dist-info/RECORD +0 -31
  72. armodel-1.3.0.dist-info/entry_points.txt +0 -4
  73. {armodel-1.3.0.dist-info → armodel-1.4.3.dist-info}/LICENSE +0 -0
  74. {armodel-1.3.0.dist-info → armodel-1.4.3.dist-info}/WHEEL +0 -0
  75. {armodel-1.3.0.dist-info → armodel-1.4.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,239 @@
1
+ import pytest
2
+
3
+ from .... import AUTOSAR
4
+ from ....models import datatype
5
+ from ....models.common_structure import ImplementationDataTypeElement
6
+ from ....models.data_prototype import ApplicationRecordElement
7
+ from ....models.datatype import AbstractImplementationDataType, ApplicationArrayDataType, ApplicationCompositeDataType, ApplicationDataType, ApplicationPrimitiveDataType, ApplicationRecordDataType, AtpType, AutosarDataType, BaseType, DataTypeMap, DataTypeMappingSet, ImplementationDataType, ImplementationProps, SymbolProps
8
+ from ....models.datatype import BaseTypeDirectDefinition, SwBaseType
9
+ from ....models.general_structure import ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
10
+
11
+ class Test_M2_AUTOSARTemplates_CommonStructure_Implementation:
12
+ def test_ImplementationProps(self):
13
+ with pytest.raises(NotImplementedError) as err:
14
+ document = AUTOSAR.getInstance()
15
+ ar_root = document.createARPackage("AUTOSAR")
16
+ ImplementationProps(ar_root, "ImplementationProps")
17
+ assert(str(err.value) == "ImplementationProps is an abstract class.")
18
+
19
+ def test_SymbolProps(self):
20
+ document = AUTOSAR.getInstance()
21
+ ar_root = document.createARPackage("AUTOSAR")
22
+ prototype = SymbolProps(ar_root, "SymbolProps")
23
+
24
+ assert(isinstance(prototype, ARObject))
25
+ assert(isinstance(prototype, ImplementationProps))
26
+ assert(isinstance(prototype, Referrable))
27
+ assert(isinstance(prototype, SymbolProps))
28
+
29
+ assert(prototype.parent == ar_root)
30
+ assert(prototype.short_name == "SymbolProps")
31
+ assert(prototype.symbol == "")
32
+
33
+ class Test_M2_MSR_AsamHdo_BaseTypes:
34
+ def test_BaseType(self):
35
+ with pytest.raises(NotImplementedError) as err:
36
+ document = AUTOSAR.getInstance()
37
+ ar_root = document.createARPackage("AUTOSAR")
38
+ BaseType(ar_root, "BaseType")
39
+ assert(str(err.value) == "BaseType is an abstract class.")
40
+
41
+ def test_SwBaseType(self):
42
+ document = AUTOSAR.getInstance()
43
+ ar_root = document.createARPackage("AUTOSAR")
44
+ base_type = SwBaseType(ar_root, "SwBaseType")
45
+
46
+ assert(isinstance(base_type, ARElement))
47
+ assert(isinstance(base_type, ARObject))
48
+ assert(isinstance(base_type, CollectableElement))
49
+ assert(isinstance(base_type, Identifiable))
50
+ assert(isinstance(base_type, MultilanguageReferrable))
51
+ assert(isinstance(base_type, PackageableElement))
52
+ assert(isinstance(base_type, Referrable))
53
+ assert(isinstance(base_type, SwBaseType))
54
+
55
+ assert(base_type.parent == ar_root)
56
+ assert(base_type.short_name == "SwBaseType")
57
+ assert(isinstance(base_type.baseTypeDefinition, BaseTypeDirectDefinition))
58
+
59
+ class Test_M2_AUTOSARTemplates_SWComponentTemplate_Datatype_Datatypes:
60
+ def test_AtpType(self):
61
+ with pytest.raises(NotImplementedError) as err:
62
+ document = AUTOSAR.getInstance()
63
+ ar_root = document.createARPackage("AUTOSAR")
64
+ AtpType(ar_root, "AtpType")
65
+ assert(str(err.value) == "AtpType is an abstract class.")
66
+
67
+ def test_AutosarDataType(self):
68
+ with pytest.raises(NotImplementedError) as err:
69
+ document = AUTOSAR.getInstance()
70
+ ar_root = document.createARPackage("AUTOSAR")
71
+ AutosarDataType(ar_root, "AutosarDataType")
72
+ assert(str(err.value) == "AutosarDataType is an abstract class.")
73
+
74
+ def test_ApplicationDataType(self):
75
+ with pytest.raises(NotImplementedError) as err:
76
+ document = AUTOSAR.getInstance()
77
+ ar_root = document.createARPackage("AUTOSAR")
78
+ ApplicationDataType(ar_root, "ApplicationDataType")
79
+ assert(str(err.value) == "ApplicationDataType is an abstract class.")
80
+
81
+ def test_ApplicationPrimitiveDataType(self):
82
+ document = AUTOSAR.getInstance()
83
+ ar_root = document.createARPackage("AUTOSAR")
84
+ data_type = ApplicationPrimitiveDataType(ar_root, "ApplicationPrimitiveDataType")
85
+
86
+ assert(isinstance(data_type, ARElement))
87
+ assert(isinstance(data_type, ARObject))
88
+ # assert(isinstance(data_type, AtpBlueprint))
89
+ # assert(isinstance(data_type, AtpBlueprintable))
90
+ # assert(isinstance(data_type, AtpClassifier))
91
+ assert(isinstance(data_type, AtpType))
92
+ assert(isinstance(data_type, AutosarDataType))
93
+ assert(isinstance(data_type, CollectableElement))
94
+ assert(isinstance(data_type, Identifiable))
95
+ assert(isinstance(data_type, MultilanguageReferrable))
96
+ assert(isinstance(data_type, PackageableElement))
97
+ assert(isinstance(data_type, Referrable))
98
+ assert(isinstance(data_type, ApplicationPrimitiveDataType))
99
+
100
+ assert(data_type.parent == ar_root)
101
+ assert(data_type.short_name == "ApplicationPrimitiveDataType")
102
+ assert(data_type.sw_data_def_props == None)
103
+
104
+ def test_ApplicationCompositeDataType(self):
105
+ with pytest.raises(NotImplementedError) as err:
106
+ document = AUTOSAR.getInstance()
107
+ ar_root = document.createARPackage("AUTOSAR")
108
+ ApplicationCompositeDataType(ar_root, "ApplicationCompositeDataType")
109
+ assert(str(err.value) == "ApplicationCompositeDataType is an abstract class.")
110
+
111
+ def test_ApplicationArrayDataType(self):
112
+ document = AUTOSAR.getInstance()
113
+ ar_root = document.createARPackage("AUTOSAR")
114
+ data_type = ApplicationArrayDataType(ar_root, "ApplicationArrayDataType")
115
+
116
+ assert(isinstance(data_type, ARElement))
117
+ assert(isinstance(data_type, ARObject))
118
+ assert(isinstance(data_type, ApplicationDataType))
119
+ # assert(isinstance(data_type, AtpBlueprint))
120
+ # assert(isinstance(data_type, AtpBlueprintable))
121
+ # assert(isinstance(data_type, AtpClassifier))
122
+ assert(isinstance(data_type, AtpType))
123
+ assert(isinstance(data_type, AutosarDataType))
124
+ assert(isinstance(data_type, CollectableElement))
125
+ assert(isinstance(data_type, Identifiable))
126
+ assert(isinstance(data_type, MultilanguageReferrable))
127
+ assert(isinstance(data_type, PackageableElement))
128
+ assert(isinstance(data_type, Referrable))
129
+ assert(isinstance(data_type, ApplicationArrayDataType))
130
+
131
+ assert(data_type.parent == ar_root)
132
+ assert(data_type.short_name == "ApplicationArrayDataType")
133
+ assert(data_type.dynamic_array_size_profile == None)
134
+ assert(data_type.element == None)
135
+
136
+ def test_ApplicationRecordDataType(self):
137
+ document = AUTOSAR.getInstance()
138
+ ar_root = document.createARPackage("AUTOSAR")
139
+ data_type = ApplicationRecordDataType(ar_root, "ApplicationRecordDataType")
140
+
141
+ assert(isinstance(data_type, ARElement))
142
+ assert(isinstance(data_type, ARObject))
143
+ assert(isinstance(data_type, ApplicationDataType))
144
+ # assert(isinstance(data_type, AtpBlueprint))
145
+ # assert(isinstance(data_type, AtpBlueprintable))
146
+ # assert(isinstance(data_type, AtpClassifier))
147
+ assert(isinstance(data_type, AtpType))
148
+ assert(isinstance(data_type, AutosarDataType))
149
+ assert(isinstance(data_type, CollectableElement))
150
+ assert(isinstance(data_type, Identifiable))
151
+ assert(isinstance(data_type, MultilanguageReferrable))
152
+ assert(isinstance(data_type, PackageableElement))
153
+ assert(isinstance(data_type, Referrable))
154
+ assert(isinstance(data_type, ApplicationRecordDataType))
155
+
156
+ assert(data_type.parent == ar_root)
157
+ assert(data_type.short_name == "ApplicationRecordDataType")
158
+
159
+ element = data_type.createApplicationRecordElement("element")
160
+ assert(isinstance(element, ApplicationRecordElement))
161
+ assert(element.short_name == "element")
162
+
163
+ def test_DataTypeMap(self):
164
+ data_type_map = DataTypeMap()
165
+
166
+ assert(isinstance(data_type_map, ARObject))
167
+ assert(isinstance(data_type_map, DataTypeMap))
168
+
169
+ assert(data_type_map.application_data_type_ref == None)
170
+ assert(data_type_map.implementation_data_type_ref == None)
171
+
172
+ def test_DataTypeMappingSet(self):
173
+ document = AUTOSAR.getInstance()
174
+ ar_root = document.createARPackage("AUTOSAR")
175
+ data_type_mapping_set = DataTypeMappingSet(ar_root, "DataTypeMappingSet")
176
+
177
+ assert(isinstance(data_type_mapping_set, ARElement))
178
+ assert(isinstance(data_type_mapping_set, ARObject))
179
+ # assert(isinstance(data_type_mapping_set, AtpBlueprint))
180
+ # assert(isinstance(data_type_mapping_set, AtpBlueprintable))
181
+ assert(isinstance(data_type_mapping_set, CollectableElement))
182
+ assert(isinstance(data_type_mapping_set, Identifiable))
183
+ assert(isinstance(data_type_mapping_set, MultilanguageReferrable))
184
+ assert(isinstance(data_type_mapping_set, PackageableElement))
185
+ assert(isinstance(data_type_mapping_set, Referrable))
186
+ assert(isinstance(data_type_mapping_set, DataTypeMappingSet))
187
+
188
+ assert(data_type_mapping_set.parent == ar_root)
189
+ assert(data_type_mapping_set.short_name == "DataTypeMappingSet")
190
+ assert(len(data_type_mapping_set._dataTypeMaps) == 0)
191
+
192
+ data_type_map = DataTypeMap()
193
+ data_type_mapping_set.addDataTypeMap(data_type_map)
194
+ assert(len(data_type_mapping_set.getDataTypeMaps()) == 1)
195
+ assert(data_type_mapping_set.getDataTypeMaps()[0] == data_type_map)
196
+
197
+
198
+
199
+ class Test_M2_AUTOSARTemplates_CommonStructure_ImplementationDataTypes:
200
+ def test_AbstractImplementationDataType(self):
201
+ with pytest.raises(NotImplementedError) as err:
202
+ document = AUTOSAR.getInstance()
203
+ ar_root = document.createARPackage("AUTOSAR")
204
+ AbstractImplementationDataType(ar_root, "AbstractImplementationDataType")
205
+ assert(str(err.value) == "AbstractImplementationDataType is an abstract class.")
206
+
207
+ def test_ImplementationDataType(self):
208
+ document = AUTOSAR.getInstance()
209
+ ar_root = document.createARPackage("AUTOSAR")
210
+ data_type = ImplementationDataType(ar_root, "ImplementationDataType")
211
+
212
+ assert(isinstance(data_type, ARElement))
213
+ assert(isinstance(data_type, ARObject))
214
+ assert(isinstance(data_type, AbstractImplementationDataType,))
215
+ # assert(isinstance(data_type, AtpBlueprint))
216
+ # assert(isinstance(data_type, AtpBlueprintable))
217
+ # assert(isinstance(data_type, AtpClassifier))
218
+ assert(isinstance(data_type, AtpType))
219
+ assert(isinstance(data_type, AutosarDataType))
220
+ assert(isinstance(data_type, CollectableElement))
221
+ assert(isinstance(data_type, Identifiable))
222
+ assert(isinstance(data_type, MultilanguageReferrable))
223
+ assert(isinstance(data_type, PackageableElement))
224
+ assert(isinstance(data_type, Referrable))
225
+ assert(isinstance(data_type, ImplementationDataType))
226
+
227
+ assert(data_type.parent == ar_root)
228
+ assert(data_type.short_name == "ImplementationDataType")
229
+ assert(data_type.sub_elements == [])
230
+ assert(data_type.symbol_props == None)
231
+ assert(data_type._type_emitter == None)
232
+
233
+ element = data_type.createImplementationDataTypeElement("ImplementationDataTypeElement")
234
+ assert(isinstance(element, ImplementationDataTypeElement))
235
+ assert(element.short_name == "ImplementationDataTypeElement")
236
+
237
+ assert(len(data_type.getImplementationDataTypeElements()) == 1)
238
+ assert(data_type.getImplementationDataTypeElements()[0] == element)
239
+
@@ -0,0 +1,50 @@
1
+ import pytest
2
+
3
+ from ....models.ar_package import AUTOSAR
4
+ from ....models.general_structure import ARElement, ARObject, AtpFeature, CollectableElement, Identifiable, Limit, MultilanguageReferrable, PackageableElement, Referrable
5
+
6
+ class TestGeneralStructure:
7
+ def test_ar_object(self):
8
+ with pytest.raises(NotImplementedError) as err:
9
+ ARObject()
10
+ assert(str(err.value) == "ARObject is an abstract class.")
11
+
12
+ def test_Referrable(self):
13
+ with pytest.raises(NotImplementedError) as err:
14
+ Referrable(AUTOSAR.getInstance(), "ar_referrable")
15
+ assert(str(err.value) == "Referrable is an abstract class.")
16
+
17
+ def test_MultilanguageReferrable(self):
18
+ with pytest.raises(NotImplementedError) as err:
19
+ MultilanguageReferrable(AUTOSAR.getInstance(), "MultilanguageReferrable")
20
+ assert(str(err.value) == "MultilanguageReferrable is an abstract class.")
21
+
22
+ def test_CollectableElement(self):
23
+ with pytest.raises(NotImplementedError) as err:
24
+ CollectableElement()
25
+ assert(str(err.value) == "CollectableElement is an abstract class.")
26
+
27
+ def test_Identifiable(self):
28
+ with pytest.raises(NotImplementedError) as err:
29
+ Identifiable(AUTOSAR.getInstance(), "ar_identifiable")
30
+ assert(str(err.value) == "Identifiable is an abstract class.")
31
+
32
+ def test_AtpFeature(self):
33
+ with pytest.raises(NotImplementedError) as err:
34
+ AtpFeature(AUTOSAR.getInstance(), "AtpFeature")
35
+ assert(str(err.value) == "AtpFeature is an abstract class.")
36
+
37
+ def test_packageable_element(self):
38
+ with pytest.raises(NotImplementedError) as err:
39
+ PackageableElement(AUTOSAR.getInstance(), "ar_packageable_element")
40
+ assert(str(err.value) == "PackageableElement is an abstract class.")
41
+
42
+ def test_ar_element(self):
43
+ with pytest.raises(NotImplementedError) as err:
44
+ ARElement(AUTOSAR.getInstance(), "ar_element")
45
+ assert(str(err.value) == "ARElement is an abstract class.")
46
+
47
+ def test_limit(self):
48
+ limit = Limit()
49
+ assert(limit.value == None)
50
+ assert(limit.intervalType == None)
@@ -0,0 +1,26 @@
1
+
2
+ from ....models.implementation import AutosarEngineeringObject, Code
3
+ from ....models.ar_package import AUTOSAR
4
+
5
+
6
+ class TestImplementation:
7
+ def test_code(self):
8
+ document = AUTOSAR.getInstance()
9
+ ar_root = document.createARPackage("AUTOSAR")
10
+ code = Code(ar_root, "code")
11
+ assert(code.short_name == "code")
12
+
13
+ data = [
14
+ ["Autosar::include::BswM.h", "SWHDR"],
15
+ ["Autosar::src::BswM.c", "SWSRC"]
16
+ ]
17
+
18
+ for item in data:
19
+ engineering_obj = AutosarEngineeringObject()
20
+ engineering_obj.setShortLabel(item[0])\
21
+ .setCategory(item[1])
22
+ code.addArtifactDescriptor(engineering_obj)
23
+
24
+ assert(len(code.getArtifactDescriptors()) == 2)
25
+ assert(len(code.getArtifactDescriptors("SWHDR")) == 1)
26
+ assert(len(code.getArtifactDescriptors("SWSRC")) == 1)
@@ -0,0 +1,77 @@
1
+ import pytest
2
+
3
+ from .... import AUTOSAR
4
+ from ....models.general_structure import ARObject
5
+ from ....models.m2_msr import Compu, CompuConst, CompuConstContent, CompuConstNumericContent, CompuConstTextContent, CompuContent, CompuScale, CompuScales
6
+
7
+ class Test_M2_MSR_AsamHdo_ComputationMethod:
8
+ def test_CompuContent(self):
9
+ with pytest.raises(NotImplementedError) as err:
10
+ CompuContent()
11
+ assert(str(err.value) == "CompuContent is an abstract class.")
12
+
13
+ def test_Compu(self):
14
+ compu = Compu()
15
+
16
+ assert(isinstance(compu, ARObject))
17
+ assert(isinstance(compu, Compu))
18
+
19
+ assert(compu.compu_content == None)
20
+ assert(compu.compu_default_value == None)
21
+
22
+ def test_CompuConstContent(self):
23
+ with pytest.raises(NotImplementedError) as err:
24
+ CompuConstContent()
25
+ assert(str(err.value) == "CompuConstContent is an abstract class.")
26
+
27
+ def test_CompuConstTextContent(self):
28
+ content = CompuConstTextContent()
29
+
30
+ assert(isinstance(content, ARObject))
31
+ assert(isinstance(content, CompuConstContent))
32
+ assert(isinstance(content, CompuConstTextContent))
33
+
34
+ assert(content.vt == None)
35
+
36
+ def test_CompuConstNumericContent(self):
37
+ content = CompuConstNumericContent()
38
+
39
+ assert(isinstance(content, ARObject))
40
+ assert(isinstance(content, CompuConstContent))
41
+ assert(isinstance(content, CompuConstNumericContent))
42
+
43
+ assert(content.v == None)
44
+
45
+ def test_CompuConst(self):
46
+ compu_const = CompuConst()
47
+
48
+ assert(isinstance(compu_const, ARObject))
49
+ assert(isinstance(compu_const, CompuConst))
50
+
51
+ assert(compu_const.compu_const_content_type == None)
52
+
53
+ def test_CompuScale(self):
54
+ compu_scale = CompuScale()
55
+
56
+ assert(isinstance(compu_scale, ARObject))
57
+ assert(isinstance(compu_scale, CompuScale))
58
+
59
+ assert(compu_scale.compu_content == None)
60
+ assert(compu_scale.lowerLimit == None)
61
+ assert(compu_scale.upperLimit == None)
62
+ assert(compu_scale.compuInverseValue == None)
63
+ assert(compu_scale.compuScaleContents == None)
64
+
65
+ def test_CompuScales(self):
66
+ compu_scales = CompuScales()
67
+
68
+ assert(isinstance(compu_scales, ARObject))
69
+ assert(isinstance(compu_scales, CompuScales))
70
+
71
+ assert(len(compu_scales.compu_scales) == 0)
72
+
73
+ compu_scale = CompuScale()
74
+ compu_scales.addCompuScale(compu_scale)
75
+
76
+ assert(len(compu_scales.getCompuScales()) == 1)
77
+ assert(compu_scales.getCompuScales()[0] == compu_scale)
@@ -0,0 +1,198 @@
1
+ import pytest
2
+
3
+ from ....models.ar_package import AUTOSAR
4
+ from ....models.ar_ref import RefType
5
+ from ....models.data_prototype import AtpPrototype, AutosarDataPrototype, DataPrototype, VariableDataPrototype
6
+ from ....models.datatype import AtpType
7
+ from ....models.general_structure import ARElement, ARObject, AtpFeature, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable
8
+ from ....models.port_interface import ApplicationError, ArgumentDataPrototype, ClientServerInterface, ClientServerOperation, DataInterface, NvDataInterface, ParameterInterface, PortInterface, SenderReceiverInterface
9
+
10
+
11
+ class Test_M2_AUTOSARTemplates_SWComponentTemplate_PortInterface:
12
+
13
+ def test_PortInterface(self):
14
+ with pytest.raises(NotImplementedError) as err:
15
+ PortInterface(AUTOSAR.getInstance(), "PortInterface")
16
+ assert(str(err.value) == "PortInterface is an abstract class.")
17
+
18
+ def test_DataInterface(self):
19
+ with pytest.raises(NotImplementedError) as err:
20
+ DataInterface(AUTOSAR.getInstance(), "DataInterface")
21
+ assert(str(err.value) == "DataInterface is an abstract class.")
22
+
23
+ def test_NvDataInterface(self):
24
+ document = AUTOSAR.getInstance()
25
+ ar_root = document.createARPackage("AUTOSAR")
26
+ data_if = NvDataInterface(ar_root, "NvDataInterface")
27
+
28
+ assert(isinstance(data_if, ARElement))
29
+ assert(isinstance(data_if, ARObject))
30
+ # assert(isinstance(sr, AtpBlueprint))
31
+ # assert(isinstance(sr, AtpBlueprintable))
32
+ # assert(isinstance(sr, AtpClassifier))
33
+ assert(isinstance(data_if, AtpType))
34
+ assert(isinstance(data_if, CollectableElement))
35
+ assert(isinstance(data_if, DataInterface))
36
+ assert(isinstance(data_if, Identifiable))
37
+ assert(isinstance(data_if, MultilanguageReferrable))
38
+ assert(isinstance(data_if, PackageableElement))
39
+ assert(isinstance(data_if, PortInterface))
40
+ assert(isinstance(data_if, Referrable))
41
+ assert(isinstance(data_if, NvDataInterface))
42
+
43
+ assert(data_if.parent == ar_root)
44
+ assert(data_if.short_name == "NvDataInterface")
45
+
46
+ def test_ParameterInterface(self):
47
+ document = AUTOSAR.getInstance()
48
+ ar_root = document.createARPackage("AUTOSAR")
49
+ data_if = ParameterInterface(ar_root, "ParameterInterface")
50
+
51
+ assert(isinstance(data_if, ARElement))
52
+ assert(isinstance(data_if, ARObject))
53
+ # assert(isinstance(sr, AtpBlueprint))
54
+ # assert(isinstance(sr, AtpBlueprintable))
55
+ # assert(isinstance(sr, AtpClassifier))
56
+ assert(isinstance(data_if, AtpType))
57
+ assert(isinstance(data_if, CollectableElement))
58
+ assert(isinstance(data_if, DataInterface))
59
+ assert(isinstance(data_if, Identifiable))
60
+ assert(isinstance(data_if, MultilanguageReferrable))
61
+ assert(isinstance(data_if, PackageableElement))
62
+ assert(isinstance(data_if, PortInterface))
63
+ assert(isinstance(data_if, Referrable))
64
+ assert(isinstance(data_if, ParameterInterface))
65
+
66
+ assert(data_if.parent == ar_root)
67
+ assert(data_if.short_name == "ParameterInterface")
68
+
69
+ def test_SenderReceiverInterface(self):
70
+ document = AUTOSAR.getInstance()
71
+ ar_root = document.createARPackage("AUTOSAR")
72
+ sr_if = SenderReceiverInterface(ar_root, "sr_if")
73
+
74
+ assert(isinstance(sr_if, ARElement))
75
+ assert(isinstance(sr_if, ARObject))
76
+ # assert(isinstance(sr, AtpBlueprint))
77
+ # assert(isinstance(sr, AtpBlueprintable))
78
+ # assert(isinstance(sr, AtpClassifier))
79
+ assert(isinstance(sr_if, AtpType))
80
+ assert(isinstance(sr_if, CollectableElement))
81
+ assert(isinstance(sr_if, DataInterface))
82
+ assert(isinstance(sr_if, Identifiable))
83
+ assert(isinstance(sr_if, MultilanguageReferrable))
84
+ assert(isinstance(sr_if, PackageableElement))
85
+ assert(isinstance(sr_if, PortInterface))
86
+ assert(isinstance(sr_if, Referrable))
87
+ assert(isinstance(sr_if, SenderReceiverInterface))
88
+
89
+ assert(sr_if.short_name == "sr_if")
90
+ assert(sr_if.parent == ar_root)
91
+ assert(len(sr_if.getDataElements()) == 0)
92
+
93
+ element = sr_if.createDataElement("element")
94
+ assert(isinstance(element, VariableDataPrototype))
95
+ assert(element.short_name == "element")
96
+ assert(len(sr_if.getDataElements()) == 1)
97
+
98
+ element2 = sr_if.getDataElement("element")
99
+ assert(element == element2)
100
+
101
+ with pytest.raises(IndexError) as err:
102
+ sr_if.getDataElement("non_exist_element")
103
+ assert(str(err.value) == "data element <non_exist_element> can not be found.")
104
+
105
+ def test_ArgumentDataPrototype(self):
106
+ document = AUTOSAR.getInstance()
107
+ ar_root = document.createARPackage("AUTOSAR")
108
+ prototype = ArgumentDataPrototype(ar_root, "ArgumentDataPrototype")
109
+
110
+ assert(isinstance(prototype, ARObject))
111
+ assert(isinstance(prototype, AtpFeature))
112
+ assert(isinstance(prototype, AtpPrototype))
113
+ assert(isinstance(prototype, AutosarDataPrototype))
114
+ assert(isinstance(prototype, DataPrototype))
115
+ assert(isinstance(prototype, Identifiable))
116
+ assert(isinstance(prototype, MultilanguageReferrable))
117
+ assert(isinstance(prototype, Referrable))
118
+ assert(isinstance(prototype, ArgumentDataPrototype))
119
+
120
+ assert(prototype.parent == ar_root)
121
+ assert(prototype.short_name == "ArgumentDataPrototype")
122
+ assert(prototype.direction == "")
123
+ assert(prototype.server_argument_impl_policy == "")
124
+
125
+ def test_ApplicationError(self):
126
+ document = AUTOSAR.getInstance()
127
+ ar_root = document.createARPackage("AUTOSAR")
128
+ app_error = ApplicationError(ar_root, "ApplicationError")
129
+
130
+ assert(isinstance(app_error, ARObject))
131
+ assert(isinstance(app_error, Identifiable))
132
+ assert(isinstance(app_error, MultilanguageReferrable))
133
+ assert(isinstance(app_error, Referrable))
134
+ assert(isinstance(app_error, ApplicationError))
135
+
136
+ assert(app_error.parent == ar_root)
137
+ assert(app_error.short_name == "ApplicationError")
138
+
139
+ def test_ClientServerOperation(self):
140
+ document = AUTOSAR.getInstance()
141
+ ar_root = document.createARPackage("AUTOSAR")
142
+ operation = ClientServerOperation(ar_root, "client_server_operation")
143
+ assert(isinstance(operation, ARObject))
144
+ # assert(isinstance(operation, AtpClassifier))
145
+ assert(isinstance(operation, AtpFeature))
146
+ assert(isinstance(operation, Identifiable))
147
+ assert(isinstance(operation, MultilanguageReferrable))
148
+ assert(isinstance(operation, Referrable))
149
+ assert(isinstance(operation, ClientServerOperation))
150
+ assert(operation.short_name == "client_server_operation")
151
+
152
+ prototype = ArgumentDataPrototype(ar_root, "argument_data_prototype1")
153
+ operation.addArgumentDataPrototype(prototype)
154
+ assert(prototype.short_name == "argument_data_prototype1")
155
+
156
+ assert(len(operation.getArgumentDataPrototypes()) == 1)
157
+ assert(operation.getArgumentDataPrototypes()[0] == prototype)
158
+
159
+ refType = RefType()
160
+ refType.dest = "APPLICATION-ERROR"
161
+ refType.value = "/AUTOSAR_NvM/PortInterfaces/NvMService/E_NOT_OK"
162
+ operation.addPossibleErrorRef(refType)
163
+
164
+ assert(len(operation.getPossbileErrorRefs()) == 1)
165
+ assert(operation.getPossbileErrorRefs()[0] == refType)
166
+
167
+ def test_ClientServerInterface(self):
168
+ document = AUTOSAR.getInstance()
169
+ ar_root = document.createARPackage("AUTOSAR")
170
+ cs_if = ClientServerInterface(ar_root, "client_server_interface")
171
+ assert(isinstance(cs_if, ARObject))
172
+ assert(isinstance(cs_if, ARElement))
173
+ # assert(isinstance(operation, AtpBlueprint))
174
+ # assert(isinstance(operation, AtpBlueprintable))
175
+ # assert(isinstance(operation, AtpClassifier))
176
+ assert(isinstance(cs_if, AtpType))
177
+ assert(isinstance(cs_if, CollectableElement))
178
+ assert(isinstance(cs_if, Identifiable))
179
+ assert(isinstance(cs_if, MultilanguageReferrable))
180
+ assert(isinstance(cs_if, PackageableElement))
181
+ assert(isinstance(cs_if, PortInterface))
182
+ assert(isinstance(cs_if, Referrable))
183
+
184
+ element = cs_if.createOperation("operation")
185
+ assert(isinstance(element, ClientServerOperation))
186
+ assert(element.short_name == "operation")
187
+ assert(len(cs_if.getOperations()) == 1)
188
+
189
+ element2 = cs_if.getOperations()[0]
190
+ assert(element == element2)
191
+
192
+ element = cs_if.createApplicationError("error")
193
+ assert(isinstance(element, ApplicationError))
194
+ assert(element.short_name == "error")
195
+ assert(len(cs_if.getPossibleErrors()) == 1)
196
+
197
+ element2 = cs_if.getPossibleErrors()[0]
198
+ assert(element == element2)
@@ -0,0 +1,14 @@
1
+ import pytest
2
+
3
+ from ....models.port_prototype import PPortComSpec, RPortComSpec
4
+
5
+ class Test_PortProtype:
6
+ def test_PPortComSpec(self):
7
+ with pytest.raises(NotImplementedError) as err:
8
+ PPortComSpec()
9
+ assert(str(err.value) == "PPortComSpec is an abstract class.")
10
+
11
+ def test_RPortComSpec(self):
12
+ with pytest.raises(NotImplementedError) as err:
13
+ RPortComSpec()
14
+ assert(str(err.value) == "RPortComSpec is an abstract class.")
File without changes
@@ -0,0 +1,15 @@
1
+
2
+ from ....parser.arxml_parser import ARXMLParser
3
+
4
+
5
+ class TestARXMLParser:
6
+ def test_convert_find_key(self):
7
+ parser = ARXMLParser()
8
+ assert(parser.convert_find_key("ELEMENTS") == "xmlns:ELEMENTS")
9
+ assert(parser.convert_find_key("ELEMENTS/*") == "xmlns:ELEMENTS/*")
10
+ assert(parser.convert_find_key("./ELEMENTS") == "./xmlns:ELEMENTS")
11
+ assert(parser.convert_find_key("./ELEMENTS/*") == "./xmlns:ELEMENTS/*")
12
+ assert(parser.convert_find_key("A/B") == "xmlns:A/xmlns:B")
13
+ assert(parser.convert_find_key("A/B/*") == "xmlns:A/xmlns:B/*")
14
+ assert(parser.convert_find_key("./A/B") == "./xmlns:A/xmlns:B")
15
+ assert(parser.convert_find_key("./A/B/*") == "./xmlns:A/xmlns:B/*")