diff --git a/.cproject b/.cproject
index 98eedc90b..2f30bd246 100644
--- a/.cproject
+++ b/.cproject
@@ -322,6 +322,14 @@
true
true
+
+ make
+ -j2
+ testGaussianFactor.run
+ true
+ true
+ true
+
make
-j2
@@ -348,7 +356,6 @@
make
-
tests/testBayesTree.run
true
false
@@ -356,7 +363,6 @@
make
-
testBinaryBayesNet.run
true
false
@@ -404,7 +410,6 @@
make
-
testSymbolicBayesNet.run
true
false
@@ -412,7 +417,6 @@
make
-
tests/testSymbolicFactor.run
true
false
@@ -420,7 +424,6 @@
make
-
testSymbolicFactorGraph.run
true
false
@@ -436,20 +439,11 @@
make
-
tests/testBayesTree
true
false
true
-
- make
- -j2
- testGaussianFactor.run
- true
- true
- true
-
make
-j2
@@ -484,6 +478,7 @@
make
+
testGraph.run
true
false
@@ -579,6 +574,7 @@
make
+
testInference.run
true
false
@@ -586,6 +582,7 @@
make
+
testGaussianBayesNet.run
true
false
@@ -593,6 +590,7 @@
make
+
testGaussianFactor.run
true
false
@@ -600,6 +598,7 @@
make
+
testJunctionTree.run
true
false
@@ -607,6 +606,7 @@
make
+
testSymbolicBayesNet.run
true
false
@@ -614,6 +614,7 @@
make
+
testSymbolicFactorGraph.run
true
false
@@ -821,12 +822,19 @@
make
-
testGaussianISAM.run
true
true
true
+
+ make
+
+ testSymbolicFactorGraph.run
+ true
+ true
+ true
+
make
-j2
@@ -925,7 +933,6 @@
make
-
testErrors.run
true
false
@@ -1075,10 +1082,10 @@
true
true
-
+
make
- -j2
- testEliminationTree.run
+
+ tests/testEliminationTree.run
true
true
true
@@ -1099,6 +1106,14 @@
true
true
+
+ make
+
+ tests/testConditional.run
+ true
+ true
+ true
+
make
-j2
@@ -1261,6 +1276,7 @@
make
+
testSimulated2DOriented.run
true
false
@@ -1300,6 +1316,7 @@
make
+
testSimulated2D.run
true
false
@@ -1307,6 +1324,7 @@
make
+
testSimulated3D.run
true
false
@@ -1354,6 +1372,7 @@
make
+
tests/testGaussianISAM2
true
false
@@ -1375,86 +1394,6 @@
true
true
-
- make
- -j2
- install
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- dist
- true
- true
- true
-
-
- make
- -j2
- inference/tests/testEliminationTree
- true
- true
- true
-
-
- make
- -j2
- slam/tests/testGaussianISAM2
- true
- true
- true
-
-
- make
- -j2
- inference/tests/testVariableIndex
- true
- true
- true
-
-
- make
- -j2
- inference/tests/testJunctionTree
- true
- true
- true
-
-
- make
- -j2
- linear/tests/testGaussianJunctionTree
- true
- true
- true
-
make
-j2
@@ -1551,6 +1490,86 @@
true
true
+
+ make
+ -j2
+ install
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ dist
+ true
+ true
+ true
+
+
+ make
+ -j2
+ inference/tests/testEliminationTree
+ true
+ true
+ true
+
+
+ make
+ -j2
+ slam/tests/testGaussianISAM2
+ true
+ true
+ true
+
+
+ make
+ -j2
+ inference/tests/testVariableIndex
+ true
+ true
+ true
+
+
+ make
+ -j2
+ inference/tests/testJunctionTree
+ true
+ true
+ true
+
+
+ make
+ -j2
+ linear/tests/testGaussianJunctionTree
+ true
+ true
+ true
+
make
-j2
@@ -1905,6 +1924,14 @@
true
true
+
+ make
+ -j2
+ testGaussianFactor.run
+ true
+ true
+ true
+
make
-j2
@@ -1931,7 +1958,6 @@
make
-
tests/testBayesTree.run
true
false
@@ -1939,7 +1965,6 @@
make
-
testBinaryBayesNet.run
true
false
@@ -1987,7 +2012,6 @@
make
-
testSymbolicBayesNet.run
true
false
@@ -1995,7 +2019,6 @@
make
-
tests/testSymbolicFactor.run
true
false
@@ -2003,7 +2026,6 @@
make
-
testSymbolicFactorGraph.run
true
false
@@ -2019,20 +2041,11 @@
make
-
tests/testBayesTree
true
false
true
-
- make
- -j2
- testGaussianFactor.run
- true
- true
- true
-
make
-j2
@@ -2067,6 +2080,7 @@
make
+
testGraph.run
true
false
@@ -2162,6 +2176,7 @@
make
+
testInference.run
true
false
@@ -2169,6 +2184,7 @@
make
+
testGaussianBayesNet.run
true
false
@@ -2176,6 +2192,7 @@
make
+
testGaussianFactor.run
true
false
@@ -2183,6 +2200,7 @@
make
+
testJunctionTree.run
true
false
@@ -2190,6 +2208,7 @@
make
+
testSymbolicBayesNet.run
true
false
@@ -2197,6 +2216,7 @@
make
+
testSymbolicFactorGraph.run
true
false
@@ -2404,12 +2424,19 @@
make
-
testGaussianISAM.run
true
true
true
+
+ make
+
+ testSymbolicFactorGraph.run
+ true
+ true
+ true
+
make
-j2
@@ -2508,7 +2535,6 @@
make
-
testErrors.run
true
false
@@ -2658,10 +2684,10 @@
true
true
-
+
make
- -j2
- testEliminationTree.run
+
+ tests/testEliminationTree.run
true
true
true
@@ -2682,6 +2708,14 @@
true
true
+
+ make
+
+ tests/testConditional.run
+ true
+ true
+ true
+
make
-j2
@@ -2844,6 +2878,7 @@
make
+
testSimulated2DOriented.run
true
false
@@ -2883,6 +2918,7 @@
make
+
testSimulated2D.run
true
false
@@ -2890,6 +2926,7 @@
make
+
testSimulated3D.run
true
false
@@ -2937,6 +2974,7 @@
make
+
tests/testGaussianISAM2
true
false
@@ -2958,86 +2996,6 @@
true
true
-
- make
- -j2
- install
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- dist
- true
- true
- true
-
-
- make
- -j2
- inference/tests/testEliminationTree
- true
- true
- true
-
-
- make
- -j2
- slam/tests/testGaussianISAM2
- true
- true
- true
-
-
- make
- -j2
- inference/tests/testVariableIndex
- true
- true
- true
-
-
- make
- -j2
- inference/tests/testJunctionTree
- true
- true
- true
-
-
- make
- -j2
- linear/tests/testGaussianJunctionTree
- true
- true
- true
-
make
-j2
@@ -3134,6 +3092,86 @@
true
true
+
+ make
+ -j2
+ install
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ dist
+ true
+ true
+ true
+
+
+ make
+ -j2
+ inference/tests/testEliminationTree
+ true
+ true
+ true
+
+
+ make
+ -j2
+ slam/tests/testGaussianISAM2
+ true
+ true
+ true
+
+
+ make
+ -j2
+ inference/tests/testVariableIndex
+ true
+ true
+ true
+
+
+ make
+ -j2
+ inference/tests/testJunctionTree
+ true
+ true
+ true
+
+
+ make
+ -j2
+ linear/tests/testGaussianJunctionTree
+ true
+ true
+ true
+
make
-j2
diff --git a/inference/Makefile.am b/inference/Makefile.am
index e1c020d83..5aec1229e 100644
--- a/inference/Makefile.am
+++ b/inference/Makefile.am
@@ -19,8 +19,8 @@ headers += SymbolMap.h Factor-inl.h Conditional.h IndexTable.h
# Symbolic Inference
sources += Factor.cpp SymbolicFactorGraph.cpp
-check_PROGRAMS += tests/testSymbolicFactor tests/testSymbolicFactorGraph tests/testSymbolicBayesNet
-check_PROGRAMS += tests/testVariableIndex tests/testVariableSlots
+check_PROGRAMS += tests/testSymbolicFactor tests/testSymbolicFactorGraph tests/testConditional
+check_PROGRAMS += tests/testSymbolicBayesNet tests/testVariableIndex tests/testVariableSlots
# Inference
headers += inference-inl.h VariableSlots-inl.h
diff --git a/inference/tests/testConditional.cpp b/inference/tests/testConditional.cpp
new file mode 100644
index 000000000..c383c3e6b
--- /dev/null
+++ b/inference/tests/testConditional.cpp
@@ -0,0 +1,95 @@
+/**
+ * @file testConditional.cpp
+ * @brief Unit tests for Conditional class
+ * @author Frank Dellaert
+ */
+
+#include // for operator +=
+#include // for operator +=
+using namespace boost::assign;
+
+#include
+#include
+#include
+
+using namespace std;
+using namespace gtsam;
+
+/* ************************************************************************* */
+TEST( Conditional, empty )
+{
+ Conditional c0;
+ LONGS_EQUAL(0,c0.nrFrontals())
+ LONGS_EQUAL(0,c0.nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, noParents )
+{
+ Conditional c0(0);
+ LONGS_EQUAL(1,c0.nrFrontals())
+ LONGS_EQUAL(0,c0.nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, oneParents )
+{
+ Conditional c0(0,1);
+ LONGS_EQUAL(1,c0.nrFrontals())
+ LONGS_EQUAL(1,c0.nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, twoParents )
+{
+ Conditional c0(0,1,2);
+ LONGS_EQUAL(1,c0.nrFrontals())
+ LONGS_EQUAL(2,c0.nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, threeParents )
+{
+ Conditional c0(0,1,2,3);
+ LONGS_EQUAL(1,c0.nrFrontals())
+ LONGS_EQUAL(3,c0.nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, fourParents )
+{
+ vector parents;
+ parents += 1,2,3,4;
+ Conditional c0(0,parents);
+ LONGS_EQUAL(1,c0.nrFrontals())
+ LONGS_EQUAL(4,c0.nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, fromRange )
+{
+ list keys;
+ keys += 1,2,3,4,5;
+ Conditional::shared_ptr c0 = Conditional::fromRange(keys.begin(),keys.end(),2);
+ LONGS_EQUAL(2,c0->nrFrontals())
+ LONGS_EQUAL(3,c0->nrParents())
+}
+
+/* ************************************************************************* */
+TEST( Conditional, equals )
+{
+ Conditional c0(0, 1, 2), c1(0, 1, 2), c2(1, 2, 3), c3(3,4);
+ CHECK(c0.equals(c1));
+ CHECK(c1.equals(c0));
+ CHECK(!c0.equals(c2));
+ CHECK(!c2.equals(c0));
+ CHECK(!c0.equals(c3));
+ CHECK(!c3.equals(c0));
+}
+
+/* ************************************************************************* */
+int main() {
+ TestResult tr;
+ return TestRegistry::runAllTests(tr);
+}
+/* ************************************************************************* */