Change unittest2 back into unittest.
[htsworkflow.git] / htsworkflow / submission / test / test_results.py
1 #!/usr/bin/env python
2
3 from pprint import pprint
4 import shutil
5
6 from unittest import TestCase, defaultTestLoader
7
8 from htsworkflow.submission.results import ResultMap
9 from submission_test_common import *
10
11 class TestResultMap(TestCase):
12     def setUp(self):
13         generate_sample_results_tree(self, 'results_test')
14
15     def tearDown(self):
16         shutil.rmtree(self.tempdir)
17
18     def test_dict_like(self):
19         """Make sure the result map works like an ordered dictionary
20         """
21         results = ResultMap()
22         results['1000'] = 'dir1000'
23         results['2000'] = 'dir2000'
24         results['1500'] = 'dir1500'
25
26         self.failUnlessEqual(results.keys(), ['1000', '2000', '1500'])
27         self.failUnlessEqual(list(results.values()),
28                              ['dir1000', 'dir2000', 'dir1500'])
29         self.failUnlessEqual(list(results.items()),
30                              [('1000', 'dir1000'),
31                               ('2000', 'dir2000'),
32                               ('1500', 'dir1500')])
33
34         self.failUnlessEqual(results['1000'], 'dir1000')
35         self.failUnlessEqual(results['1500'], 'dir1500')
36         self.failUnlessEqual(results['2000'], 'dir2000')
37
38         self.assertTrue(u'2000' in results)
39         self.assertTrue('2000' in results)
40         self.assertFalse(u'77777' in results)
41         self.assertFalse('77777' in results)
42
43     def test_make_from_absolute(self):
44         """Test that make from works if ResultMap has absolute paths
45         """
46         results = ResultMap()
47         sample1_dir = os.path.join(self.resultdir, S1_NAME)
48         sample2_dir = os.path.join(self.resultdir, S2_NAME)
49         results['1000'] =  sample1_dir
50         results['2000'] =  sample2_dir
51
52         results.make_tree_from(self.sourcedir, self.resultdir)
53         self.failUnless(os.path.isdir(sample1_dir))
54         self.failUnless(os.path.isdir(sample2_dir))
55
56         for f in S1_FILES + S2_FILES:
57             self.failUnless(
58                 os.path.islink(
59                     os.path.join(self.resultdir, f)))
60
61     def test_make_from_filename(self):
62         """Test that make from works if ResultMap has no path
63         """
64         results = ResultMap()
65         results['1000'] =  S1_NAME
66         results['2000'] =  S2_NAME
67
68         results.make_tree_from(self.sourcedir, self.resultdir)
69         sample1_dir = os.path.join(self.resultdir, S1_NAME)
70         sample2_dir = os.path.join(self.resultdir, S2_NAME)
71         self.failUnless(os.path.isdir(sample1_dir))
72         self.failUnless(os.path.isdir(sample2_dir))
73
74         for f in S1_FILES + S2_FILES:
75             self.failUnless(
76                 os.path.islink(
77                     os.path.join(self.resultdir, f)))
78
79     def test_make_from_shared_directory(self):
80         """Split multiple datasets stored in a single directory
81         """
82         self.skipTest("not implemented yet")
83         results = ResultMap()
84         results['S1'] = os.path.join(SCOMBINED_NAME, 's1*')
85         results['S2'] = os.path.join(SCOMBINED_NAME, 's2*')
86
87 def suite():
88     suite = defaultTestLoader.loadTestsFromTestCase(TestResultMap)
89     return suite
90
91 if __name__ == "__main__":
92     import logging
93     logging.basicConfig(level=logging.DEBUG)
94     from unittest import main
95     main(defaultTest='suite')