#!/usr/bin/env python
"""More direct synthetic test cases for the eland output file processing
"""
-from StringIO import StringIO
-import unittest
+from io import StringIO
+from unittest import TestCase
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)
'U0':0, 'U1':0, 'U2':0,
'R0':0, 'R1':0, 'R2':0,
}
- self.assertEqual(mc.keys(), match_codes.keys())
- self.assertEqual(mc.items(), match_codes.items())
- self.assertEqual(mc.values(), match_codes.values())
+ self.assertEqual(list(mc.keys()), list(match_codes.keys()))
+ self.assertEqual(list(mc.items()), list(match_codes.items()))
+ self.assertEqual(list(mc.values()), list(match_codes.values()))
self.assertRaises(KeyError, mc.__getitem__, 'foo')
def test_addition(self):
self.assertEqual(mc1['U0'], 100)
-class TestMappedReads(unittest.TestCase):
+class TestMappedReads(TestCase):
def test_initializer(self):
mr1 = MappedReads()
self.assertEqual(len(mr1), 0)
mr1['chr9'] = 7
self.assertEqual(list(mr1.keys()), ['chr9'])
self.assertEqual(mr1['chr9'], 7)
- self.assertEqual(mr1.items(), [('chr9', 7)])
+ self.assertEqual(list(mr1.items()), [('chr9', 7)])
del mr1['chr9']
self.assertEqual(len(mr1), 0)
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):
- for key in expected.keys():
+ for key in list(expected.keys()):
self.assertEqual(current[key], expected[key],
"Key %s: %s != %s" % (key,current[key],expected[key]))
self.assertEqual(len(match_reads), 0)
self.assertEqual(reads, 1)
-class TestElandMatches(unittest.TestCase):
+ 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 = 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()
self.assertEqual(len(em[key]), 1)
filename = iter(em[key]).next().filename
self.assertEqual(filename, 's_1_sequence.txt')
- self.assertEqual(em.keys(), [key])
+ self.assertEqual(list(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])
+ self.assertEqual(list(em.keys()), [key])
def test_parts(self):
key11111 = SampleKey(1, 1, '11111')
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")