'''
Created on Jul 28, 2010

@author: sau
'''

import os, unittest
from erange import makeGraphs

testFileName = "/tmp/testEdgeFileForUnitTests.txt"

class TestMakeGraphs(unittest.TestCase):

    def setUp(self):
        pass


    def tearDown(self):
        pass


    def testGetEdges(self):
        nodeList = []
        self.assertEquals({}, makeGraphs.getEdges(nodeList))

        nodeEntry = "ex_node1\tex_node2\t1"
        nodeList.append(nodeEntry)
        result = {"ex_node1": [("ex_node2", 1)],
                  "ex_node2": [("ex_node1", 1)]}
        self.assertEquals(result, makeGraphs.getEdges(nodeList))

        nodeEntry = "ex_node1\tex_node3\t2"
        nodeList.append(nodeEntry)
        result = {"ex_node1": [("ex_node2", 1), ("ex_node3", 2)],
                  "ex_node2": [("ex_node1", 1)],
                  "ex_node3": [("ex_node1", 2)]
        }
        self.assertEquals(result, makeGraphs.getEdges(nodeList))

        result = {"node1": [("node2", 1), ("node3", 2)],
                  "node2": [("node1", 1)],
                  "node3": [("node1", 2)]
        }
        self.assertEquals(result, makeGraphs.getEdges(nodeList, shorten=True))

        nodeEntry = "ex:node1\tex:node2\t1"
        nodeList = [nodeEntry]
        result = {"ex:node1": [("ex:node2", 1)],
                  "ex:node2": [("ex:node1", 1)]}
        self.assertEquals(result, makeGraphs.getEdges(nodeList, shorten=True))

        nodeEntry = "badLine"
        nodeList = [nodeEntry]
        self.assertEquals({}, makeGraphs.getEdges(nodeList))
        nodeEntry = "node1\tnode2\t1"
        nodeList.append(nodeEntry)
        result = {"node1": [("node2", 1)],
                  "node2": [("node1", 1)]}
        self.assertEquals(result, makeGraphs.getEdges(nodeList))


    def testGetEdgesFromFile(self):
        self.edgeFile = open(testFileName, "w")
        self.edgeFile.write("node1\tnode2\t1")
        self.edgeFile.close()

        result = {"node1": [("node2", 1)],
                  "node2": [("node1", 1)]}
        self.assertEquals(result, makeGraphs.getEdgesFromFile(testFileName))

        os.remove(testFileName)


def suite():
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(TestMakeGraphs))

    return suite


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()