5 from pprint import pprint
10 from htsworkflow.submission.results import ResultMap
12 S1_NAME = '1000-sample'
13 S2_NAME = '2000-sample'
16 os.path.join(S1_NAME, 'file1_l8_r1.fastq'),
17 os.path.join(S1_NAME, 'file1_l8_r2.fastq'),
21 os.path.join(S2_NAME, 'file1.bam'),
22 os.path.join(S2_NAME, 'file1_l5.fastq'),
25 def generate_sample_results_tree(obj):
26 obj.tempdir = tempfile.mkdtemp(prefix="results_test")
27 obj.sourcedir = os.path.join(obj.tempdir, 'source')
28 obj.resultdir = os.path.join(obj.tempdir, 'results')
30 for d in [obj.sourcedir,
31 os.path.join(obj.sourcedir, S1_NAME),
32 os.path.join(obj.sourcedir, S2_NAME),
34 os.mkdir(os.path.join(obj.tempdir, d))
37 tomake.extend(S1_FILES)
38 tomake.extend(S2_FILES)
40 stream = open(os.path.join(obj.sourcedir, f), 'w')
44 class TestResultMap(unittest.TestCase):
46 generate_sample_results_tree(self)
49 shutil.rmtree(self.tempdir)
51 def test_dict_like(self):
52 """Make sure the result map works like an ordered dictionary
55 results['1000'] = 'dir1000'
56 results['2000'] = 'dir2000'
57 results['1500'] = 'dir1500'
59 self.failUnlessEqual(results.keys(), ['1000', '2000', '1500'])
60 self.failUnlessEqual(list(results.values()),
61 ['dir1000', 'dir2000', 'dir1500'])
62 self.failUnlessEqual(list(results.items()),
67 self.failUnlessEqual(results['1000'], 'dir1000')
68 self.failUnlessEqual(results['1500'], 'dir1500')
69 self.failUnlessEqual(results['2000'], 'dir2000')
71 self.assertTrue(u'2000' in results)
72 self.assertTrue('2000' in results)
73 self.assertFalse(u'77777' in results)
74 self.assertFalse('77777' in results)
76 def test_make_from(self):
78 results['1000'] = S1_NAME
79 results['2000'] = S2_NAME
81 results.make_tree_from(self.sourcedir, self.resultdir)
83 sample1_dir = os.path.join(self.resultdir, S1_NAME)
84 sample2_dir = os.path.join(self.resultdir, S2_NAME)
85 self.failUnless(os.path.isdir(sample1_dir))
86 self.failUnless(os.path.isdir(sample2_dir))
88 for f in S1_FILES + S2_FILES:
91 os.path.join(self.resultdir, f)))
97 suite = unittest.makeSuite(TestResultMap, 'test')
100 if __name__ == "__main__":
101 unittest.main(defaultTest='suite')