Fix some merging-dependent tests

release/4.3a0
Frank Dellaert 2025-02-02 21:29:24 -05:00
parent 43544ae194
commit 6f11b4a870
2 changed files with 25 additions and 11 deletions

View File

@ -318,21 +318,27 @@ TEST(HybridGaussianConditional, Restrict) {
const auto hc = const auto hc =
std::make_shared<HybridConditional>(two_mode_measurement::hgc); std::make_shared<HybridConditional>(two_mode_measurement::hgc);
const HybridConditional::shared_ptr same = hc->restrict({}); const auto same =
std::dynamic_pointer_cast<HybridConditional>(hc->restrict({}));
CHECK(same);
EXPECT(same->isHybrid()); EXPECT(same->isHybrid());
EXPECT(same->asHybrid()->nrComponents() == 4); EXPECT(same->asHybrid()->nrComponents() == 4);
const HybridConditional::shared_ptr oneParent = hc->restrict({{M(1), 0}}); const auto oneParent =
std::dynamic_pointer_cast<HybridConditional>(hc->restrict({{M(1), 0}}));
CHECK(oneParent);
EXPECT(oneParent->isHybrid()); EXPECT(oneParent->isHybrid());
EXPECT(oneParent->asHybrid()->nrComponents() == 2); EXPECT(oneParent->asHybrid()->nrComponents() == 2);
const HybridConditional::shared_ptr oneParent2 = const auto oneParent2 = std::dynamic_pointer_cast<HybridConditional>(
hc->restrict({{M(7), 0}, {M(1), 0}}); hc->restrict({{M(7), 0}, {M(1), 0}}));
CHECK(oneParent2);
EXPECT(oneParent2->isHybrid()); EXPECT(oneParent2->isHybrid());
EXPECT(oneParent2->asHybrid()->nrComponents() == 2); EXPECT(oneParent2->asHybrid()->nrComponents() == 2);
const HybridConditional::shared_ptr gaussian = const auto gaussian = std::dynamic_pointer_cast<HybridConditional>(
hc->restrict({{M(1), 0}, {M(2), 1}}); hc->restrict({{M(1), 0}, {M(2), 1}}));
CHECK(gaussian);
EXPECT(gaussian->asGaussian()); EXPECT(gaussian->asGaussian());
} }

View File

@ -102,12 +102,16 @@ TEST(HybridSmoother, IncrementalSmoother) {
graph.resize(0); graph.resize(0);
} }
EXPECT_LONGS_EQUAL(11, auto& hybridBayesNet = smoother.hybridBayesNet();
smoother.hybridBayesNet().at(5)->asDiscrete()->nrValues()); #ifdef GTSAM_DT_MERGING
EXPECT_LONGS_EQUAL(11, hybridBayesNet.at(5)->asDiscrete()->nrValues());
#else
EXPECT_LONGS_EQUAL(16, hybridBayesNet.at(5)->asDiscrete()->nrValues());
#endif
// Get the continuous delta update as well as // Get the continuous delta update as well as
// the optimal discrete assignment. // the optimal discrete assignment.
HybridValues delta = smoother.hybridBayesNet().optimize(); HybridValues delta = hybridBayesNet.optimize();
// Check discrete assignment // Check discrete assignment
DiscreteValues expected_discrete; DiscreteValues expected_discrete;
@ -156,8 +160,12 @@ TEST(HybridSmoother, ValidPruningError) {
graph.resize(0); graph.resize(0);
} }
EXPECT_LONGS_EQUAL(14, auto& hybridBayesNet = smoother.hybridBayesNet();
smoother.hybridBayesNet().at(8)->asDiscrete()->nrValues()); #ifdef GTSAM_DT_MERGING
EXPECT_LONGS_EQUAL(14, hybridBayesNet.at(8)->asDiscrete()->nrValues());
#else
EXPECT_LONGS_EQUAL(128, hybridBayesNet.at(8)->asDiscrete()->nrValues());
#endif
// Get the continuous delta update as well as // Get the continuous delta update as well as
// the optimal discrete assignment. // the optimal discrete assignment.