py-eb-model 1.1.5__py3-none-any.whl → 1.1.7__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.
@@ -49,24 +49,37 @@ class OsXdmXlsWriter(ExcelReporter):
49
49
  def write_os_isrs(self, doc: EBModel):
50
50
  sheet = self.wb.create_sheet("OsIsr", 1)
51
51
 
52
- title_row = ["Name", "OsApplication", "OsIsrCategory", "OsStacksize", "OsIsrPriority", "OsIsrVector"]
52
+ title_row = [
53
+ "Name", "OsApplication", "OsIsrCategory", "OsStacksize", "OsIsrPriority",
54
+ "OsIsrVector", "MkMemoryRegion"]
53
55
  self.write_title_row(sheet, title_row)
54
56
 
55
57
  row = 2
56
58
  for os_isr in doc.getOs().getOsIsrList():
57
- self.write_cell(sheet, row, 1, os_isr.getName())
59
+ self.write_cell(sheet, row, 1, os_isr.getName(), {'alignment': Alignment(vertical="top")})
58
60
  os_app = doc.getOs().getOsIsrOsApplication(os_isr.getName())
59
61
  if os_app is not None:
60
- self.write_cell(sheet, row, 2, os_app.getName())
61
- self.write_cell(sheet, row, 3, os_isr.getOsIsrCategory())
62
- self.write_cell(sheet, row, 4, os_isr.getOsStacksize())
63
- self.write_cell(sheet, row, 5, os_isr.getOsIsrPriority())
64
- self.write_cell(sheet, row, 6, os_isr.getOsIsrVector())
62
+ self.write_cell(sheet, row, 2, os_app.getName(),
63
+ format={'alignment': Alignment(horizontal="center", vertical="top")})
64
+ self.write_cell(sheet, row, 3, os_isr.getOsIsrCategory(),
65
+ format={'alignment': Alignment(horizontal="center", vertical="top")})
66
+ self.write_cell(sheet, row, 4, os_isr.getOsStacksize(),
67
+ format={'alignment': Alignment(horizontal="center", vertical="top")})
68
+ self.write_cell(sheet, row, 5, os_isr.getOsIsrPriority(),
69
+ format={'alignment': Alignment(horizontal="center", vertical="top")})
70
+ self.write_cell(sheet, row, 6, os_isr.getOsIsrVector(),
71
+ format={'alignment': Alignment(horizontal="center", vertical="top")})
72
+ if len(os_isr.getOsIsrMkMemoryRegionRefs()) > 1:
73
+ self.write_cell(sheet, row, 7, "\n".join(map(lambda a: a.getShortName(), os_isr.getOsIsrMkMemoryRegionRefs())),
74
+ {'alignment': Alignment(wrapText=True, vertical="top")})
75
+ else:
76
+ self.write_cell(sheet, row, 7, "\n".join(map(lambda a: a.getShortName(), os_isr.getOsIsrMkMemoryRegionRefs())),
77
+ {'alignment': Alignment(vertical="top")})
65
78
  row += 1
66
79
 
67
80
  self.logger.debug("Write OsIsr <%s>" % os_isr.getName())
68
81
 
69
- self.auto_width(sheet)
82
+ self.auto_width(sheet, {"G": 25})
70
83
 
71
84
  def write_os_schedule_tables(self, doc: EBModel):
72
85
  sheet = self.wb.create_sheet("OsScheduleTable", 2)
@@ -77,9 +90,12 @@ class OsXdmXlsWriter(ExcelReporter):
77
90
  row = 2
78
91
  for os_schedule_table in doc.getOs().getOsScheduleTableList():
79
92
  self.write_cell(sheet, row, 1, os_schedule_table.getName())
80
- self.write_cell(sheet, row, 2, os_schedule_table.getOsScheduleTableDuration())
81
- self.write_cell(sheet, row, 3, os_schedule_table.getOsScheduleTableRepeating())
82
- self.write_cell(sheet, row, 4, os_schedule_table.getOsScheduleTableCounterRef().getShortName())
93
+ self.write_cell(sheet, row, 2, os_schedule_table.getOsScheduleTableDuration(),
94
+ format={'alignment': Alignment(horizontal="center")})
95
+ self.write_cell(sheet, row, 3, os_schedule_table.getOsScheduleTableRepeating(),
96
+ format={'alignment': Alignment(horizontal="center")})
97
+ self.write_cell(sheet, row, 4, os_schedule_table.getOsScheduleTableCounterRef().getShortName(),
98
+ format={'alignment': Alignment(horizontal="center")})
83
99
  row += 1
