diff --git a/gtsam/base/Testable.h b/gtsam/base/Testable.h index a308c50a1..83c2fa4e8 100644 --- a/gtsam/base/Testable.h +++ b/gtsam/base/Testable.h @@ -34,6 +34,7 @@ #pragma once #include +#include #include #include @@ -50,17 +51,20 @@ namespace gtsam { * @tparam T is the type this constrains to be testable - assumes print() and equals() */ template - class TestableConcept { - static bool checkTestableConcept(const T& d) { + class Testable { + T t; + bool r1,r2; + public: + + BOOST_CONCEPT_USAGE(Testable) { // check print function, with optional string - d.print(std::string()); - d.print(); + t.print(std::string()); + t.print(); // check print, with optional threshold double tol = 1.0; - bool r1 = d.equals(d, tol); - bool r2 = d.equals(d); - return r1 && r2; + r1 = t.equals(t, tol); + r2 = t.equals(t); } }; @@ -129,6 +133,7 @@ namespace gtsam { * * NOTE: intentionally not in the gtsam namespace to allow for classes not in * the gtsam namespace to be more easily enforced as testable + * @deprecated please use BOOST_CONCEPT_ASSERT and */ -#define GTSAM_CONCEPT_TESTABLE_INST(T) template class gtsam::TestableConcept; -#define GTSAM_CONCEPT_TESTABLE_TYPE(T) typedef gtsam::TestableConcept _gtsam_TestableConcept_##T; +#define GTSAM_CONCEPT_TESTABLE_INST(T) template class gtsam::Testable; +#define GTSAM_CONCEPT_TESTABLE_TYPE(T) typedef gtsam::Testable _gtsam_Testable_##T;