'''
Created on Dec 2, 2010

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


class TestBinsToCdf(unittest.TestCase):

    testInputFile = "erangeTestBinFile"
    testOutputFile = "erangeTestCDFFile"


    def setUp(self):
        binfile = open(self.testInputFile, "w")
        binfile.write("field1\tfield2\t10\tfield4\t2\t3\n")
        binfile.write("field1\tfield2\t20\tfield4\t1\t4\n")
        binfile.write("field1\tfield2\t0\tfield4\n")
        binfile.write("too short\n")
        binfile.close()


    def tearDown(self):
        try:
            os.remove(self.testInputFile)
        except OSError:
            print "bin file does not exist"

        try:
            os.remove(self.testOutputFile)
        except OSError:
            print "cdf file does not exist"


    def testBinsToCdf(self):
        binstocdf.binToCDF(self.testInputFile, self.testOutputFile)
        resultFile = open(self.testOutputFile)
        resultList = resultFile.readlines()
        self.assertEquals(3, len(resultList))
        self.assertEquals("field1\tfield2\t10\tfield4\t20\t50\n", resultList[0])
        self.assertEquals("field1\tfield2\t20\tfield4\t5\t25\n", resultList[1])
        self.assertEquals("field1\tfield2\t0\tfield4\n", resultList[2])


    def testMain(self):
        argv = ["binstocdf"]
        self.assertRaises(SystemExit, binstocdf.main, argv)
        argv = ["binstocdf", self.testInputFile, self.testOutputFile]
        binstocdf.main(argv)
        resultFile = open(self.testOutputFile)
        self.assertEquals(3, len(resultFile.readlines()))


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

    return suite


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