84
100
 
85
101
  self.logger.debug("Write OsScheduleTable <%s>" % os_schedule_table.getName())
@@ -95,11 +111,16 @@ class OsXdmXlsWriter(ExcelReporter):
95
111
  row = 2
96
112
  for os_counter in doc.getOs().getOsCounterList():
97
113
  self.write_cell(sheet, row, 1, os_counter.getName())
98
- self.write_cell(sheet, row, 2, os_counter.getOsCounterMaxAllowedValue())
99
- self.write_cell(sheet, row, 3, os_counter.getOsCounterMinCycle())
100
- self.write_cell(sheet, row, 4, os_counter.getOsCounterTicksPerBase())
101
- self.write_cell(sheet, row, 5, os_counter.getOsCounterType())
102
- self.write_cell(sheet, row, 6, os_counter.getOsSecondsPerTick())
114
+ self.write_cell(sheet, row, 2, os_counter.getOsCounterMaxAllowedValue(),
115
+ format={'alignment': Alignment(horizontal="center")})
116
+ self.write_cell(sheet, row, 3, os_counter.getOsCounterMinCycle(),
117
+ format={'alignment': Alignment(horizontal="center")})
118
+ self.write_cell(sheet, row, 4, os_counter.getOsCounterTicksPerBase(),
119
+ format={'alignment': Alignment(horizontal="center")})
120
+ self.write_cell(sheet, row, 5, os_counter.getOsCounterType(),
121
+ format={'alignment': Alignment(horizontal="center")})
122
+ self.write_cell(sheet, row, 6, os_counter.getOsSecondsPerTick(),
123
+ format={'alignment': Alignment(horizontal="center")})
103
124
  row += 1
104
125
 
105
126
  self.logger.debug("Write OsScheduleTable <%s>" % os_counter.getName())
@@ -109,7 +130,7 @@ class OsXdmXlsWriter(ExcelReporter):
109
130
  def write_expiry_points(self, doc: EBModel):
110
131
  sheet = self.wb.create_sheet("OsScheduleTableExpiryPoint", 4)
111
132
 
112
- title_row = ["ExpiryPoint", "OsScheduleTable", "OsCounter" "Offset (ms)", "Task"]
133
+ title_row = ["ExpiryPoint", "OsScheduleTable", "OsCounter", "Offset (ms)", "Task"]
113
134
  self.write_title_row(sheet, title_row)
114
135
 
115
136
  row = 2
@@ -119,15 +140,77 @@ class OsXdmXlsWriter(ExcelReporter):
119
140
  for expiry_point in expiry_point_list:
120
141
  self.write_cell(sheet, row, 1, expiry_point.getName())
121
142
  self.write_cell(sheet, row, 2, table.getName())
122
- self.write_cell(sheet, row, 3, table.getOsScheduleTableCounterRef().getShortName())
123
- self.write_cell(sheet, row, 4, expiry_point.getOsScheduleTblExpPointOffset())
124
- self.write_cell(sheet, row, 5, len(expiry_point.getOsScheduleTableTaskActivationList()))
143
+ self.write_cell(sheet, row, 3, table.getOsScheduleTableCounterRef().getShortName(),
144
+ format={'alignment': Alignment(horizontal="center")})
145
+ self.write_cell(sheet, row, 4, expiry_point.getOsScheduleTblExpPointOffset(),
146
+ format={'alignment': Alignment(horizontal="center")})
147
+ self.write_cell(sheet, row, 5, len(expiry_point.getOsScheduleTableTaskActivationList()),
148
+ format={'alignment': Alignment(horizontal="center")})
125
149
  row += 1
126
150
 
127
151
  self.logger.debug("Write OsScheduleTable <%s>" % table.getName())
128
152
 
129
153
  self.auto_width(sheet)
130
154
 
