gtsam/gtsam_unstable/linear/tests/testBayesTreeOperations.cpp

126 lines
2.9 KiB
C++

/**
* @file testLinearTools.cpp
*
* @brief
*
* @date Aug 27, 2012
* @author Alex Cunningham
*/
#include <CppUnitLite/TestHarness.h>
#include <gtsam_unstable/linear/bayesTreeOperations.h>
using namespace gtsam;
SharedDiagonal model2 = noiseModel::Diagonal::Sigmas(ones(2));
SharedDiagonal model4 = noiseModel::Diagonal::Sigmas(ones(4));
SharedDiagonal model6 = noiseModel::Diagonal::Sigmas(ones(6));
/* ************************************************************************* */
TEST( testLinearTools, splitFactor ) {
// Build upper-triangular system
JacobianFactor initFactor(
0,Matrix_(4, 2,
1.0, 2.0,
0.0, 3.0,
0.0, 0.0,
0.0, 0.0),
1,Matrix_(4, 2,
1.0, 2.0,
9.0, 3.0,
6.0, 8.0,
0.0, 7.0),
Vector_(4, 0.1, 0.2, 0.3, 0.4),
model4);
GaussianFactorGraph actSplit = splitFactor(initFactor.clone());
GaussianFactorGraph expSplit;
expSplit.add(
0,Matrix_(2, 2,
1.0, 2.0,
0.0, 3.0),
1,Matrix_(2, 2,
1.0, 2.0,
9.0, 3.0),
Vector_(2, 0.1, 0.2),
model2);
expSplit.add(
1,Matrix_(2, 2,
6.0, 8.0,
0.0, 7.0),
Vector_(2, 0.3, 0.4),
model2);
EXPECT(assert_equal(expSplit, actSplit));
}
/* ************************************************************************* */
TEST_UNSAFE( testLinearTools, splitFactor2 ) {
// Build upper-triangular system
JacobianFactor initFactor(
0,Matrix_(6, 2,
1.0, 2.0,
0.0, 3.0,
0.0, 0.0,
0.0, 0.0,
0.0, 0.0,
0.0, 0.0),
1,Matrix_(6, 2,
1.0, 2.0,
9.0, 3.0,
6.0, 8.0,
0.0, 7.0,
0.0, 0.0,
0.0, 0.0),
2,Matrix_(6, 2,
1.1, 2.2,
9.1, 3.2,
6.1, 8.2,
0.1, 7.2,
0.1, 3.2,
0.0, 1.2),
Vector_(6, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6),
model6);
GaussianFactorGraph actSplit = splitFactor(initFactor.clone());
GaussianFactorGraph expSplit;
expSplit.add(
0,Matrix_(2, 2,
1.0, 2.0,
0.0, 3.0),
1,Matrix_(2, 2,
1.0, 2.0,
9.0, 3.0),
2,Matrix_(2, 2,
1.1, 2.2,
9.1, 3.2),
Vector_(2, 0.1, 0.2),
model2);
expSplit.add(
1,Matrix_(2, 2,
6.0, 8.0,
0.0, 7.0),
2,Matrix_(2, 2,
6.1, 8.2,
0.1, 7.2),
Vector_(2, 0.3, 0.4),
model2);
expSplit.add(
2,Matrix_(2, 2,
0.1, 3.2,
0.0, 1.2),
Vector_(2, 0.5, 0.6),
model2);
EXPECT(assert_equal(expSplit, actSplit));
}
/* ************************************************************************* */
int main() { TestResult tr; return TestRegistry::runAllTests(tr); }
/* ************************************************************************* */