d51ad0e303e106126c62df30b00d4240374e68c9
[htsworkflow.git] / htsworkflow / submission / test / test_fastqname.py
1 from unittest2 import TestCase
2 from htsworkflow.submission.fastqname import FastqName
3
4 class TestFastqName(TestCase):
5     def test_init_empty(self):
6         fq = FastqName()
7         self.assertEqual(fq.is_valid, False)
8
9     def test_init_single_filename(self):
10         fq = FastqName(filename="12345_AABBCCDDXX_c100_l1.fastq")
11         self.assertEqual(fq.lib_id, "12345")
12         self.assertEqual(fq['lib_id'], "12345")
13         self.assertEqual(fq.flowcell, "AABBCCDDXX")
14         self.assertEqual(fq['flowcell'], "AABBCCDDXX")
15         self.assertEqual(fq.cycle, "100")
16         self.assertEqual(fq['cycle'], "100")
17         self.assertEqual(fq.lane, "1")
18         self.assertEqual(fq['lane'], "1")
19         self.assertEqual(fq.is_paired, False)
20
21     def test_init_single_filename(self):
22         fq = FastqName(filename="12345_AABBCCDDXX_c100_l1_r2.fastq")
23         self.assertEqual(fq.lib_id, "12345")
24         self.assertEqual(fq['lib_id'], "12345")
25         self.assertEqual(fq.flowcell, "AABBCCDDXX")
26         self.assertEqual(fq['flowcell'], "AABBCCDDXX")
27         self.assertEqual(fq.cycle, "100")
28         self.assertEqual(fq['cycle'], "100")
29         self.assertEqual(fq.lane, "1")
30         self.assertEqual(fq['lane'], "1")
31         self.assertEqual(fq.read, "2")
32         self.assertEqual(fq['read'], "2")
33         self.assertEqual(fq.is_paired, True)
34
35     def test_init_bad_filename(self):
36         attribs = {'filename': 'asdf.bam'}
37         self.assertRaises(ValueError, FastqName, **attribs)
38
39     def test_init_single_attributes(self):
40         fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
41                        cycle = "100", lane="1")
42         self.assertEqual(fq.is_valid, True)
43         self.assertEqual(fq.lib_id, "12345")
44         self.assertEqual(fq['lib_id'], "12345")
45         self.assertEqual(fq.flowcell, "AABBCCDDXX")
46         self.assertEqual(fq['flowcell'], "AABBCCDDXX")
47         self.assertEqual(fq.cycle, "100")
48         self.assertEqual(fq['cycle'], "100")
49         self.assertEqual(fq.lane, "1")
50         self.assertEqual(fq['lane'], "1")
51         self.assertEqual(fq.is_paired, False)
52         self.assertEqual(fq.filename, "12345_AABBCCDDXX_c100_l1.fastq")
53
54     def test_init_single_attributes_set_single(self):
55         fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
56                        cycle = "100", lane="1", is_paired=False)
57         self.assertEqual(fq.is_valid, True)
58         self.assertEqual(fq.is_paired, False)
59
60     def test_init_single_attributes_set_paired(self):
61         fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
62                        cycle = "100", lane="1", is_paired=True)
63         self.assertEqual(fq.is_valid, False)
64         self.assertEqual(fq.is_paired, True)
65
66     def test_init_paired_attributes(self):
67         fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
68                        cycle = "100", lane="1", read="2")
69         self.assertEqual(fq.is_valid, True)
70         self.assertEqual(fq.lib_id, "12345")
71         self.assertEqual(fq['lib_id'], "12345")
72         self.assertEqual(fq.flowcell, "AABBCCDDXX")
73         self.assertEqual(fq['flowcell'], "AABBCCDDXX")
74         self.assertEqual(fq.cycle, "100")
75         self.assertEqual(fq['cycle'], "100")
76         self.assertEqual(fq.lane, "1")
77         self.assertEqual(fq['lane'], "1")
78         self.assertEqual(fq.read, "2")
79         self.assertEqual(fq['read'], "2")
80         self.assertEqual(fq.is_paired, True)
81         self.assertEqual(fq.filename, "12345_AABBCCDDXX_c100_l1_r2.fastq")
82
83     def test_init_paired_attributes_set_single(self):
84         fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
85                        cycle = "100", lane="1", read="2", is_paired=False)
86         self.assertEqual(fq.is_valid, True)
87         self.assertEqual(fq.is_paired, False)
88
89     def test_init_paired_attributes_set_paired(self):
90         fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
91                        cycle = "100", lane="1", read="2", is_paired=True)
92         self.assertEqual(fq.is_valid, True)
93         self.assertEqual(fq.is_paired, True)
94
95     def test_init_insufficient_attributes(self):
96         attribs = dict(lib_id="12345", flowcell="AABBCCDDXX")
97         fq = FastqName(**attribs)
98         self.assertEqual(fq.is_valid, False)
99
100
101 def suite():
102     from unittest2 import TestSuite, defaultTestLoader
103     suite = TestSuite()
104     suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestFastqName))
105     return suite
106
107 if __name__ == "__main__":
108     from unittest2 import main
109     main(defaultTest='suite')