7 from Erange.commoncode import readDataset
8 from Erange import getSNPs
11 class TestGetSNPs(unittest.TestCase):
14 self.rdsDNA = readDataset("testDNARDSForUnitTests.rds", True, "DNA", verbose=True)
16 uniqueInsertList = [("uniqueID1", "chr1", 10, 20, "+", 1.0, "", ""),
17 ("uniqueID2", "chr1", 100, 200, "+", 1.0, "", ""),
18 ("uniqueID3", "chr1", 1000, 2000, "+", 1.0, "", "G10A")]
20 multiInsertList = [("multiID1", "chr2", 1010, 1020, "+", 0.5, "", ""),
21 ("multiID1", "chr2", 1010, 1020, "+", 0.5, "", ""),
22 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
23 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
24 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", ""),
25 ("multiID2", "chr2", 10100, 10200, "+", 0.25, "", "")]
27 self.rdsDNA.insertUniqs(uniqueInsertList)
28 self.rdsDNA.insertMulti(multiInsertList)
32 os.remove("./testDNARDSForUnitTests.rds")
36 def testGetMatchDict(self):
37 uniqueTestDict = getSNPs.getMatchDict(self.rdsDNA, "chr1", withSplices=False)
39 self.assertEqual(uniqueTestDict[10][0], 20, "incorrect result for unique chr position 10")
40 self.assertEqual(uniqueTestDict[100][0], 200, "incorrect result for unique chr position 100")
41 self.assertEqual(uniqueTestDict[1000][0], 2000, "incorrect result for unique chr position 1000")
43 self.assertRaises(KeyError, getSNPs.getMatchDict, self.rdsDNA, "chr2", withSplices=False)
46 def testGetMismatchDict(self):
47 mismatchDict = getSNPs.getMismatchDict(self.rdsDNA, "chr1")
48 result = {1009: {"totalBaseDict": {"A-G": 1},
50 "uniqBaseDict": {"A-G": 1},
51 "back": "1000:A-G", "totalCount": 1
54 self.assertEquals(result, mismatchDict)
57 #TODO: write unit test
58 def testGetSNPs(self):
62 #TODO: write unit test
63 def testWriteSNPsToFile(self):
67 def testDoNotProcessChromosome(self):
68 self.assertFalse(getSNPs.doNotProcessChromosome(True, "chr1"))
69 self.assertFalse(getSNPs.doNotProcessChromosome(False, "chr1"))
70 self.assertFalse(getSNPs.doNotProcessChromosome(False, "badName"))
71 self.assertTrue(getSNPs.doNotProcessChromosome(True, "badName"))
72 self.assertTrue(getSNPs.doNotProcessChromosome(True, ""))
76 suite = unittest.TestSuite()
77 suite.addTest(unittest.makeSuite(TestGetSNPs))
82 if __name__ == "__main__":
83 #import sys;sys.argv = ['', 'Test.testName']