def test_returns_3_shortest_hypergraphs_for_nielsen_example_with_k_equal_3(
         self):
     threeShortest = ksh.k_shortest_hyperpaths(
         self.nielsenGraph, 's', 't', 3)
     self.assertEquals(len(threeShortest), 3)
     # shortest path
     hyperpath = threeShortest[0]
     self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'})
     self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3)
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'}))
     # second shortest path
     hyperpath = threeShortest[1]
     self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'})
     self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3)
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'2'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'}))
     # third shortest path
     hyperpath = threeShortest[2]
     self.assertEqual(hyperpath.get_node_set(), {'s', '2', '3', '4', 't'})
     self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 4)
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'3'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'2', '3'}, {'4'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'4'}, {'t'}))
 def test_returns_3_shortest_hypergraphs_for_nielsen_example_with_k_equal_3(
         self):
     threeShortest = ksh.k_shortest_hyperpaths(self.nielsenGraph, 's', 't',
                                               3)
     self.assertEqual(len(threeShortest), 3)
     # shortest path
     hyperpath = threeShortest[0]
     self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'})
     self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3)
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'}))
     # second shortest path
     hyperpath = threeShortest[1]
     self.assertEqual(hyperpath.get_node_set(), {'s', '1', '2', 't'})
     self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 3)
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'2'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'1', '2'}, {'t'}))
     # third shortest path
     hyperpath = threeShortest[2]
     self.assertEqual(hyperpath.get_node_set(), {'s', '2', '3', '4', 't'})
     self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 4)
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'2'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'3'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'2', '3'}, {'4'}))
     self.assertTrue(hyperpath.get_hyperedge_id({'4'}, {'t'}))
    def test_returns_empty_list_if_no_s_t_path(self):
        H = DirectedHypergraph()
        H.add_node('s')
        H.add_node('1')
        H.add_node('2')
        H.add_node('t')
        H.add_hyperedge({'s'}, {'1'}, weight=1)
        H.add_hyperedge({'1', '2'}, {'t'}, weight=1)

        output = ksh.k_shortest_hyperpaths(H, 's', 't', 1)
        self.assertEqual(output, [])
    def test_returns_empty_list_if_no_s_t_path(self):
        H = DirectedHypergraph()
        H.add_node('s')
        H.add_node('1')
        H.add_node('2')
        H.add_node('t')
        H.add_hyperedge({'s'}, {'1'}, weight=1)
        H.add_hyperedge({'1', '2'}, {'t'}, weight=1)

        output = ksh.k_shortest_hyperpaths(H, 's', 't', 1)
        self.assertEqual(output, [])
    def test_returns_only_one_hyperpath_for_k_equals_one(self):
        H = DirectedHypergraph()
        H.add_node('s')
        H.add_node('1')
        H.add_node('2')
        H.add_node('3')
        H.add_node('t')
        H.add_hyperedge({'s'}, {'1'}, weight=1)
        H.add_hyperedge({'s'}, {'2'}, weight=1)
        H.add_hyperedge({'s'}, {'3'}, weight=1)
        H.add_hyperedge({'1'}, {'t'}, weight=1)
        H.add_hyperedge({'2', '3'}, {'t'}, weight=1)

        output = ksh.k_shortest_hyperpaths(H, 's', 't', 1)
        self.assertEqual(len(output), 1)
    def test_returns_only_one_hyperpath_for_k_equals_one(self):
        H = DirectedHypergraph()
        H.add_node('s')
        H.add_node('1')
        H.add_node('2')
        H.add_node('3')
        H.add_node('t')
        H.add_hyperedge({'s'}, {'1'}, weight=1)
        H.add_hyperedge({'s'}, {'2'}, weight=1)
        H.add_hyperedge({'s'}, {'3'}, weight=1)
        H.add_hyperedge({'1'}, {'t'}, weight=1)
        H.add_hyperedge({'2', '3'}, {'t'}, weight=1)

        output = ksh.k_shortest_hyperpaths(H, 's', 't', 1)
        self.assertEqual(len(output), 1)
    def test_returns_shortest_hyperpath_for_k_equals_one(self):
        H = DirectedHypergraph()
        H.add_node('s')
        H.add_node('1')
        H.add_node('2')
        H.add_node('3')
        H.add_node('t')
        H.add_hyperedge({'s'}, {'1'}, weight=1)
        H.add_hyperedge({'s'}, {'2'}, weight=1)
        H.add_hyperedge({'s'}, {'3'}, weight=1)
        H.add_hyperedge({'1'}, {'t'}, weight=1)
        H.add_hyperedge({'2', '3'}, {'t'}, weight=1)

        output = ksh.k_shortest_hyperpaths(H, 's', 't', 1)
        hyperpath = output[0]
        self.assertEqual(hyperpath.get_node_set(), {'s', '1', 't'})
        self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 2)
        self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'}))
        self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'t'}))
    def test_returns_shortest_hyperpath_for_k_equals_one(self):
        H = DirectedHypergraph()
        H.add_node('s')
        H.add_node('1')
        H.add_node('2')
        H.add_node('3')
        H.add_node('t')
        H.add_hyperedge({'s'}, {'1'}, weight=1)
        H.add_hyperedge({'s'}, {'2'}, weight=1)
        H.add_hyperedge({'s'}, {'3'}, weight=1)
        H.add_hyperedge({'1'}, {'t'}, weight=1)
        H.add_hyperedge({'2', '3'}, {'t'}, weight=1)

        output = ksh.k_shortest_hyperpaths(H, 's', 't', 1)
        hyperpath = output[0]
        self.assertEqual(hyperpath.get_node_set(), {'s', '1', 't'})
        self.assertEqual(len(hyperpath.get_hyperedge_id_set()), 2)
        self.assertTrue(hyperpath.get_hyperedge_id({'s'}, {'1'}))
        self.assertTrue(hyperpath.get_hyperedge_id({'1'}, {'t'}))