convert to unicode_literals
[htsworkflow.git] / experiments / test / test_filetype.py
1 from __future__ import absolute_import, print_function, unicode_literals
2
3 from django.test import TestCase
4
5 from ..models import FileType, find_file_type_metadata_from_filename
6
7 class TestFileType(TestCase):
8     def test_file_type_unicode(self):
9         file_type_objects = FileType.objects
10         name = 'QSEQ tarfile'
11         file_type_object = file_type_objects.get(name=name)
12         self.assertEqual("QSEQ tarfile",
13                          str(file_type_object))
14
15     def test_find_file_type(self):
16         file_type_objects = FileType.objects
17         cases = [('woldlab_090921_HWUSI-EAS627_0009_42FC3AAXX_l7_r1.tar.bz2',
18                   'QSEQ tarfile', 7, 1),
19                  ('woldlab_091005_HWUSI-EAS627_0010_42JT2AAXX_1.srf',
20                   'SRF', 1, None),
21                  ('s_1_eland_extended.txt.bz2','ELAND Extended', 1, None),
22                  ('s_7_eland_multi.txt.bz2', 'ELAND Multi', 7, None),
23                  ('s_3_eland_result.txt.bz2','ELAND Result', 3, None),
24                  ('s_1_export.txt.bz2','ELAND Export', 1, None),
25                  ('s_1_percent_call.png', 'IVC Percent Call', 1, None),
26                  ('s_2_percent_base.png', 'IVC Percent Base', 2, None),
27                  ('s_3_percent_all.png', 'IVC Percent All', 3, None),
28                  ('s_4_call.png', 'IVC Call', 4, None),
29                  ('s_5_all.png', 'IVC All', 5, None),
30                  ('Summary.htm', 'Summary.htm', None, None),
31                  ('run_42JT2AAXX_2009-10-07.xml', 'run_xml', None, None),
32          ]
33         for filename, typename, lane, end in cases:
34             ft = find_file_type_metadata_from_filename(filename)
35             self.assertEqual(ft['file_type'],
36                                  file_type_objects.get(name=typename))
37             self.assertEqual(ft.get('lane', None), lane)
38             self.assertEqual(ft.get('end', None), end)
39
40     def test_assign_file_type_complex_path(self):
41         file_type_objects = FileType.objects
42         cases = [('/a/b/c/woldlab_090921_HWUSI-EAS627_0009_42FC3AAXX_l7_r1.tar.bz2',
43                   'QSEQ tarfile', 7, 1),
44                  ('foo/woldlab_091005_HWUSI-EAS627_0010_42JT2AAXX_1.srf',
45                   'SRF', 1, None),
46                  ('../s_1_eland_extended.txt.bz2','ELAND Extended', 1, None),
47                  ('/bleem/s_7_eland_multi.txt.bz2', 'ELAND Multi', 7, None),
48                  ('/qwer/s_3_eland_result.txt.bz2','ELAND Result', 3, None),
49                  ('/ty///1/s_1_export.txt.bz2','ELAND Export', 1, None),
50                  ('/help/s_1_percent_call.png', 'IVC Percent Call', 1, None),
51                  ('/bored/s_2_percent_base.png', 'IVC Percent Base', 2, None),
52                  ('/example1/s_3_percent_all.png', 'IVC Percent All', 3, None),
53                  ('amonkey/s_4_call.png', 'IVC Call', 4, None),
54                  ('fishie/s_5_all.png', 'IVC All', 5, None),
55                  ('/random/Summary.htm', 'Summary.htm', None, None),
56                  ('/notrandom/run_42JT2AAXX_2009-10-07.xml', 'run_xml', None, None),
57          ]
58         for filename, typename, lane, end in cases:
59             result = find_file_type_metadata_from_filename(filename)
60             self.assertEqual(result['file_type'],
61                                  file_type_objects.get(name=typename))
62             self.assertEqual(result.get('lane',None), lane)
63             self.assertEqual(result.get('end', None), end)
64
65 def suite():
66     from unittest import TestSuite, defaultTestLoader
67     suite = TestSuite()
68     suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestFileType))
69     return suite
70
71 if __name__ == "__main__":
72     from unittest import main
73     main(defaultTest="suite")