Add validation script
[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_fastq_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_fastq_diff_length_uniform(self):
14         q = StringIO(u"> abc\nAGCT\n@\nBBBB\n> abcd\nAGCTT\n@\nJJJJJ\n")
15         errors = validate.validate_fastq(q, True)
16         self.failUnlessEqual(2, errors)
17
18     def test_fastq_diff_length_variable(self):
19         q = StringIO(u"> abc\nAGCT\n@\n@@@@\n> abcd\nAGCTT\n@\nJJJJJ\n")
20         errors = validate.validate_fastq(q, False)
21         self.failUnlessEqual(0, errors)
22
23     def test_fastq_qual_short(self):
24         q = StringIO(u"> abc\nAGCT\n@\nSS\n")
25         errors = validate.validate_fastq(q)
26         self.failUnlessEqual(1, errors)
27
28     def test_fastq_seq_invalid_char(self):
29         q = StringIO(u"> abc\nAGC\u1310\n@\nPQRS\n")
30         errors = validate.validate_fastq(q)
31         self.failUnlessEqual(1, errors)
32
33     def test_fastq_qual_invalid_char(self):
34         q = StringIO(u"> abc\nAGC.\n@\n!@#J\n")
35         errors = validate.validate_fastq(q)
36         self.failUnlessEqual(1, errors)
37
38 def suite():
39     return unittest.makeSuite(testValidate, 'test')
40
41 if __name__ == "__main__":
42     unittest.main(defaultTest='suite')
43
44