Change unittest2 back into unittest.
[htsworkflow.git] / htsworkflow / pipelines / test / test_samplekey.py
1 #!/usr/bin/env python
2 """More direct synthetic test cases for the eland output file processing
3 """
4 from StringIO import StringIO
5 from unittest import TestCase
6
7 from htsworkflow.pipelines.samplekey import SampleKey
8
9 class TestSampleKey(TestCase):
10     def test_equality(self):
11         k1 = SampleKey(lane=1, read='1', sample='12345')
12         k2 = SampleKey(lane=1, read=1, sample='12345')
13         k3 = SampleKey(lane=1, read=2, sample='12345')
14
15         self.assertEqual(k1, k2)
16         self.assertEqual(hash(k1), hash(k2))
17         self.assertNotEqual(k1, k3)
18
19         self.assertTrue(k1 < k3)
20         self.assertTrue(k1 <= k2)
21
22         self.assertTrue(k3 > k1)
23
24
25     def test_matching(self):
26         k1 = SampleKey(lane=1, read='1', sample='12345')
27         k2 = SampleKey(lane=1, read=1, sample='12345')
28         k3 = SampleKey(lane=1, read=2, sample='12345')
29
30         q1 = SampleKey()
31         q2 = SampleKey(read=1)
32         q3 = SampleKey(sample='12345')
33
34         self.assertTrue(k1.matches(q1))
35         self.assertTrue(k2.matches(q1))
36         self.assertTrue(k3.matches(q1))
37
38         self.assertTrue(k1.matches(q2))
39         self.assertTrue(k2.matches(q2))
40         self.assertFalse(k3.matches(q2))
41
42         self.assertTrue(k1.matches(q3))
43         self.assertTrue(k2.matches(q3))
44         self.assertTrue(k3.matches(q3))
45
46 def suite():
47     from unittest import TestSuite, defaultTestLoader
48     suite = TestSuite()
49     suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestSampleKey))
50     return suite
51
52
53 if __name__ == "__main__":
54     from unittest import main
55     main(defaultTest="suite")