diff --git a/tests/unittests/CMakeLists.txt b/tests/unittests/CMakeLists.txt index 5aa2db37e..d95441852 100644 --- a/tests/unittests/CMakeLists.txt +++ b/tests/unittests/CMakeLists.txt @@ -94,3 +94,7 @@ else() PODIO_SIOBLOCK_PATH=${CMAKE_CURRENT_BINARY_DIR} ) endif() + +add_test(NAME unittest.py COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/unittests.py) +PODIO_SET_TEST_ENV(unittest.py) +set_tests_properties(unittest.py PROPERTIES WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/tests) diff --git a/tests/unittests/unittests.py b/tests/unittests/unittests.py new file mode 100644 index 000000000..a7b08f134 --- /dev/null +++ b/tests/unittests/unittests.py @@ -0,0 +1,36 @@ +import unittest +import ROOT + +res = ROOT.gSystem.Load("libTestDataModel.so") +if res < 0: + raise RuntimeError("Failed to load libTestDataModel.so") + +from ROOT import MutableExampleMC +from ROOT import ExampleMCCollection + + +class Test_ObjectConversions(unittest.TestCase): + def test_conversion_mutable_to_immutable(self): + ROOT.gInterpreter.Declare( + """ + void test_accepts_immutable(ExampleMC) {} + """ + ) + accepts_immutable = ROOT.test_accepts_immutable + mutable_obj = MutableExampleMC() + accepts_immutable(mutable_obj) + + +class Test_OneToManyRelations(unittest.TestCase): + def test_add(self): + particles = ExampleMCCollection() + parent_particle = particles.create() + daughter_particle = particles.create() + + self.assertEqual(len(daughter_particle.parents()), 0) + daughter_particle.addparents(parent_particle) + self.assertEqual(len(daughter_particle.parents()), 1) + + +if __name__ == "__main__": + unittest.main()