From 64d4540e9a5466ec9999ce19a8a11878da88455a Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Wed, 29 Jan 2025 17:55:14 -0500 Subject: [PATCH] Nice new HC tests --- gtsam/hybrid/tests/testHybridConditional.cpp | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gtsam/hybrid/tests/testHybridConditional.cpp b/gtsam/hybrid/tests/testHybridConditional.cpp index 365dde3bc..216acdb4e 100644 --- a/gtsam/hybrid/tests/testHybridConditional.cpp +++ b/gtsam/hybrid/tests/testHybridConditional.cpp @@ -28,6 +28,28 @@ using symbol_shorthand::M; using symbol_shorthand::X; using symbol_shorthand::Z; +/* ****************************************************************************/ +// Test the HybridConditional constructor. +TEST(HybridConditional, Constructor) { + // Create a HybridGaussianConditional. + const KeyVector continuousKeys{X(0), X(1)}; + const DiscreteKeys discreteKeys{{M(0), 2}}; + const size_t nFrontals = 1; + const HybridConditional hc(continuousKeys, discreteKeys, nFrontals); + + // Check Frontals: + EXPECT_LONGS_EQUAL(1, hc.nrFrontals()); + const auto frontals = hc.frontals(); + EXPECT_LONGS_EQUAL(1, frontals.size()); + EXPECT_LONGS_EQUAL(X(0), *frontals.begin()); + + // Check parents: + const auto parents = hc.parents(); + EXPECT_LONGS_EQUAL(2, parents.size()); + EXPECT_LONGS_EQUAL(X(1), *parents.begin()); + EXPECT_LONGS_EQUAL(M(0), *(parents.begin() + 1)); +} + /* ****************************************************************************/ // Check invariants for all conditionals in a tiny Bayes net. TEST(HybridConditional, Invariants) { @@ -43,6 +65,12 @@ TEST(HybridConditional, Invariants) { auto hc0 = bn.at(0); CHECK(hc0->isHybrid()); + // Check parents: + const auto parents = hc0->parents(); + EXPECT_LONGS_EQUAL(2, parents.size()); + EXPECT_LONGS_EQUAL(X(0), *parents.begin()); + EXPECT_LONGS_EQUAL(M(0), *(parents.begin() + 1)); + // Check invariants as a HybridGaussianConditional. const auto conditional = hc0->asHybrid(); EXPECT(HybridGaussianConditional::CheckInvariants(*conditional, values));