513a3a396221149e8fbadee0457638fdd7865be4
[htsworkflow.git] / htsworkflow / util / test / test_validate.py
1 import os
2 from StringIO import StringIO
3 import unittest
4
5 from htsworkflow.util import validate
6
7 class TestValidate(unittest.TestCase):
8     def test_phred33_works(self):
9         q = StringIO(u"@ abc\nAGCT\n+\nBBBB\n")
10         errors = validate.validate_fastq(q)
11         self.failUnlessEqual(0, errors)
12
13     def test_phred64_works(self):
14         q = StringIO(u"@ abc\nAGCT\n+\nfgh]\n")
15         errors = validate.validate_fastq(q, 'phred64')
16         self.failUnlessEqual(0, errors)
17
18     def test_fasta_fails(self):
19         q = StringIO(u">abc\nAGCT\n>foo\nCGAT\n")
20         errors = validate.validate_fastq(q)
21         self.failUnlessEqual(3, errors)
22
23     def test_fastq_diff_length_uniform(self):
24         q = StringIO(u"@ abc\nAGCT\n+\nBBBB\n@ abcd\nAGCTT\n+\nJJJJJ\n")
25         errors = validate.validate_fastq(q, 'phred33', True)
26         self.failUnlessEqual(2, errors)
27
28     def test_fastq_diff_length_variable(self):
29         q = StringIO(u"@ abc\nAGCT\n+\n@@@@\n@ abcd\nAGCTT\n+\nJJJJJ\n")
30         errors = validate.validate_fastq(q, 'phred33', False)
31         self.failUnlessEqual(0, errors)
32
33     def test_fastq_qual_short(self):
34         q = StringIO(u"@ abc\nAGCT\n+\nJJ\n")
35         errors = validate.validate_fastq(q)
36         self.failUnlessEqual(1, errors)
37
38     def test_fastq_seq_invalid_char(self):
39         q = StringIO(u"@ abc\nAGC\u1310\n+\nEFGH\n")
40         errors = validate.validate_fastq(q)
41         self.failUnlessEqual(1, errors)
42
43     def test_fastq_qual_invalid_char(self):
44         q = StringIO(u"+ abc\nAGC.\n+\n!@#J\n")
45         errors = validate.validate_fastq(q)
46         self.failUnlessEqual(1, errors)
47
48 def suite():
49     return unittest.makeSuite(testValidate, 'test')
50
51 if __name__ == "__main__":
52     unittest.main(defaultTest='suite')
53
54