From ca620906e7bce485f3596ed16bc6dc4362dd0ff0 Mon Sep 17 00:00:00 2001
From: ManifoldFR <wilson.jallet@polytechnique.org>
Date: Wed, 22 May 2024 19:33:25 +0200
Subject: [PATCH] Add unit test multiple_registration

+ currently produces a wonderful 36 errors :D
---
 unittest/CMakeLists.txt                       |  3 ++
 unittest/multiple_registration.cpp            | 28 +++++++++++++++++++
 unittest/python/test_multiple_registration.py |  1 +
 3 files changed, 32 insertions(+)
 create mode 100644 unittest/multiple_registration.cpp
 create mode 100644 unittest/python/test_multiple_registration.py

diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt
index d0c216fb..72bfb1bb 100644
--- a/unittest/CMakeLists.txt
+++ b/unittest/CMakeLists.txt
@@ -30,6 +30,7 @@ endmacro(ADD_LIB_UNIT_TEST)
 
 add_dependencies(build_tests ${PYWRAP})
 add_lib_unit_test(matrix)
+add_lib_unit_test(multiple_registration)
 if(BUILD_TESTING_SCIPY)
   find_scipy()
   add_lib_unit_test(sparse_matrix)
@@ -101,6 +102,8 @@ endif()
 add_lib_unit_test(bind_virtual_factory)
 
 add_python_lib_unit_test("py-matrix" "unittest/python/test_matrix.py")
+add_python_lib_unit_test("py-multiple-registration"
+                         "unittest/python/test_multiple_registration.py")
 
 add_python_lib_unit_test("py-tensor" "unittest/python/test_tensor.py")
 add_python_lib_unit_test("py-geometry" "unittest/python/test_geometry.py")
diff --git a/unittest/multiple_registration.cpp b/unittest/multiple_registration.cpp
new file mode 100644
index 00000000..32940d4a
--- /dev/null
+++ b/unittest/multiple_registration.cpp
@@ -0,0 +1,28 @@
+#include "eigenpy/registration.hpp"
+#include <cstdio>
+
+namespace bp = boost::python;
+
+class X {
+ public:
+  X() {}
+  void operator()() { printf("DOOT\n"); }
+};
+
+class X_wrapper : public X, bp::wrapper<X> {
+ public:
+  static void expose() {
+    if (!eigenpy::register_symbolic_link_to_registered_type<X>()) {
+      bp::class_<X>("X", bp::init<>()).def("__call__", &X::operator());
+    }
+  }
+};
+
+BOOST_PYTHON_MODULE(multiple_registration) {
+  X_wrapper::expose();
+  X_wrapper::expose();
+  X_wrapper::expose();
+  X_wrapper::expose();
+  X_wrapper::expose();
+  X_wrapper::expose();
+}
diff --git a/unittest/python/test_multiple_registration.py b/unittest/python/test_multiple_registration.py
new file mode 100644
index 00000000..d414596b
--- /dev/null
+++ b/unittest/python/test_multiple_registration.py
@@ -0,0 +1 @@
+import multiple_registration  # noqa
-- 
GitLab