Release version for Erange 4.0a
[erange.git] / test / testMakeSiteTrack.py
1 '''
2 Created on Dec 2, 2010
3
4 @author: sau
5 '''
6 import unittest
7 import os
8 from erange import makesitetrack
9
10
11 class TestMakeSiteTrack(unittest.TestCase):
12
13     testInputFile = "erangeTestSiteFile"
14     testOutputFile = "erangeTestBedFile"
15
16
17     def setUp(self):
18         self.createCompactInputFile()
19
20
21     def tearDown(self):
22         try:
23             os.remove(self.testInputFile)
24         except OSError:
25             print "site file does not exist"
26
27         try:
28             os.remove(self.testOutputFile)
29         except OSError:
30             print "bed file does not exist"
31
32
33     def createStandardInputFile(self):
34         siteFile = open(self.testInputFile, "w")
35         siteFile.write("#comment line\n")
36         siteFile.write("name\tchr1\t100\t175\t11\t+\t-\n")
37         siteFile.close()
38
39
40     def createCompactInputFile(self):
41         siteFile = open(self.testInputFile, "w")
42         siteFile.write("#comment line\n")
43         siteFile.write("chr1:100-175\t11\t+\t-\n")
44         siteFile.close()
45
46
47     def testMakeSiteTrack(self):
48         self.createCompactInputFile()
49         makesitetrack.makesitetrack(self.testInputFile, self.testOutputFile)
50         bedfile = open(self.testOutputFile)
51         header = 'track name="" visibility=4 itemRgb="On"\n'
52         self.assertEquals(header, bedfile.readline())
53         result = "chr1\t100\t176\t-1\t11\t+\t-\t-\t0,0,0\n"
54         self.assertEquals(result, bedfile.readline())
55
56         makesitetrack.makesitetrack(self.testInputFile, self.testOutputFile, append=True, noHeader=True)
57         bedfile = open(self.testOutputFile)
58         header = bedfile.readline()
59         firstEntry = bedfile.readline()
60         self.assertEquals(firstEntry, bedfile.readline())
61
62
63     def testNonCompactMakeSiteTrack(self):
64         try:
65             os.remove(self.testInputFile)
66         except OSError:
67             print "site file does not exist"
68
69         self.createStandardInputFile()
70         makesitetrack.makesitetrack(self.testInputFile, self.testOutputFile, compact=False, color="255,255,255")
71         bedfile = open(self.testOutputFile)
72         bedfile.readline()
73         result = "chr1\t100\t176\t-1\t1.0\t+\t-\t-\t255,255,255\n"
74         self.assertEquals(result, bedfile.readline())
75
76
77     def testMain(self):
78         self.createCompactInputFile()
79         argv = ["makesitetrack"]
80         self.assertRaises(SystemExit, makesitetrack.main, argv)
81         argv = ["makesitetrack", self.testInputFile, self.testOutputFile]
82         makesitetrack.main(argv)
83
84
85 def suite():
86     suite = unittest.TestSuite()
87     suite.addTest(unittest.makeSuite(TestMakeSiteTrack))
88
89     return suite
90
91
92 if __name__ == "__main__":
93     #import sys;sys.argv = ['', 'Test.testName']
94     unittest.main()