Working on BipGraph unit tests
authorJoris Mooij <joris.mooij@tuebingen.mpg.de>
Mon, 22 Mar 2010 16:11:24 +0000 (17:11 +0100)
committerJoris Mooij <joris.mooij@tuebingen.mpg.de>
Mon, 22 Mar 2010 16:11:24 +0000 (17:11 +0100)
Makefile
tests/unit/bipgraph.cpp [new file with mode: 0644]

index a5c6ce3..2ea30fa 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -122,12 +122,13 @@ examples : examples/example$(EE) examples/example_bipgraph$(EE) examples/example
 
 matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME)
 
 
 matlabs : matlab/dai$(ME) matlab/dai_readfg$(ME) matlab/dai_writefg$(ME) matlab/dai_potstrength$(ME)
 
-unittests : tests/unit/var$(EE) tests/unit/smallset$(EE) tests/unit/varset$(EE) tests/unit/graph$(EE)
+unittests : tests/unit/var$(EE) tests/unit/smallset$(EE) tests/unit/varset$(EE) tests/unit/graph$(EE) tests/unit/bipgraph$(EE)
        echo Running unit tests...
        tests/unit/var
        tests/unit/smallset
        tests/unit/varset
        tests/unit/graph
        echo Running unit tests...
        tests/unit/var
        tests/unit/smallset
        tests/unit/varset
        tests/unit/graph
+       tests/unit/bipgraph
 
 tests : tests/testdai$(EE) tests/testem/testem$(EE) tests/testbbp$(EE) $(unittests)
 
 
 tests : tests/testdai$(EE) tests/testem/testem$(EE) tests/testbbp$(EE) $(unittests)
 
@@ -197,6 +198,8 @@ tests/unit/varset$(EE) : tests/unit/varset.cpp $(HEADERS) $(LIB)/libdai$(LE)
        $(CC) $(CCO)$@ $< $(LIBS) $(BOOSTLIBS_UTF)
 tests/unit/graph$(EE) : tests/unit/graph.cpp $(HEADERS) $(LIB)/libdai$(LE)
        $(CC) $(CCO)$@ $< $(LIBS) $(BOOSTLIBS_UTF)
        $(CC) $(CCO)$@ $< $(LIBS) $(BOOSTLIBS_UTF)
 tests/unit/graph$(EE) : tests/unit/graph.cpp $(HEADERS) $(LIB)/libdai$(LE)
        $(CC) $(CCO)$@ $< $(LIBS) $(BOOSTLIBS_UTF)
+tests/unit/bipgraph$(EE) : tests/unit/bipgraph.cpp $(HEADERS) $(LIB)/libdai$(LE)
+       $(CC) $(CCO)$@ $< $(LIBS) $(BOOSTLIBS_UTF)
 
 
 # TESTS
 
 
 # TESTS
