suppress warnings in backwards compatibility unit tests

release/4.3a0
Gerry Chen 2022-12-22 23:56:46 -05:00
parent 581c2d5ebd
commit a3e314f3f7
No known key found for this signature in database
GPG Key ID: E9845092D3A57286
2 changed files with 58 additions and 4 deletions

View File

@ -46,18 +46,49 @@
#include <omp.h>
#endif
/* Define macros for ignoring compiler warnings.
* Usage Example:
* ```
* CLANG_DIAGNOSTIC_PUSH_IGNORE("-Wdeprecated-declarations")
* GCC_DIAGNOSTIC_PUSH_IGNORE("-Wdeprecated-declarations")
* MSVC_DIAGNOSTIC_PUSH_IGNORE(4996)
* // ... code you want to suppress deprecation warnings for ...
* DIAGNOSTIC_POP()
* ```
*/
#define DO_PRAGMA(x) _Pragma (#x)
#ifdef __clang__
# define CLANG_DIAGNOSTIC_PUSH_IGNORE(diag) \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"" diag "\"")
DO_PRAGMA(clang diagnostic ignored diag)
#else
# define CLANG_DIAGNOSTIC_PUSH_IGNORE(diag)
#endif
#ifdef __clang__
# define CLANG_DIAGNOSTIC_POP() _Pragma("clang diagnostic pop")
#ifdef __GNUC__
# define GCC_DIAGNOSTIC_PUSH_IGNORE(diag) \
_Pragma("GCC diagnostic push") \
DO_PRAGMA(GCC diagnostic ignored diag)
#else
# define CLANG_DIAGNOSTIC_POP()
# define GCC_DIAGNOSTIC_PUSH_IGNORE(diag)
#endif
#ifdef _MSC_VER
# define MSVC_DIAGNOSTIC_PUSH_IGNORE(code) \
_Pragma("warning ( push )") \
DO_PRAGMA(warning ( disable : code ))
#else
# define MSVC_DIAGNOSTIC_PUSH_IGNORE(code)
#endif
#if defined(__clang__)
# define DIAGNOSTIC_POP() _Pragma("clang diagnostic pop")
#elif defined(__GNUC__)
# define DIAGNOSTIC_POP() _Pragma("GCC diagnostic pop")
#elif defined(_MSC_VER)
# define DIAGNOSTIC_POP() _Pragma("warning ( pop )")
#else
# define DIAGNOSTIC_POP()
#endif
namespace gtsam {

View File

@ -330,6 +330,13 @@ TEST( NonlinearFactor, cloneWithNewNoiseModel )
}
/* ************************************************************************* */
// Suppress deprecation warnings while we are testing backwards compatibility
#define IGNORE_DEPRECATED_PUSH \
CLANG_DIAGNOSTIC_PUSH_IGNORE("-Wdeprecated-declarations") \
GCC_DIAGNOSTIC_PUSH_IGNORE("-Wdeprecated-declarations") \
MSVC_DIAGNOSTIC_PUSH_IGNORE(4996)
/* ************************************************************************* */
IGNORE_DEPRECATED_PUSH
class TestFactor1 : public NoiseModelFactor1<double> {
static_assert(std::is_same<Base, NoiseModelFactor>::value, "Base type wrong");
static_assert(std::is_same<This, NoiseModelFactor1<double>>::value,
@ -351,6 +358,7 @@ class TestFactor1 : public NoiseModelFactor1<double> {
gtsam::NonlinearFactor::shared_ptr(new TestFactor1(*this)));
}
};
DIAGNOSTIC_POP()
/* ************************************ */
TEST(NonlinearFactor, NoiseModelFactor1) {
@ -380,6 +388,7 @@ TEST(NonlinearFactor, NoiseModelFactor1) {
}
/* ************************************************************************* */
IGNORE_DEPRECATED_PUSH
class TestFactor4 : public NoiseModelFactor4<double, double, double, double> {
static_assert(std::is_same<Base, NoiseModelFactor>::value, "Base type wrong");
static_assert(
@ -411,6 +420,7 @@ class TestFactor4 : public NoiseModelFactor4<double, double, double, double> {
return boost::static_pointer_cast<gtsam::NonlinearFactor>(
gtsam::NonlinearFactor::shared_ptr(new TestFactor4(*this))); }
};
DIAGNOSTIC_POP()
/* ************************************ */
TEST(NonlinearFactor, NoiseModelFactor4) {
@ -434,6 +444,7 @@ TEST(NonlinearFactor, NoiseModelFactor4) {
EXPECT(assert_equal((Vector)(Vector(1) << 0.5 * -30.).finished(), jf.getb()));
// Test all functions/types for backwards compatibility
IGNORE_DEPRECATED_PUSH
static_assert(std::is_same<TestFactor4::X1, double>::value,
"X1 type incorrect");
static_assert(std::is_same<TestFactor4::X2, double>::value,
@ -452,6 +463,7 @@ TEST(NonlinearFactor, NoiseModelFactor4) {
EXPECT(assert_equal((Matrix)(Matrix(1, 1) << 2.).finished(), H.at(1)));
EXPECT(assert_equal((Matrix)(Matrix(1, 1) << 3.).finished(), H.at(2)));
EXPECT(assert_equal((Matrix)(Matrix(1, 1) << 4.).finished(), H.at(3)));
DIAGNOSTIC_POP()
// And test "forward compatibility" using `key<N>` and `ValueType<N>` too
static_assert(std::is_same<TestFactor4::ValueType<1>, double>::value,
@ -477,6 +489,7 @@ TEST(NonlinearFactor, NoiseModelFactor4) {
}
/* ************************************************************************* */
IGNORE_DEPRECATED_PUSH
class TestFactor5 : public NoiseModelFactor5<double, double, double, double, double> {
public:
typedef NoiseModelFactor5<double, double, double, double, double> Base;
@ -500,6 +513,7 @@ public:
.finished();
}
};
DIAGNOSTIC_POP()
/* ************************************ */
TEST(NonlinearFactor, NoiseModelFactor5) {
@ -527,6 +541,7 @@ TEST(NonlinearFactor, NoiseModelFactor5) {
}
/* ************************************************************************* */
IGNORE_DEPRECATED_PUSH
class TestFactor6 : public NoiseModelFactor6<double, double, double, double, double, double> {
public:
typedef NoiseModelFactor6<double, double, double, double, double, double> Base;
@ -554,6 +569,7 @@ public:
}
};
DIAGNOSTIC_POP()
/* ************************************ */
TEST(NonlinearFactor, NoiseModelFactor6) {
@ -656,6 +672,13 @@ TEST(NonlinearFactor, NoiseModelFactorN) {
EXPECT(assert_equal(H3_expected, H3));
EXPECT(assert_equal(H4_expected, H4));
// Test all functions/types for backwards compatibility
IGNORE_DEPRECATED_PUSH
static_assert(std::is_same<TestFactor4::X1, double>::value,
"X1 type incorrect");
EXPECT(assert_equal(tf.key3(), X(3)));
DIAGNOSTIC_POP()
// Test using `key<N>` and `ValueType<N>`
static_assert(std::is_same<TestFactorN::ValueType<1>, double>::value,
"ValueType<1> type incorrect");