155
+ def mk_memory_region_exists(self, doc: EBModel) -> bool:
156
+ mk = doc.getOs().getOsMicrokernel()
157
+ if mk is None:
158
+ return False
159
+
160
+ protection = mk.getMkMemoryProtection()
161
+ if protection is None:
162
+ return False
163
+
164
+ if len(protection.getMkMemoryRegionList()) <= 0:
165
+ return False
166
+
167
+ return True
168
+
169
+ def write_mk_memory_regions(self, doc: EBModel):
170
+ if self.mk_memory_region_exists(doc) is True:
171
+ sheet = self.wb.create_sheet("MkMemoryRegion", 5)
172
+
173
+ title_row = [
174
+ "Name", "Flags", "Initialize", "Global", "InitThread",
175
+ "IdleThread", "OsThread", "ErrorHook", "ProtHook", "ShutdownHook",
176
+ "Shutdown", "Kernel", "InitializePerCore"
177
+ ]
178
+ self.write_title_row(sheet, title_row)
179
+
180
+ row = 2
181
+ for region in doc.getOs().getOsMicrokernel().getMkMemoryProtection().getMkMemoryRegionList():
182
+ self.write_cell(sheet, row, 1, region.getName())
183
+ self.write_cell(sheet, row, 2, region.getMkMemoryRegionFlags(),
184
+ format={'alignment': Alignment(horizontal="center")})
185
+ self.write_cell(sheet, row, 3, self.format_boolean(region.getMkMemoryRegionInitialize()),
186
+ format={'alignment': Alignment(horizontal="center")})
187
+ self.write_cell(sheet, row, 4, self.format_boolean(region.getMkMemoryRegionGlobal()),
188
+ format={'alignment': Alignment(horizontal="center")})
189
+ self.write_cell(sheet, row, 5, self.format_boolean(region.getMkMemoryRegionInitThreadAccess()),
190
+ format={'alignment': Alignment(horizontal="center")})
191
+ self.write_cell(sheet, row, 6, self.format_boolean(region.getMkMemoryRegionIdleThreadAccess()),
192
+ format={'alignment': Alignment(horizontal="center")})
193
+ self.write_cell(sheet, row, 7, self.format_boolean(region.getMkMemoryRegionOsThreadAccess()),
194
+ format={'alignment': Alignment(horizontal="center")})
195
+ self.write_cell(sheet, row, 8, self.format_boolean(region.getMkMemoryRegionErrorHookAccess()),
196
+ format={'alignment': Alignment(horizontal="center")})
197
+ self.write_cell(sheet, row, 9, self.format_boolean(region.getMkMemoryRegionProtHookAccess()),
198
+ format={'alignment': Alignment(horizontal="center")})
199
+ self.write_cell(sheet, row, 10, self.format_boolean(region.getMkMemoryRegionShutdownHookAccess()),
200
+ format={'alignment': Alignment(horizontal="center")})
201
+ self.write_cell(sheet, row, 11, self.format_boolean(region.getMkMemoryRegionShutdownAccess()),
202
+ format={'alignment': Alignment(horizontal="center")})
203
+ self.write_cell(sheet, row, 12, self.format_boolean(region.getMkMemoryRegionKernelAccess()),
204
+ format={'alignment': Alignment(horizontal="center")})
205
+ self.write_cell(sheet, row, 13, self.format_boolean(region.getMkMemoryRegionInitializePerCore()),
206
+ format={'alignment': Alignment(horizontal="center")})
207
+
208
+ row += 1
209
+
210
+ self.logger.debug("Write MkMemoryRegion <%s>" % region.getName())
211
+
212
+ self.auto_width(sheet, {"B": 15})
213
+
131
214
  def write(self, filename, doc: EBModel, options={"skip_os_task": False}):
132
215
  self.logger.info("Writing <%s>" % filename)
133
216
 
@@ -137,5 +220,6 @@ class OsXdmXlsWriter(ExcelReporter):
137
220
  self.write_os_schedule_tables(doc)
138
221
  self.write_os_counters(doc)
139
222
  self.write_expiry_points(doc)
223
+ self.write_mk_memory_regions(doc)
140
224
 
141
225
  self.save(filename)
