1 from unittest import TestCase
2 from htsworkflow.submission.fastqname import FastqName
4 class TestFastqName(TestCase):
5 def test_init_empty(self):
7 self.assertEqual(fq.is_valid, False)
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 self.assertEqual(fq.compression_extension, '')
22 def test_init_single_filename_gz(self):
23 fq = FastqName(filename="12345_AABBCCDDXX_c100_l1.fastq.gz")
24 self.assertEqual(fq.lib_id, "12345")
25 self.assertEqual(fq['lib_id'], "12345")
26 self.assertEqual(fq.flowcell, "AABBCCDDXX")
27 self.assertEqual(fq['flowcell'], "AABBCCDDXX")
28 self.assertEqual(fq.cycle, "100")
29 self.assertEqual(fq['cycle'], "100")
30 self.assertEqual(fq.lane, "1")
31 self.assertEqual(fq['lane'], "1")
32 self.assertEqual(fq.is_paired, False)
33 self.assertEqual(fq.compression_extension, '.gz')
35 def test_init_single_filename(self):
36 fq = FastqName(filename="12345_AABBCCDDXX_c100_l1_r2.fastq")
37 self.assertEqual(fq.lib_id, "12345")
38 self.assertEqual(fq['lib_id'], "12345")
39 self.assertEqual(fq.flowcell, "AABBCCDDXX")
40 self.assertEqual(fq['flowcell'], "AABBCCDDXX")
41 self.assertEqual(fq.cycle, "100")
42 self.assertEqual(fq['cycle'], "100")
43 self.assertEqual(fq.lane, "1")
44 self.assertEqual(fq['lane'], "1")
45 self.assertEqual(fq.read, "2")
46 self.assertEqual(fq['read'], "2")
47 self.assertEqual(fq.is_paired, True)
48 self.assertEqual(fq.compression_extension, None)
50 def test_init_bad_filename(self):
51 attribs = {'filename': 'asdf.bam'}
52 self.assertRaises(ValueError, FastqName, **attribs)
54 def test_init_single_attributes(self):
55 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
56 cycle = "100", lane="1")
57 self.assertEqual(fq.is_valid, True)
58 self.assertEqual(fq.lib_id, "12345")
59 self.assertEqual(fq['lib_id'], "12345")
60 self.assertEqual(fq.flowcell, "AABBCCDDXX")
61 self.assertEqual(fq['flowcell'], "AABBCCDDXX")
62 self.assertEqual(fq.cycle, "100")
63 self.assertEqual(fq['cycle'], "100")
64 self.assertEqual(fq.lane, "1")
65 self.assertEqual(fq['lane'], "1")
66 self.assertEqual(fq.is_paired, False)
67 self.assertEqual(fq.filename, "12345_AABBCCDDXX_c100_l1.fastq")
68 self.assertEqual(fq.compression_extension, None)
70 def test_init_single_attributes_set_single(self):
71 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
72 cycle = "100", lane="1", is_paired=False)
73 self.assertEqual(fq.is_valid, True)
74 self.assertEqual(fq.is_paired, False)
76 def test_init_single_attributes_set_paired(self):
77 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
78 cycle = "100", lane="1", is_paired=True)
79 self.assertEqual(fq.is_valid, False)
80 self.assertEqual(fq.is_paired, True)
82 def test_init_single_attributes_set_paired_bzip2(self):
83 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
84 cycle = "100", lane="1", is_paired=True,
85 compression_extension='.bzip2')
86 self.assertEqual(fq.is_valid, False)
87 self.assertEqual(fq.is_paired, True)
88 self.assertEqual(fq.compression_extension, '.bzip2')
90 def test_init_paired_attributes(self):
91 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
92 cycle = "100", lane="1", read="2")
93 self.assertEqual(fq.is_valid, True)
94 self.assertEqual(fq.lib_id, "12345")
95 self.assertEqual(fq['lib_id'], "12345")
96 self.assertEqual(fq.flowcell, "AABBCCDDXX")
97 self.assertEqual(fq['flowcell'], "AABBCCDDXX")
98 self.assertEqual(fq.cycle, "100")
99 self.assertEqual(fq['cycle'], "100")
100 self.assertEqual(fq.lane, "1")
101 self.assertEqual(fq['lane'], "1")
102 self.assertEqual(fq.read, "2")
103 self.assertEqual(fq['read'], "2")
104 self.assertEqual(fq.is_paired, True)
105 self.assertEqual(fq.filename, "12345_AABBCCDDXX_c100_l1_r2.fastq")
107 def test_init_paired_attributes_set_single(self):
108 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
109 cycle = "100", lane="1", read="2", is_paired=False)
110 self.assertEqual(fq.is_valid, True)
111 self.assertEqual(fq.is_paired, False)
113 def test_init_paired_attributes_set_paired(self):
114 fq = FastqName(lib_id="12345", flowcell="AABBCCDDXX",
115 cycle = "100", lane="1", read="2", is_paired=True)
116 self.assertEqual(fq.is_valid, True)
117 self.assertEqual(fq.is_paired, True)
119 def test_init_insufficient_attributes(self):
120 attribs = dict(lib_id="12345", flowcell="AABBCCDDXX")
121 fq = FastqName(**attribs)
122 self.assertEqual(fq.is_valid, False)
126 from unittest import TestSuite, defaultTestLoader
128 suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestFastqName))
131 if __name__ == "__main__":
132 from unittest import main
133 main(defaultTest='suite')