Miscellaneous improvements in FactorGraph, Permute, HAK
[libdai.git] / tests / unit / factorgraph_test.cpp
index 3268792..5ad84a7 100644 (file)
@@ -198,6 +198,12 @@ BOOST_AUTO_TEST_CASE( QueriesTest ) {
     BOOST_CHECK( G1.isPairwise() );
     BOOST_CHECK( G1.MarkovGraph() == H );
     BOOST_CHECK( G1.bipGraph() == K );
+    BOOST_CHECK(  G1.isMaximal( 0 ) );
+    BOOST_CHECK(  G1.isMaximal( 1 ) );
+    BOOST_CHECK( !G1.isMaximal( 2 ) );
+    BOOST_CHECK_EQUAL( G1.maximalFactor( 0 ), 0 );
+    BOOST_CHECK_EQUAL( G1.maximalFactor( 1 ), 1 );
+    BOOST_CHECK_EQUAL( G1.maximalFactor( 2 ), 0 );
     BOOST_CHECK_EQUAL( G1.maximalFactorDomains().size(), 2 );
     BOOST_CHECK_EQUAL( G1.maximalFactorDomains()[0], v01 );
     BOOST_CHECK_EQUAL( G1.maximalFactorDomains()[1], v12 );
@@ -233,6 +239,14 @@ BOOST_AUTO_TEST_CASE( QueriesTest ) {
     BOOST_CHECK( G2.isPairwise() );
     BOOST_CHECK( G2.MarkovGraph() == H );
     BOOST_CHECK( G2.bipGraph() == K );
+    BOOST_CHECK(  G2.isMaximal( 0 ) );
+    BOOST_CHECK(  G2.isMaximal( 1 ) );
+    BOOST_CHECK( !G2.isMaximal( 2 ) );
+    BOOST_CHECK(  G2.isMaximal( 3 ) );
+    BOOST_CHECK_EQUAL( G2.maximalFactor( 0 ), 0 );
+    BOOST_CHECK_EQUAL( G2.maximalFactor( 1 ), 1 );
+    BOOST_CHECK_EQUAL( G2.maximalFactor( 2 ), 0 );
+    BOOST_CHECK_EQUAL( G2.maximalFactor( 3 ), 3 );
     BOOST_CHECK_EQUAL( G2.maximalFactorDomains().size(), 3 );
     BOOST_CHECK_EQUAL( G2.maximalFactorDomains()[0], v01 );
     BOOST_CHECK_EQUAL( G2.maximalFactorDomains()[1], v12 );
@@ -283,6 +297,16 @@ BOOST_AUTO_TEST_CASE( QueriesTest ) {
     BOOST_CHECK( G3.isPairwise() );
     BOOST_CHECK( G3.MarkovGraph() == H );
     BOOST_CHECK( G3.bipGraph() == K );
+    BOOST_CHECK(  G3.isMaximal( 0 ) );
+    BOOST_CHECK(  G3.isMaximal( 1 ) );
+    BOOST_CHECK( !G3.isMaximal( 2 ) );
+    BOOST_CHECK(  G3.isMaximal( 3 ) );
+    BOOST_CHECK(  G3.isMaximal( 4 ) );
+    BOOST_CHECK_EQUAL( G3.maximalFactor( 0 ), 0 );
+    BOOST_CHECK_EQUAL( G3.maximalFactor( 1 ), 1 );
+    BOOST_CHECK_EQUAL( G3.maximalFactor( 2 ), 0 );
+    BOOST_CHECK_EQUAL( G3.maximalFactor( 3 ), 3 );
+    BOOST_CHECK_EQUAL( G3.maximalFactor( 4 ), 4 );
     BOOST_CHECK_EQUAL( G3.maximalFactorDomains().size(), 4 );
     BOOST_CHECK_EQUAL( G3.maximalFactorDomains()[0], v01 );
     BOOST_CHECK_EQUAL( G3.maximalFactorDomains()[1], v12 );
@@ -328,6 +352,18 @@ BOOST_AUTO_TEST_CASE( QueriesTest ) {
     BOOST_CHECK( !G4.isPairwise() );
     BOOST_CHECK( G4.MarkovGraph() == H );
     BOOST_CHECK( G4.bipGraph() == K );
+    BOOST_CHECK(  G4.isMaximal( 0 ) );
+    BOOST_CHECK( !G4.isMaximal( 1 ) );
+    BOOST_CHECK( !G4.isMaximal( 2 ) );
+    BOOST_CHECK(  G4.isMaximal( 3 ) );
+    BOOST_CHECK( !G4.isMaximal( 4 ) );
+    BOOST_CHECK(  G4.isMaximal( 5 ) );
+    BOOST_CHECK_EQUAL( G4.maximalFactor( 0 ), 0 );
+    BOOST_CHECK_EQUAL( G4.maximalFactor( 1 ), 5 );
+    BOOST_CHECK_EQUAL( G4.maximalFactor( 2 ), 0 );
+    BOOST_CHECK_EQUAL( G4.maximalFactor( 3 ), 3 );
+    BOOST_CHECK_EQUAL( G4.maximalFactor( 4 ), 5 );
+    BOOST_CHECK_EQUAL( G4.maximalFactor( 5 ), 5 );
     BOOST_CHECK_EQUAL( G4.maximalFactorDomains().size(), 3 );
     BOOST_CHECK_EQUAL( G4.maximalFactorDomains()[0], v01 );
     BOOST_CHECK_EQUAL( G4.maximalFactorDomains()[1], v02 );