import unittest
from igraph import *

class MaxFlowTests(unittest.TestCase):
    def setUp(self):
	self.g=Graph(4, [(0, 1), (0, 2), (1, 2), (1, 3), (2, 3)])
	self.capacities = [4, 2, 10, 2, 2]
	for idx in range(self.g.ecount()):
	    self.g.es[idx]["capacity"]=self.capacities[idx]

    def testCapacities(self):
	self.failUnless(self.capacities == \
			self.g.es.get_attribute_values("capacity"))

    def testMaxFlowValue(self):
	self.failUnless(self.g.maxflow_value(0, 3) == 2)
	self.failUnless(self.g.maxflow_value(0, 3, self.capacities) == 4)
	self.failUnless(self.g.maxflow_value(0, 3, "capacity") == 4)
	self.assertRaises(KeyError, self.g.maxflow_value, 0, 3, "unknown")

    def testMinCutValue(self):
	self.failUnless(self.g.mincut_value(0, 3) == 2)
	self.failUnless(self.g.mincut_value(0, 3, self.capacities) == 4)
	self.failUnless(self.g.mincut_value(0, 3, "capacity") == 4)
	self.assertRaises(KeyError, self.g.mincut_value, 0, 3, "unknown")
	self.failUnless(self.g.mincut_value() == 2)
	self.failUnless(self.g.mincut_value(source=0) == 2)
	self.failUnless(self.g.mincut_value(target=2) == 2)

def suite():
    flow_suite = unittest.makeSuite(MaxFlowTests)
    return unittest.TestSuite([flow_suite])

def test():
    runner = unittest.TextTestRunner()
    runner.run(suite())
    
if __name__ == "__main__":
    test()



syntax highlighted by Code2HTML, v. 0.9.1