Skip to content

Commit e5ccfce

Browse files
committed
Added tests.
1 parent b991b74 commit e5ccfce

2 files changed

Lines changed: 42 additions & 7 deletions

File tree

src/omotes_simulator_core/entities/assets/esdl_asset_object.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -230,13 +230,12 @@ def has_out_optimizer_profile(self) -> bool:
230230
if isinstance(port, esdl.OutPort) and port.profile.items:
231231
# There is a profile on the out port
232232
for profile in port.profile:
233-
try:
234-
data_source = profile.dataSource
235-
if data_source is not None:
236-
if data_source.name == "Optimizer":
237-
return True
238-
except AttributeError:
239-
continue
233+
if (
234+
hasattr(profile, "dataSource") and
235+
hasattr(profile.dataSource, "name") and
236+
profile.dataSource.name == "Optimizer"
237+
):
238+
return True
240239
return False
241240

242241
def has_constraint(self) -> bool:

unit_test/entities/test_esdl_object.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"""Test esdl object class."""
1717
import unittest
1818
from pathlib import Path
19+
from unittest.mock import MagicMock, Mock
1920

2021
import esdl
2122
from pandas.testing import assert_frame_equal
@@ -423,6 +424,41 @@ def test_get_asset_by_id(self):
423424
# Assert
424425
self.assertEqual(asset.esdl_asset, producer.esdl_asset)
425426

427+
def test_has_out_optimizer_profile(self):
428+
"""Test to see if the method to check for optimizer profiles works correctly."""
429+
430+
# Arrange
431+
asset_with_mocked_profiles = self.esdl_object.get_all_assets_of_type("producer")[0]
432+
433+
non_optimizer_profile = Mock()
434+
non_optimizer_profile.dataSource = Mock()
435+
non_optimizer_profile.dataSource.name = "NotOptimizer"
436+
437+
optimizer_profile = Mock()
438+
optimizer_profile.dataSource = Mock()
439+
optimizer_profile.dataSource.name = "Optimizer"
440+
441+
mocked_profiles = MagicMock()
442+
mocked_profiles.items = [non_optimizer_profile, optimizer_profile]
443+
mocked_profiles.__iter__.return_value = iter([non_optimizer_profile, optimizer_profile])
444+
445+
mocked_out_port = Mock(spec=esdl.OutPort)
446+
mocked_out_port.profile = mocked_profiles
447+
448+
mocked_esdl_asset = Mock()
449+
mocked_esdl_asset.port = [mocked_out_port]
450+
asset_with_mocked_profiles.esdl_asset = mocked_esdl_asset
451+
452+
asset_without_profile = self.esdl_object.get_all_assets_of_type("pipe")[0]
453+
454+
# Act
455+
has_optimizer_profile = asset_with_mocked_profiles.has_out_optimizer_profile()
456+
has_no_optimizer_profile = asset_without_profile.has_out_optimizer_profile()
457+
458+
# Assert
459+
self.assertTrue(has_optimizer_profile)
460+
self.assertIs(has_no_optimizer_profile, False)
461+
426462

427463
class StringEsdlAssetMapperTest(unittest.TestCase):
428464
"""Class to test conversion from esdl asset to string and back."""

0 commit comments

Comments
 (0)