2 from StringIO import StringIO
3 from unittest import TestCase
5 from htsworkflow.util import validate
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)
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)
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)
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)
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)
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)
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)
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)
50 from unittest import TestSuite, defaultTestLoader
52 suite.addTests(defaultTestLoader.loadTestsFromTestCase(testValidate))
56 if __name__ == "__main__":
57 from unittest import main
58 main(defaultTest="suite")