diff --git a/src/pathsim_fmi/icons/CoSimulationFMU.svg b/src/pathsim_fmi/icons/CoSimulationFMU.svg
new file mode 100644
index 0000000..4926e1c
--- /dev/null
+++ b/src/pathsim_fmi/icons/CoSimulationFMU.svg
@@ -0,0 +1 @@
+
diff --git a/src/pathsim_fmi/icons/ModelExchangeFMU.svg b/src/pathsim_fmi/icons/ModelExchangeFMU.svg
new file mode 100644
index 0000000..8e35224
--- /dev/null
+++ b/src/pathsim_fmi/icons/ModelExchangeFMU.svg
@@ -0,0 +1 @@
+
diff --git a/tests/test_icons.py b/tests/test_icons.py
new file mode 100644
index 0000000..a624083
--- /dev/null
+++ b/tests/test_icons.py
@@ -0,0 +1,31 @@
+import unittest
+import xml.etree.ElementTree as ET
+
+from pathsim.blocks import Block
+
+import pathsim_fmi
+
+
+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_fmi).values()
+ if isinstance(obj, type)
+ and issubclass(obj, Block)
+ and obj.__module__.startswith("pathsim_fmi")
+ ]
+ 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()