From 0c2f9bb09cf625cfa5eaf1d784511d3defd8f5a0 Mon Sep 17 00:00:00 2001 From: Milan Rother Date: Thu, 5 Nov 2026 13:37:25 +0100 Subject: [PATCH 1/2] Add block icons --- src/pathsim_flight/icons/CAStoEAS.svg | 1 + src/pathsim_flight/icons/CAStoMach.svg | 1 + src/pathsim_flight/icons/CAStoTAS.svg | 1 + src/pathsim_flight/icons/EAStoTAS.svg | 1 + src/pathsim_flight/icons/ISAtmosphere.svg | 1 + src/pathsim_flight/icons/JSBSimWrapper.svg | 1 + src/pathsim_flight/icons/MachtoCAS.svg | 1 + src/pathsim_flight/icons/TAStoCAS.svg | 1 + tests/test_icons.py | 29 ++++++++++++++++++++++ 9 files changed, 37 insertions(+) create mode 100644 src/pathsim_flight/icons/CAStoEAS.svg create mode 100644 src/pathsim_flight/icons/CAStoMach.svg create mode 100644 src/pathsim_flight/icons/CAStoTAS.svg create mode 100644 src/pathsim_flight/icons/EAStoTAS.svg create mode 100644 src/pathsim_flight/icons/ISAtmosphere.svg create mode 100644 src/pathsim_flight/icons/JSBSimWrapper.svg create mode 100644 src/pathsim_flight/icons/MachtoCAS.svg create mode 100644 src/pathsim_flight/icons/TAStoCAS.svg create mode 100644 tests/test_icons.py diff --git a/src/pathsim_flight/icons/CAStoEAS.svg b/src/pathsim_flight/icons/CAStoEAS.svg new file mode 100644 index 0000000..e6469ed --- /dev/null +++ b/src/pathsim_flight/icons/CAStoEAS.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/CAStoMach.svg b/src/pathsim_flight/icons/CAStoMach.svg new file mode 100644 index 0000000..e6469ed --- /dev/null +++ b/src/pathsim_flight/icons/CAStoMach.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/CAStoTAS.svg b/src/pathsim_flight/icons/CAStoTAS.svg new file mode 100644 index 0000000..e6469ed --- /dev/null +++ b/src/pathsim_flight/icons/CAStoTAS.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/EAStoTAS.svg b/src/pathsim_flight/icons/EAStoTAS.svg new file mode 100644 index 0000000..e6469ed --- /dev/null +++ b/src/pathsim_flight/icons/EAStoTAS.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/ISAtmosphere.svg b/src/pathsim_flight/icons/ISAtmosphere.svg new file mode 100644 index 0000000..bdac52a --- /dev/null +++ b/src/pathsim_flight/icons/ISAtmosphere.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/JSBSimWrapper.svg b/src/pathsim_flight/icons/JSBSimWrapper.svg new file mode 100644 index 0000000..4c56caf --- /dev/null +++ b/src/pathsim_flight/icons/JSBSimWrapper.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/MachtoCAS.svg b/src/pathsim_flight/icons/MachtoCAS.svg new file mode 100644 index 0000000..e6469ed --- /dev/null +++ b/src/pathsim_flight/icons/MachtoCAS.svg @@ -0,0 +1 @@ + diff --git a/src/pathsim_flight/icons/TAStoCAS.svg b/src/pathsim_flight/icons/TAStoCAS.svg new file mode 100644 index 0000000..e6469ed --- /dev/null +++ b/src/pathsim_flight/icons/TAStoCAS.svg @@ -0,0 +1 @@ + diff --git a/tests/test_icons.py b/tests/test_icons.py new file mode 100644 index 0000000..dcaf3cc --- /dev/null +++ b/tests/test_icons.py @@ -0,0 +1,29 @@ +import unittest +import xml.etree.ElementTree as ET + +from pathsim.blocks import Block + +import pathsim_flight + + +class TestIcons(unittest.TestCase): + """Every block of the toolbox has an icon, read by Block.icon().""" + + def test_blocks_have_icons(self): + blocks = [ + obj for obj in vars(pathsim_flight).values() + if isinstance(obj, type) and issubclass(obj, Block) + and obj.__module__.startswith("pathsim_flight") + ] + self.assertGreater(len(blocks), 0) + + for cls in blocks: + with self.subTest(block=cls.__name__): + icon = cls.icon() + self.assertIsNotNone(icon) + root = ET.fromstring(icon) + self.assertEqual(root.get("viewBox"), "0 0 96 64") + + +if __name__ == "__main__": + unittest.main() From 4c53ce6d983de7d3ac5e19f8a7b2bfc623b74e98 Mon Sep 17 00:00:00 2001 From: Milan Rother Date: Thu, 5 Nov 2026 13:52:14 +0100 Subject: [PATCH 2/2] Format the icon test --- tests/test_icons.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_icons.py b/tests/test_icons.py index dcaf3cc..6fab108 100644 --- a/tests/test_icons.py +++ b/tests/test_icons.py @@ -11,8 +11,10 @@ class TestIcons(unittest.TestCase): def test_blocks_have_icons(self): blocks = [ - obj for obj in vars(pathsim_flight).values() - if isinstance(obj, type) and issubclass(obj, Block) + obj + for obj in vars(pathsim_flight).values() + if isinstance(obj, type) + and issubclass(obj, Block) and obj.__module__.startswith("pathsim_flight") ] self.assertGreater(len(blocks), 0)