@@ -1,7 +1,9 @@
1
- from ...models.rte_xdm import RteBswEventToTaskMapping, RteBswModuleInstance, RteEventToTaskMapping, RteSwComponentInstance
1
+ from ...models.rte_xdm import RteBswEventToTaskMapping, RteBswEventToTaskMappingV3, RteBswEventToTaskMappingV4, RteBswModuleInstance
2
+ from ...models.rte_xdm import RteEventToTaskMapping, RteEventToTaskMappingV3, RteEventToTaskMappingV4, RteSwComponentInstance
2
3
  from ...models.eb_doc import EBModel
3
4
  from .abstract import ExcelReporter
4
5
 
6
+
5
7
  class RteXdmXlsWriter(ExcelReporter):
6
8
  def __init__(self) -> None:
7
9
  super().__init__()
@@ -45,6 +47,7 @@ class RteXdmXlsWriter(ExcelReporter):
45
47
 
46
48
  self.save(filename)
47
49
 
50
+
48
51
  class RteRunnableEntityXlsWriter(ExcelReporter):
49
52
  def __init__(self) -> None:
50
53
  super().__init__()
@@ -57,19 +60,29 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
57
60
 
58
61
  row = 2
59
62
  for os_task, mappings in doc.getRte().getMappedEvents().items():
60
- for mapping in sorted(mappings, key = lambda a:a.getRtePositionInTask()):
63
+ for mapping in sorted(mappings, key=lambda a: a.getRtePositionInTaskNumber()):
61
64
  self.write_cell(sheet, row, 1, os_task)
62
65
  if isinstance(mapping, RteBswEventToTaskMapping):
63
66
  self.logger.debug("Write Mapping %s" % mapping.getName())
64
67
  instance = mapping.getRteBswModuleInstance()
65
- self.write_cell(sheet, row, 2, mapping.getRteBswEventRefs().getShortName())
68
+ if isinstance(mapping, RteBswEventToTaskMappingV3):
69
+ self.write_cell(sheet, row, 2, mapping.getRteBswEventRef().getShortName())
70
+ elif isinstance(mapping, RteBswEventToTaskMappingV4):
71
+ self.write_cell(sheet, row, 2, " ".join(map(lambda i: i.getShortName(), mapping.getRteBswEventRefs())))
72
+ else:
73
+ raise NotImplementedError("Unsupported RteEventToTaskMapping")
66
74
  self.write_cell(sheet, row, 5, instance.getRteBswImplementationRef().getValue())
67
75
  self.write_cell(sheet, row, 6, mapping.getRteBswPositionInTask())
68
76
  self.write_cell(sheet, row, 7, mapping.getRteBswActivationOffset())
69
77
  elif isinstance(mapping, RteEventToTaskMapping):
70
78
  self.logger.debug("Write Mapping %s" % mapping.getName())
71
- instance = mapping.getRteSwComponentInstance()
72
- self.write_cell(sheet, row, 2, mapping.getRteEventRef().getShortName())
79
+ instance = mapping.getRteSwComponentInstance()
80
+ if isinstance(mapping, RteEventToTaskMappingV3):
81
+ self.write_cell(sheet, row, 2, mapping.getRteEventRef().getShortName())
82
+ elif instance(mapping, RteEventToTaskMappingV4):
83
+ self.write_cell(sheet, row, 2, " ".join(map(lambda i: i.getShortName(), mapping.getRteEventRefs())))
84
+ else:
85
+ raise NotImplementedError("Unsupported RteEventToTaskMapping")
73
86
  self.write_cell(sheet, row, 5, instance.getRteSoftwareComponentInstanceRef().getValue())
74
87
  self.write_cell(sheet, row, 6, mapping.getRtePositionInTask())
75
88
  self.write_cell(sheet, row, 7, mapping.getRteActivationOffset())
@@ -84,4 +97,4 @@ class RteRunnableEntityXlsWriter(ExcelReporter):
84
97
  self.logger.info("Writing <%s>" % filename)
85
98
  self.write_mapped_events(doc)
86
99
 
