Change unittest2 back into unittest.
[htsworkflow.git] / htsworkflow / util / test / test_validate.py
1 import os
2 from StringIO import StringIO
3 from unittest import TestCase
4
5 from htsworkflow.util import validate
6
7 class TestValidate(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
49 def suite():
50     from unittest import TestSuite, defaultTestLoader
51     suite = TestSuite()
52     suite.addTests(defaultTestLoader.loadTestsFromTestCase(testValidate))
53     return suite
54
55
56 if __name__ == "__main__":
57     from unittest import main
58     main(defaultTest="suite")