/** * @file testSymbolicFactor.cpp * @brief Unit tests for a symbolic Factor * @author Frank Dellaert */ #include #include #include #include #include using namespace std; using namespace gtsam; using namespace boost::assign; /* ************************************************************************* */ TEST(SymbolicFactor, eliminate) { vector keys; keys += 2, 3, 4, 6, 7, 9, 10, 11; Factor actual(keys.begin(), keys.end()); BayesNet fragment = *actual.eliminate(3); Factor expected(keys.begin()+3, keys.end()); Conditional::shared_ptr expected0 = Conditional::fromRange(keys.begin(), keys.end(), 1); Conditional::shared_ptr expected1 = Conditional::fromRange(keys.begin()+1, keys.end(), 1); Conditional::shared_ptr expected2 = Conditional::fromRange(keys.begin()+2, keys.end(), 1); CHECK(assert_equal(fragment.size(), size_t(3))); CHECK(assert_equal(expected, actual)); BayesNet::const_iterator fragmentCond = fragment.begin(); CHECK(assert_equal(**fragmentCond++, *expected0)); CHECK(assert_equal(**fragmentCond++, *expected1)); CHECK(assert_equal(**fragmentCond++, *expected2)); } /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } /* ************************************************************************* */