Change unittest2 back into unittest.
[htsworkflow.git] / htsworkflow / pipelines / test / test_eland.py
index 66e2ce85d90ea0b1e4b23bd8aaf9b12b602a233c..f6851883952332ab4005e06b6713bb011dc928ef 100644 (file)
@@ -2,11 +2,12 @@
 """More direct synthetic test cases for the eland output file processing
 """
 from StringIO import StringIO
-import unittest
+from unittest import TestCase
 
-from htsworkflow.pipelines.eland import ElandLane, MatchCodes, MappedReads
+from htsworkflow.pipelines.eland import ELAND, ElandLane, ElandMatches, \
+     SampleKey, MatchCodes, MappedReads
 
-class MatchCodeTests(unittest.TestCase):
+class MatchCodeTests(TestCase):
     def test_initializer(self):
         self.assertRaises(ValueError, MatchCodes, {'foo':'bar'})
         self.assertRaises(ValueError, MatchCodes, 3)
@@ -37,7 +38,7 @@ class MatchCodeTests(unittest.TestCase):
         self.assertEqual(mc1['U0'], 100)
 
 
-class TestMappedReads(unittest.TestCase):
+class TestMappedReads(TestCase):
     def test_initializer(self):
         mr1 = MappedReads()
         self.assertEqual(len(mr1), 0)
@@ -72,7 +73,7 @@ class TestMappedReads(unittest.TestCase):
         mr3['Lambda3'] = 2
         self.assertEqual(mr3['Lambda3'], 2)
 
-class ElandTests(unittest.TestCase):
+class ElandTests(TestCase):
     """Test specific Eland modules
     """
     def compare_match_array(self, current, expected):
@@ -228,6 +229,62 @@ class ElandTests(unittest.TestCase):
         self.assertEqual(len(match_reads), 0)
         self.assertEqual(reads, 1)
 
+    def test_ordering(self):
+        e = ELAND()
+        sl3 = SampleKey(lane=3, read=1, sample='33333')
+        sl1 = SampleKey(lane=1, read=1, sample='11111')
+        sl5 = SampleKey(lane=5, read=1, sample='55555')
+        e.results[sl5] = 'Lane5'
+        e.results[sl3] = 'Lane3'
+        e.results[sl1] = 'Lane1'
+
+        e_list = e.values()
+        self.assertEqual(e_list[0], 'Lane1')
+        self.assertEqual(e_list[1], 'Lane3')
+        self.assertEqual(e_list[2], 'Lane5')
+
+class TestElandMatches(TestCase):
+    def test_eland_replacing(self):
+        key = SampleKey(1, 1, 's')
+        e = ELAND()
+        em = ElandMatches(e)
+        em.add('s_1_sequence.txt')
+        self.assertEqual(len(em), 1)
+        self.assertEqual(len(em[key]), 1)
+        filename = iter(em[key]).next().filename
+        self.assertEqual(filename, 's_1_sequence.txt')
+        self.assertEqual(em.keys(), [key])
+        em.add('s_1_eland_result.txt')
+        self.assertEqual(len(em), 1)
+        self.assertEqual(len(em[key]), 1)
+        filename = iter(em[key]).next().filename
+        self.assertEqual(filename, 's_1_eland_result.txt')
+        self.assertEqual(em.keys(), [key])
+
+    def test_parts(self):
+        key11111 = SampleKey(1, 1, '11111')
+        key11112 = SampleKey(1, 1, '11112')
+        e = ELAND()
+        em = ElandMatches(e)
+        em.add('11111_CCAATT_L001_R1_001_export.txt.gz')
+        em.add('11111_CCAATT_L001_R1_002_export.txt.gz')
+        em.add('11111_CCAATT_L001_R1_003_export.txt.gz')
+        em.add('11112_AAGGTT_L001_R1_001_export.txt.gz')
+        em.add('11112_AAGGTT_L001_R1_002_export.txt.gz')
+        self.assertEqual(len(em), 2)
+        self.assertEqual(len(em[key11111]), 3)
+        self.assertEqual(len(em[key11112]), 2)
+
+def suite():
+    from unittest import TestSuite, defaultTestLoader
+    suite = TestSuite()
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(MatchCodeTests))
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestMappedReads))
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(ElandTests))
+    suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestElandMatches))
+    return suite
+
 
 if __name__ == "__main__":
-    unittest.main()
+    from unittest import main
+    main(defaultTest="suite")