@@ -38,19 +38,35 @@ MCMgraph makeGraph1() {
3838 return g;
3939}
4040
41+ // A corner case graph
42+ MCMgraph makeGraph2 () {
43+ MCMgraph g;
44+
45+ MCMnode &n0 = *g.addNode (0 );
46+ MCMnode &n1 = *g.addNode (1 );
47+ g.addEdge (0 , n0, n1, 1.0 , 1.0 );
48+ // g.addEdge(1, n1, n1, 1.0, 1.0);
49+ return g;
50+ }
51+
52+
4153// Test mcmdg.
4254void MCMTest::test_dg () {
4355 std::cout << " Running test: MCM-dg" << std::endl;
4456
45- MCMgraph g = makeGraph1 ();
46- CDouble result = mcmDG (g );
57+ MCMgraph g1 = makeGraph1 ();
58+ CDouble result = mcmDG (g1 );
4759 ASSERT_APPROX_EQUAL (2.5 , result, 1e-5 );
60+
61+ MCMgraph g2 = makeGraph2 ();
62+ result = mcmDG (g2);
63+ ASSERT_EQUAL (-INFINITY, result);
4864}
4965
5066// / Test MCM Howard.
5167void MCMTest::test_howard () {
5268 std::cout << " Running test: MCM-Howard" << std::endl;
53- MCMgraph g = makeGraph1 ();
69+ MCMgraph g1 = makeGraph1 ();
5470
5571 std::shared_ptr<std::vector<int >> ij = nullptr ;
5672 std::shared_ptr<std::vector<CDouble>> A = nullptr ;
@@ -60,12 +76,12 @@ void MCMTest::test_howard() {
6076 int nr_iterations = 0 ;
6177 int nr_components = 0 ;
6278
63- convertMCMgraphToMatrix (g , &ij, &A);
79+ convertMCMgraphToMatrix (g1 , &ij, &A);
6480
65- Howard (*ij,
81+ Howard (*ij,
6682 *A,
67- static_cast <int >(g .getNodes ().size ()),
68- static_cast <int >(g .getEdges ().size ()),
83+ static_cast <int >(g1 .getNodes ().size ()),
84+ static_cast <int >(g1 .getEdges ().size ()),
6985 &chi,
7086 &v,
7187 &policy,
@@ -83,6 +99,16 @@ void MCMTest::test_howard() {
8399 ASSERT_EQUAL (3 , policy->at (2 ));
84100 ASSERT_EQUAL (0 , policy->at (3 ));
85101 ASSERT_EQUAL (4 , policy->at (4 ));
102+
103+ MCMnode *criticalNode;
104+ CDouble result = maximumCycleMeanHoward (g1, &criticalNode);
105+ ASSERT_APPROX_EQUAL (2.5 , result, 1e-5 );
106+ ASSERT_THROW (criticalNode->id == 0 || criticalNode->id == 1 || criticalNode->id == 2
107+ || criticalNode->id == 3 );
108+
109+ MCMgraph g2 = makeGraph2 ();
110+ result = maximumCycleMeanHoward (g2, &criticalNode);
111+ ASSERT_EQUAL (-INFINITY, result);
86112}
87113
88114// / Test MCM Karp.
0 commit comments