From a5b0213ea87234c3a8f3aee41b57c79c14b4600b Mon Sep 17 00:00:00 2001 From: cogu Date: Sun, 31 Mar 2024 12:41:47 +0200 Subject: [PATCH] Fix: Reading QUEUE-LENGTH in QueuedReceiverComSpec triggers exception --- CHANGELOG.md | 6 ++++++ src/autosar/xml/reader.py | 2 +- tests/xml/test_software_component_elements.py | 12 ++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2d96dc..1d57af5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ The first name in a bullet point below is the Python class name while the second Elements marked as `collectable` means that they can be added directly to a package. Non-collectable elements are various sub-elements to collectable elements. +## [Unreleased] + +### Fixed + +* Fixed bug in Reader class for property `QUEUED-RECEIVER-COM-SPEC/QUEUE-LENGTH` + ## [v0.5.3] - 2024-03-29 ### Added diff --git a/src/autosar/xml/reader.py b/src/autosar/xml/reader.py index 6528707..166813d 100644 --- a/src/autosar/xml/reader.py +++ b/src/autosar/xml/reader.py @@ -3701,7 +3701,7 @@ def _read_queued_receiver_com_spec(self, xml_element: ElementTree.Element) -> ar self._read_receiver_com_spec(child_elements, data) xml_child = child_elements.get("QUEUE-LENGTH") if xml_child is not None: - data["operation_ref"] = ar_element.PositiveIntegerValue(xml_child.text).value + data["queue_length"] = ar_element.PositiveIntegerValue(xml_child.text).value self._report_unprocessed_elements(child_elements) return ar_element.QueuedReceiverComSpec(**data) diff --git a/tests/xml/test_software_component_elements.py b/tests/xml/test_software_component_elements.py index 92b3a17..2c053fa 100644 --- a/tests/xml/test_software_component_elements.py +++ b/tests/xml/test_software_component_elements.py @@ -785,6 +785,18 @@ def test_uses_end_to_end_protection(self): self.assertIsInstance(elem, ar_element.QueuedReceiverComSpec) self.assertFalse(elem.uses_end_to_end_protection) + def test_queue_length(self): + element = ar_element.QueuedReceiverComSpec(queue_length=1) + writer = autosar.xml.Writer() + xml = ''' + 1 +''' + self.assertEqual(writer.write_str_elem(element), xml) + reader = autosar.xml.Reader() + elem: ar_element.QueuedReceiverComSpec = reader.read_str_elem(xml) + self.assertIsInstance(elem, ar_element.QueuedReceiverComSpec) + self.assertEqual(elem.queue_length, 1) + class TestNonqueuedReceiverComSpec(unittest.TestCase):