@@ -303,7 +306,7 @@ clean :
        -rm matlab/*$(ME)
        -rm examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE) examples/example_permute$(EE) examples/example_sprinkler$(EE) examples/example_sprinkler_gibbs$(EE) examples/example_sprinkler_em$(EE)
        -rm tests/testdai$(EE) tests/testem/testem$(EE) tests/testbbp$(EE)
        -rm matlab/*$(ME)
        -rm examples/example$(EE) examples/example_bipgraph$(EE) examples/example_varset$(EE) examples/example_permute$(EE) examples/example_sprinkler$(EE) examples/example_sprinkler_gibbs$(EE) examples/example_sprinkler_em$(EE)
        -rm tests/testdai$(EE) tests/testem/testem$(EE) tests/testbbp$(EE)
-       -rm tests/unit/var$(EE) tests/unit/smallset$(EE) tests/unit/varset$(EE) tests/unit/graph$(EE)
+       -rm tests/unit/var$(EE) tests/unit/smallset$(EE) tests/unit/varset$(EE) tests/unit/graph$(EE) tests/unit/bipgraph$(EE)
        -rm utils/fg2dot$(EE) utils/createfg$(EE) utils/fginfo$(EE)
        -rm -R doc
        -rm -R lib
        -rm utils/fg2dot$(EE) utils/createfg$(EE) utils/fginfo$(EE)
        -rm -R doc
        -rm -R lib
@@ -334,6 +337,7 @@ clean :
        -del tests\unit\smallset$(EE)
        -del tests\unit\varset$(EE)
        -del tests\unit\graph$(EE)
        -del tests\unit\smallset$(EE)
        -del tests\unit\varset$(EE)
        -del tests\unit\graph$(EE)
+       -del tests\unit\bipgraph$(EE)
        -del $(LIB)\libdai$(LE)
        -rmdir lib
 endif
        -del $(LIB)\libdai$(LE)
        -rmdir lib
 endif
diff --git a/tests/unit/bipgraph.cpp b/tests/unit/bipgraph.cpp
new file mode 100644 (file)
index 0000000..8058915
--- /dev/null
@@ -0,0 +1,136 @@
+/*  This file is part of libDAI - http://www.libdai.org/
+ *
+ *  libDAI is licensed under the terms of the GNU General Public License version
+ *  2, or (at your option) any later version. libDAI is distributed without any
+ *  warranty. See the file COPYING for more details.
+ *
+ *  Copyright (C) 2010  Joris Mooij      [joris dot mooij at libdai dot org]
+ */
+
+
+#define BOOST_TEST_DYN_LINK
+
+
+#include <dai/bipgraph.h>
+#include <vector>
+#include <strstream>
+
+
+using namespace dai;
+
+
+#define BOOST_TEST_MODULE BipartiteGraphTest
+
+
+#include <boost/test/unit_test.hpp>
+
+
+BOOST_AUTO_TEST_CASE( ConstructorsTest ) {
+    // check constructors
+    typedef BipartiteGraph::Edge Edge;
+
+    BipartiteGraph G;
+    BOOST_CHECK_EQUAL( G.nrNodes1(), 0 );
+    BOOST_CHECK_EQUAL( G.nrNodes2(), 0 );
+    BOOST_CHECK_EQUAL( G.nrEdges(), 0 );
+    BOOST_CHECK( G.isConnected() );
+    BOOST_CHECK( G.isTree() );
+    G.checkConsistency();
+
+    std::vector<Edge> edges;
+    edges.push_back( Edge(0, 0) );
+    edges.push_back( Edge(0, 1) );
+    edges.push_back( Edge(1, 1) );
+    edges.push_back( Edge(1, 2) );
+    edges.push_back( Edge(1, 2) );
+    BipartiteGraph G2( 2, 3, edges.begin(), edges.end() );
+    BOOST_CHECK_EQUAL( G2.nrNodes1(), 2 );
+    BOOST_CHECK_EQUAL( G2.nrNodes2(), 3 );
+    BOOST_CHECK_EQUAL( G2.nrEdges(), 4 );
+    BOOST_CHECK( G2.isConnected() );
+    BOOST_CHECK( G2.isTree() );
+    G2.checkConsistency();
+
+    edges.push_back( Edge(1, 0) );
+    BipartiteGraph G3( 2, 3, edges.begin(), edges.end() );
+    BOOST_CHECK_EQUAL( G3.nrNodes1(), 2 );
+    BOOST_CHECK_EQUAL( G3.nrNodes2(), 3 );
+    BOOST_CHECK_EQUAL( G3.nrEdges(), 5 );
+    BOOST_CHECK( G3.isConnected() );
+    BOOST_CHECK( !G3.isTree() );
+    G3.checkConsistency();
+
+    BipartiteGraph G4( 3, 3, edges.begin(), edges.end() );
+    BOOST_CHECK_EQUAL( G4.nrNodes1(), 3 );
+    BOOST_CHECK_EQUAL( G4.nrNodes2(), 3 );
+    BOOST_CHECK_EQUAL( G4.nrEdges(), 5 );
+    BOOST_CHECK( !G4.isConnected() );
+    BOOST_CHECK( !G4.isTree() );
+    G4.checkConsistency();
+
+    G.construct( 3, 3, edges.begin(), edges.end() );
+    BOOST_CHECK_EQUAL( G.nrNodes1(), 3 );
+    BOOST_CHECK_EQUAL( G.nrNodes2(), 3 );
+    BOOST_CHECK_EQUAL( G.nrEdges(), 5 );
+    BOOST_CHECK( !G.isConnected() );
+    BOOST_CHECK( !G.isTree() );
+    G.checkConsistency();
+}
+
+
+BOOST_AUTO_TEST_CASE( NeighborTest ) {
+    // TODO   
+}
+
+
+BOOST_AUTO_TEST_CASE( AddEraseTest ) {
+    // TODO   
+}
+
+
+BOOST_AUTO_TEST_CASE( QueriesTest ) {
+    // TODO   
+}
+
+
+BOOST_AUTO_TEST_CASE( StreamTest ) {
+    // check printDot
+    typedef BipartiteGraph::Edge Edge;
+    std::vector<Edge> edges;
+    edges.push_back( Edge(0, 0) );
+    edges.push_back( Edge(0, 1) );
+    edges.push_back( Edge(1, 1) );
+    edges.push_back( Edge(1, 2) );
+    BipartiteGraph G( 2, 3, edges.begin(), edges.end() );
+
+    std::stringstream ss;
+    G.printDot( ss );
+
+    std::string s;
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "graph G {" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "node[shape=circle,width=0.4,fixedsize=true];" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\tx0;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\tx1;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "node[shape=box,width=0.3,height=0.3,fixedsize=true];" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\ty0;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\ty1;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\ty2;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\tx0 -- y0;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\tx0 -- y1;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\tx1 -- y1;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "\tx1 -- y2;" );
+    std::getline( ss, s );
+    BOOST_CHECK_EQUAL( s, "}" );
+}