Merge branch 'master' of gitosis@mus.cacr.caltech.edu:htsworkflow
[htsworkflow.git] / htsworkflow / util / test / test_validate.py
diff --git a/htsworkflow/util/test/test_validate.py b/htsworkflow/util/test/test_validate.py
new file mode 100644 (file)
index 0000000..e1906eb
--- /dev/null
@@ -0,0 +1,44 @@
+import os
+from StringIO import StringIO
+import unittest
+
+from htsworkflow.util import validate
+
+class TestValidate(unittest.TestCase):
+    def test_fastq_works(self):
+        q = StringIO(u"> abc\nAGCT\n@\nBBBB\n")
+        errors = validate.validate_fastq(q)
+        self.failUnlessEqual(0, errors)
+
+    def test_fastq_diff_length_uniform(self):
+        q = StringIO(u"> abc\nAGCT\n@\nBBBB\n> abcd\nAGCTT\n@\nJJJJJ\n")
+        errors = validate.validate_fastq(q, True)
+        self.failUnlessEqual(2, errors)
+
+    def test_fastq_diff_length_variable(self):
+        q = StringIO(u"> abc\nAGCT\n@\n@@@@\n> abcd\nAGCTT\n@\nJJJJJ\n")
+        errors = validate.validate_fastq(q, False)
+        self.failUnlessEqual(0, errors)
+
+    def test_fastq_qual_short(self):
+        q = StringIO(u"> abc\nAGCT\n@\nSS\n")
+        errors = validate.validate_fastq(q)
+        self.failUnlessEqual(1, errors)
+
+    def test_fastq_seq_invalid_char(self):
+        q = StringIO(u"> abc\nAGC\u1310\n@\nPQRS\n")
+        errors = validate.validate_fastq(q)
+        self.failUnlessEqual(1, errors)
+
+    def test_fastq_qual_invalid_char(self):
+        q = StringIO(u"> abc\nAGC.\n@\n!@#J\n")
+        errors = validate.validate_fastq(q)
+        self.failUnlessEqual(1, errors)
+
+def suite():
+    return unittest.makeSuite(testValidate, 'test')
+
+if __name__ == "__main__":
+    unittest.main(defaultTest='suite')
+
+