5 from pprint import pprint
9 from unittest2 import TestCase, defaultTestLoader
11 from htsworkflow.submission.results import ResultMap
13 S1_NAME = '1000-sample'
14 S2_NAME = '2000-sample'
17 os.path.join(S1_NAME, 'file1_l8_r1.fastq'),
18 os.path.join(S1_NAME, 'file1_l8_r2.fastq'),
22 os.path.join(S2_NAME, 'file1.bam'),
23 os.path.join(S2_NAME, 'file1_l5.fastq'),
26 def generate_sample_results_tree(obj):
27 obj.tempdir = tempfile.mkdtemp(prefix="results_test")
28 obj.sourcedir = os.path.join(obj.tempdir, 'source')
29 obj.resultdir = os.path.join(obj.tempdir, 'results')
31 for d in [obj.sourcedir,
32 os.path.join(obj.sourcedir, S1_NAME),
33 os.path.join(obj.sourcedir, S2_NAME),
35 os.mkdir(os.path.join(obj.tempdir, d))
38 tomake.extend(S1_FILES)
39 tomake.extend(S2_FILES)
41 stream = open(os.path.join(obj.sourcedir, f), 'w')
45 class TestResultMap(TestCase):
47 generate_sample_results_tree(self)
50 shutil.rmtree(self.tempdir)
52 def test_dict_like(self):
53 """Make sure the result map works like an ordered dictionary
56 results['1000'] = 'dir1000'
57 results['2000'] = 'dir2000'
58 results['1500'] = 'dir1500'
60 self.failUnlessEqual(results.keys(), ['1000', '2000', '1500'])
61 self.failUnlessEqual(list(results.values()),
62 ['dir1000', 'dir2000', 'dir1500'])
63 self.failUnlessEqual(list(results.items()),
68 self.failUnlessEqual(results['1000'], 'dir1000')
69 self.failUnlessEqual(results['1500'], 'dir1500')
70 self.failUnlessEqual(results['2000'], 'dir2000')
72 self.assertTrue(u'2000' in results)
73 self.assertTrue('2000' in results)
74 self.assertFalse(u'77777' in results)
75 self.assertFalse('77777' in results)
77 def test_make_from(self):
79 results['1000'] = S1_NAME
80 results['2000'] = S2_NAME
82 results.make_tree_from(self.sourcedir, self.resultdir)
84 sample1_dir = os.path.join(self.resultdir, S1_NAME)
85 sample2_dir = os.path.join(self.resultdir, S2_NAME)
86 self.failUnless(os.path.isdir(sample1_dir))
87 self.failUnless(os.path.isdir(sample2_dir))
89 for f in S1_FILES + S2_FILES:
92 os.path.join(self.resultdir, f)))
96 suite = defaultTestLoader.loadTestsFromTestCase(TestResultMap)
99 if __name__ == "__main__":
100 from unittest2 import main
101 main(defaultTest='suite')