87
- self.save(filename)
100
+ self.save(filename)
@@ -0,0 +1,201 @@
1
+ import pytest
2
+ from ...models.abstract import Module, EcucParamConfContainerDef, Version, EcucRefType, EcucObject, EcucEnumerationParamDef
3
+ from ...models.eb_doc import EBModel
4
+
5
+
6
+ class TestModule:
7
+
8
+ def test_module_initialization(self):
9
+ root = EBModel.getInstance()
10
+ parent = EcucParamConfContainerDef(root, "Parent")
11
+ module = Module(parent, "TestModule")
12
+
13
+ assert module.getName() == "TestModule"
14
+ assert module.getParent() == parent
15
+ assert isinstance(module.getArVersion(), Version)
16
+ assert isinstance(module.getSwVersion(), Version)
17
+
18
+ def test_module_ar_version(self):
19
+ root = EBModel.getInstance()
20
+ parent = EcucParamConfContainerDef(root, "Parent")
21
+ module = Module(parent, "TestModule")
22
+
23
+ ar_version = module.getArVersion()
24
+ ar_version.setMajorVersion(1).setMinorVersion(2).setPatchVersion(3)
25
+
26
+ assert ar_version.getMajorVersion() == 1
27
+ assert ar_version.getMinorVersion() == 2
28
+ assert ar_version.getPatchVersion() == 3
29
+
30
+ # Check the version string format
31
+ assert ar_version.getVersion() == "1.2.3"
32
+
33
+ def test_module_sw_version(self):
34
+ root = EBModel.getInstance()
35
+ parent = EcucParamConfContainerDef(root, "Parent")
36
+ module = Module(parent, "TestModule")
37
+
38
+ sw_version = module.getSwVersion()
39
+ sw_version.setMajorVersion(4).setMinorVersion(5).setPatchVersion(6)
40
+
41
+ assert sw_version.getMajorVersion() == 4
42
+ assert sw_version.getMinorVersion() == 5
43
+ assert sw_version.getPatchVersion() == 6
44
+
45
+ # Check the version string format
46
+ assert sw_version.getVersion() == "4.5.6"
47
+
48
+ def test_module_add_and_get_element(self):
49
+ root = EBModel.getInstance()
50
+ parent = EcucParamConfContainerDef(root, "Parent")
51
+ module = Module(parent, "TestModule")
52
+
53
+ element = EcucParamConfContainerDef(module, "ChildElement")
54
+ module.addElement(element)
55
+
56
+ assert module.getTotalElement() == 1
57
+ assert module.getElement("ChildElement") == element
58
+
59
+ def test_module_remove_element(self):
60
+ root = EBModel.getInstance()
61
+ parent = EcucParamConfContainerDef(root, "Parent")
62
+ module = Module(parent, "TestModule")
63
+
64
+ element = EcucParamConfContainerDef(module, "ChildElement")
65
+ module.addElement(element)
66
+
67
+ assert module.getTotalElement() == 1
68
+
69
+ module.removeElement("ChildElement")
70
+ assert module.getTotalElement() == 0
71
+ assert module.getElement("ChildElement") is None
72
+
73
+ def test_module_get_full_name(self):
74
+ root = EBModel.getInstance()
75
+ parent = EcucParamConfContainerDef(root, "Parent")
76
+ module = Module(parent, "TestModule")
77
+
78
+ assert module.getFullName() == "/Parent/TestModule"
79
+
80
+
81
+ class TestEcucRefType:
82
+
83
+ def test_initialization(self):
84
+ ref = EcucRefType("/Parent/Child")
85
+ assert ref.getValue() == "/Parent/Child"
86
+
87
+ def test_set_value(self):
88
+ ref = EcucRefType("/Parent/Child")
89
+ ref.setValue("/NewParent/NewChild")
90
+ assert ref.getValue() == "/NewParent/NewChild"
91
+
92
+ def test_str_representation(self):
93
+ ref = EcucRefType("/Parent/Child")
94
+ assert str(ref) == "/Parent/Child"
95
+
96
+ def test_get_short_name_valid(self):
97
+ ref = EcucRefType("/Parent/Child")
98
+ assert ref.getShortName() == "Child"
99
+
100
+ def test_get_short_name_invalid(self):
101
+ ref = EcucRefType("InvalidValue")
102
+ assert ref.getShortName() == "InvalidValue"
103
+
104
+ def test_get_short_name_raises_error_on_none(self):
105
+ ref = EcucRefType(None)
106
+ with pytest.raises(ValueError, match="Invalid value of EcucRefType"):
107
+ ref.getShortName()
108
+
109
+
110
+ class TestEcucParamConfContainerDef:
111
+
112
+ def test_initialization(self):
113
+ root = EBModel.getInstance()
114
+ container = EcucParamConfContainerDef(root, "TestContainer")
115
+
116
+ assert container.getName() == "TestContainer"
117
+ assert container.getParent() == root
118
+ assert container.getTotalElement() == 0
119
+
120
+ def test_add_element(self):
121
+ root = EBModel.getInstance()
122
+ container = EcucParamConfContainerDef(root, "TestContainer")
123
+ child = EcucParamConfContainerDef(container, "ChildElement")
124
+
125
+ container.addElement(child)
126
+
127
+ assert container.getTotalElement() == 1
128
+ assert container.getElement("ChildElement") == child
129
+
130
+ def test_remove_element(self):
131
+ root = EBModel.getInstance()
132
+ container = EcucParamConfContainerDef(root, "TestContainer")
133
+ child = EcucParamConfContainerDef(container, "ChildElement")
134
+
135
+ container.addElement(child)
136
+ assert container.getTotalElement() == 1
137
+
138
+ container.removeElement("ChildElement")
139
+ assert container.getTotalElement() == 0
140
+ assert container.getElement("ChildElement") is None
141
+
142
+ def test_remove_element_invalid_key(self):
143
+ root = EBModel.getInstance()
144
+ container = EcucParamConfContainerDef(root, "TestContainer")
145
+
146
+ with pytest.raises(KeyError, match="Invalid key <InvalidKey> for removing element"):
147
+ container.removeElement("InvalidKey")
148
+
149
+ def test_get_element_list(self):
150
+ root = EBModel.getInstance()
151
+ container = EcucParamConfContainerDef(root, "TestContainer")
152
+ child1 = EcucParamConfContainerDef(container, "Child1")
153
+ child2 = EcucParamConfContainerDef(container, "Child2")
154
+
155
+ container.addElement(child1)
156
+ container.addElement(child2)
157
+
158
+ element_list = list(container.getElementList())
159
+ assert len(element_list) == 2
160
+ assert child1 in element_list
161
+ assert child2 in element_list
162
+
163
+ def test_get_element_not_found(self):
164
+ root = EBModel.getInstance()
165
+ container = EcucParamConfContainerDef(root, "TestContainer")
166
+
167
+ assert container.getElement("NonExistent") is None
168
+
169
+
170
+ class TestEcucObject:
171
+
172
+ def test_initialization_raises_error(self):
173
+ root = EBModel.getInstance()
174
+ with pytest.raises(ValueError, match="Abstract EcucObject cannot be initialized."):
175
+ EcucObject(root, "AbstractObject")
176
+
177
+ def test_get_and_set_name(self):
178
+ root = EBModel.getInstance()
179
+ container = EcucParamConfContainerDef(root, "Parent")
180
+ obj = EcucEnumerationParamDef(container, "TestObject")
181
+
182
+ assert obj.getName() == "TestObject"
183
+ obj.setName("NewName")
184
+ assert obj.getName() == "NewName"
185
+
186
+ def test_get_and_set_parent(self):
187
+ root = EBModel.getInstance()
188
+ container1 = EcucParamConfContainerDef(root, "Parent1")
189
+ container2 = EcucParamConfContainerDef(root, "Parent2")
190
+ obj = EcucEnumerationParamDef(container1, "TestObject")
191
+
192
+ assert obj.getParent() == container1
193
+ obj.setParent(container2)
194
+ assert obj.getParent() == container2
195
+
196
+ def test_get_full_name(self):
197
+ root = EBModel.getInstance()
198
+ parent = EcucParamConfContainerDef(root, "Parent")
199
+ obj = EcucEnumerationParamDef(parent, "Child")
200
+
201
+ assert obj.getFullName() == "/Parent/Child"
@@ -0,0 +1,66 @@
1
+ import pytest
2
+ from ...models.eb_doc import EBModel, PreferenceModel
3
+
4
+
5
+ class TestEBModel:
6
+
7
+ def test_ebmodel_singleton_exception(self):
8
+ EBModel.getInstance()
9
+ with pytest.raises(Exception) as err:
10
+ EBModel()
11
+ assert (str(err.value) == "The EBModel is singleton!")
12
+
13
+ def test_cannot_find_element(self):
14
+ document = EBModel.getInstance()
15
+ assert (document.find("/os/os") is None)
16
+
17
+ def test_ebmodel(self):
18
+ document = EBModel.getInstance()
19
+ assert (isinstance(document, EBModel))
20
+ assert (isinstance(document, EBModel))
21
+ assert (document.getFullName() == "")
22
+
23
+ def test_clear(self):
24
+ document = EBModel.getInstance()
25
+ document.clear()
26
+ assert (document.getTotalElement() == 0)
27
+ document.getOs()
28
+ assert (document.getTotalElement() == 1)
29
+ document.clear()
30
+ assert (document.getTotalElement() == 0)
31
+
32
+ def test_ebmodel_get_os(self):
33
+ document = EBModel.getInstance()
34
+ os = document.getOs()
35
+ assert (os.getFullName() == "/Os/Os")
36
+
37
+ def test_ebmodel_get_rte(self):
38
+ document = EBModel.getInstance()
39
+ rte = document.getRte()
40
+ assert (rte.getFullName() == "/Rte/Rte")
41
+
42
+ def test_ebmodel_get_nvm(self):
43
+ document = EBModel.getInstance()
44
+ nvm = document.getNvM()
45
+ assert (nvm.getFullName() == "/NvM/NvM")
46
+
47
+
48
+ class TestPreferenceModel:
49
+
50
+ def test_preference_model_singleton_exception(self):
51
+ PreferenceModel.getInstance()
52
+ with pytest.raises(Exception) as err:
53
+ PreferenceModel()
54
+ assert (str(err.value) == "The PreferenceModel is singleton!")
55
+
56
+ def test_mode_get_system_description_importer(self):
57
+ document = PreferenceModel.getInstance()
58
+ importer = document.getSystemDescriptionImporter()
59
+ assert importer.getFullName() == "/ImporterExporterAdditions/SystemDescriptionImporters"
60
+
61
+ importer = document.find(
62
+ "/ImporterExporterAdditions/SystemDescriptionImporters")
63
+ assert importer.getFullName() == "/ImporterExporterAdditions/SystemDescriptionImporters"
64
+
65
+ importer = document.getSystemDescriptionImporter()
66
+ assert importer.getFullName() == "/ImporterExporterAdditions/SystemDescriptionImporters"
@@ -0,0 +1,21 @@
1
+ import pytest
2
+ from ...models.eclipse_project import Link
3
+
4
+
5
+ class TestLink:
6
+
7
+ def test_initialization(self):
8
+ link = Link("TestLink", "File", "file:///path/to/resource")
9
+ assert link.name == "TestLink"
10
+ assert link.type == "File"
11
+ assert link.locationURI == "file:///path/to/resource"
12
+
13
+ def test_set_attributes(self):
14
+ link = Link("InitialName", "Folder", "file:///initial/path")
15
+ link.name = "UpdatedName"
16
+ link.type = "File"
17
+ link.locationURI = "file:///updated/path"
18
+
19
+ assert link.name == "UpdatedName"
20
+ assert link.type == "File"
21
+ assert link.locationURI == "file:///updated/path"
@@ -8,54 +8,59 @@ class TestSystemDescriptionImporter:
8
8
  def test_get_parsed_input_files(self):
