'''
Created on Aug 26, 2010

@author: sau
'''
import unittest
import os
from erange import analyzego


class TestAnalyzeGO(unittest.TestCase):
    genome = "celegans"
    prefix = "testGO"
    inFileName = "testAnayzeGOInput.txt"

    def setUp(self):
        infile = open(self.inFileName, "w")
        infile.close()


    def tearDown(self):
        try:
            os.remove(self.inFileName)
        except OSError:
            pass

        try:
            os.remove("%s.gostat" % self.prefix)
        except OSError:
            pass

        try:
            os.remove("%s.gozscore" % self.prefix)
        except OSError:
            pass

        try:
            os.remove("%s.gosig" % self.prefix)
        except OSError:
            pass


    #TODO: write more tests
    def testAnalyzeGO(self):
        geneInfoList = []
        analyzego.analyzeGO(self.genome, geneInfoList, self.prefix)
        self.assertRaises(IOError, open, "%s.gostat" % self.prefix, "r")
        self.assertRaises(IOError, open, "%s.gozscore" % self.prefix, "r")
        self.assertRaises(IOError, open, "%s.gosig" % self.prefix, "r")

        geneInfoList = ["worm\tgeneID"]
        analyzego.analyzeGO(self.genome, geneInfoList, self.prefix)
        statfile = open("%s.gostat" % self.prefix, "r")
        stats = statfile.readlines()
        print len(stats)

        statfile.close()
        scorefile = open("%s.gozscore" % self.prefix, "r")
        scores = scorefile.readlines()
        print len(scores)

        scorefile.close()
        sigfile = open("%s.gosig" % self.prefix, "r")
        sigs = sigfile.readlines()
        print len(sigs)

        sigfile.close()


    def testMain(self):
        argv = ["analyzego", self.genome, self.inFileName, self.prefix]
        analyzego.main(argv)


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

    return suite


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