9
9
  document = PreferenceModel.getInstance()
10
10
  importer = document.getSystemDescriptionImporter()
11
- importer.addInputFile("${env_var:TRESOS_OUTPUT_DIR}\**\*.arxml")
12
- input_files = importer.getParsedInputFiles({"env_var:TRESOS_OUTPUT_DIR": "c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd", "base_path": None})
11
+ importer.addInputFile("${env_var:TRESOS_OUTPUT_DIR}\\**\\*.arxml")
12
+ input_files = importer.getParsedInputFiles(
13
+ {"env_var:TRESOS_OUTPUT_DIR": "c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd", "base_path": None})
14
+
15
+ assert len(input_files) == 1
16
+ assert input_files[0] == "c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd\\**\\*.arxml"
13
17
 
14
- assert(len(input_files) == 1)
15
- assert(input_files[0] == "c:/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd\\**\\*.arxml")
16
18
  document = PreferenceModel.getInstance()
17
19
  importer = document.getSystemDescriptionImporter()
18
20
  path_segments = importer.getAllPaths("../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd")
19
- assert(len(path_segments) == 7)
20
- assert(path_segments[0] == "EB")
21
- assert(path_segments[1] == "EB/ACG-8_8_8_WIN32X86")
22
- assert(path_segments[2] == "EB/ACG-8_8_8_WIN32X86/workspace")
23
- assert(path_segments[6] == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd")
21
+ assert len(path_segments) == 7
22
+ assert path_segments[0] == "EB"
23
+ assert path_segments[1] == "EB/ACG-8_8_8_WIN32X86"
24
+ assert path_segments[2] == "EB/ACG-8_8_8_WIN32X86/workspace"
25
+ assert path_segments[6] == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd"
24
26
 
25
27
  def test_get_links(self):
26
28
  document = PreferenceModel.getInstance()
27
29
  importer = document.getSystemDescriptionImporter()
28
30
  file_list = []
29
- file_list.append("../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml")
30
- file_list.append("../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/BswM.arxml")
31
- file_list.append("../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml")
31
+ file_list.append(
32
+ "../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml")
33
+ file_list.append(
34
+ "../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/BswM.arxml")
35
+ file_list.append(
36
+ "../../EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml")
32
37
 
33
38
  links = importer.getLinks(file_list)
34
- assert(len(links) == 9)
35
- assert(links[0].name == "EB")
36
- assert(links[0].type == 2)
37
- assert(links[0].locationURI == "virtual:/virtual")
38
-
39
- assert(links[1].name == "EB/ACG-8_8_8_WIN32X86")
40
- assert(links[1].type == 2)
41
- assert(links[1].locationURI == "virtual:/virtual")
42
-
43
- assert(links[2].name == "EB/ACG-8_8_8_WIN32X86/workspace")
44
- assert(links[2].type == 2)
45
- assert(links[2].locationURI == "virtual:/virtual")
46
-
47
- assert(links[3].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte")
48
- assert(links[3].type == 2)
49
- assert(links[3].locationURI == "virtual:/virtual")
50
-
51
- assert(links[6].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd")
52
- assert(links[6].type == 2)
53
- assert(links[6].locationURI == "virtual:/virtual")
54
-
55
- assert(links[7].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml")
56
- assert(links[7].type == 1)
57
- assert(links[7].locationURI == "PARENT-2-PROJECT_LOC/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml")
58
-
59
- assert(links[8].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/BswM.arxml")
60
- assert(links[8].type == 1)
61
- assert(links[8].locationURI == "PARENT-2-PROJECT_LOC/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/BswM.arxml")
39
+ assert len(links) == 9
40
+ assert links[0].name == "EB"
41
+ assert links[0].type == 2
42
+ assert links[0].locationURI == "virtual:/virtual"
43
+
44
+ assert links[1].name == "EB/ACG-8_8_8_WIN32X86"
45
+ assert links[1].type == 2
46
+ assert links[1].locationURI == "virtual:/virtual"
47
+
48
+ assert links[2].name == "EB/ACG-8_8_8_WIN32X86/workspace"
49
+ assert links[2].type == 2
50
+ assert links[2].locationURI == "virtual:/virtual"
51
+
52
+ assert links[3].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte"
53
+ assert links[3].type == 2
54
+ assert links[3].locationURI == "virtual:/virtual"
55
+
56
+ assert links[6].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd"
57
+ assert links[6].type == 2
58
+ assert links[6].locationURI == "virtual:/virtual"
59
+
60
+ assert links[7].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml"
61
+ assert links[7].type == 1
62
+ assert links[7].locationURI == "PARENT-2-PROJECT_LOC/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/Atomics_Bswmd.arxml" # noqa E501
63
+
64
+ assert links[8].name == "EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/BswM.arxml"
65
+ assert links[8].type == 1
66
+ assert links[8].locationURI == "PARENT-2-PROJECT_LOC/EB/ACG-8_8_8_WIN32X86/workspace/simple_demo_rte/output/generated/swcd/BswM.arxml"
File without changes