]>
Commit | Line | Data |
---|---|---|
9993976a | 1 | # -*- coding: utf-8 -*- |
2 | ||
3 | # Various small unit tests | |
4 | ||
44fb3454 | 5 | import unittest |
6 | ||
7 | #from youtube_dl.utils import htmlentity_transform | |
8 | from youtube_dl.utils import timeconvert | |
9993976a | 9 | from youtube_dl.utils import sanitize_filename |
44fb3454 | 10 | from youtube_dl.utils import unescapeHTML |
11 | from youtube_dl.utils import orderedSet | |
12 | ||
13 | ||
14 | class TestUtil(unittest.TestCase): | |
137c5803 | 15 | def test_timeconvert(self): |
4279a0ca | 16 | self.assertTrue(timeconvert('') is None) |
17 | self.assertTrue(timeconvert('bougrg') is None) | |
44fb3454 | 18 | |
137c5803 | 19 | def test_sanitize_filename(self): |
20 | self.assertEqual(sanitize_filename(u'abc'), u'abc') | |
21 | self.assertEqual(sanitize_filename(u'abc_d-e'), u'abc_d-e') | |
44fb3454 | 22 | |
137c5803 | 23 | self.assertEqual(sanitize_filename(u'123'), u'123') |
44fb3454 | 24 | |
56781d3d | 25 | self.assertEqual(u'abc_de', sanitize_filename(u'abc/de')) |
4279a0ca | 26 | self.assertFalse(u'/' in sanitize_filename(u'abc/de///')) |
44fb3454 | 27 | |
56781d3d | 28 | self.assertEqual(u'abc_de', sanitize_filename(u'abc/<>\\*|de')) |
42cb53fc FV |
29 | self.assertEqual(u'xxx', sanitize_filename(u'xxx/<>\\*|')) |
30 | self.assertEqual(u'yes no', sanitize_filename(u'yes? no')) | |
31 | self.assertEqual(u'this - that', sanitize_filename(u'this: that')) | |
9993976a | 32 | |
1c469a94 | 33 | self.assertEqual(sanitize_filename(u'AT&T'), u'AT&T') |
137c5803 | 34 | self.assertEqual(sanitize_filename(u'ä'), u'ä') |
35 | self.assertEqual(sanitize_filename(u'кириллица'), u'кириллица') | |
9993976a | 36 | |
1c469a94 PH |
37 | forbidden = u'"\0\\/' |
38 | for fc in forbidden: | |
39 | for fbc in forbidden: | |
40 | self.assertTrue(fbc not in sanitize_filename(fc)) | |
41 | ||
42 | def test_sanitize_filename_restricted(self): | |
43 | self.assertEqual(sanitize_filename(u'abc', restricted=True), u'abc') | |
44 | self.assertEqual(sanitize_filename(u'abc_d-e', restricted=True), u'abc_d-e') | |
45 | ||
46 | self.assertEqual(sanitize_filename(u'123', restricted=True), u'123') | |
47 | ||
56781d3d | 48 | self.assertEqual(u'abc_de', sanitize_filename(u'abc/de', restricted=True)) |
1c469a94 PH |
49 | self.assertFalse(u'/' in sanitize_filename(u'abc/de///', restricted=True)) |
50 | ||
56781d3d | 51 | self.assertEqual(u'abc_de', sanitize_filename(u'abc/<>\\*|de', restricted=True)) |
1c469a94 PH |
52 | self.assertEqual(u'xxx', sanitize_filename(u'xxx/<>\\*|', restricted=True)) |
53 | self.assertEqual(u'yes_no', sanitize_filename(u'yes? no', restricted=True)) | |
54 | self.assertEqual(u'this_-_that', sanitize_filename(u'this: that', restricted=True)) | |
55 | ||
56781d3d PH |
56 | self.assertEqual(sanitize_filename(u'aäb', restricted=True), u'a_b') |
57 | self.assertTrue(sanitize_filename(u'ö', restricted=True) != u'') # No empty filename | |
58 | ||
1c469a94 PH |
59 | forbidden = u'"\0\\/&: \'\t\n' |
60 | for fc in forbidden: | |
1c469a94 PH |
61 | for fbc in forbidden: |
62 | self.assertTrue(fbc not in sanitize_filename(fc, restricted=True)) | |
156a59e7 | 63 | |
46cbda0b PH |
64 | # Handle a common case more neatly |
65 | self.assertEqual(sanitize_filename(u'大声带 - Song', restricted=True), u'Song') | |
66 | self.assertEqual(sanitize_filename(u'总统: Speech', restricted=True), u'Speech') | |
67 | # .. but make sure the file name is never empty | |
68 | self.assertTrue(sanitize_filename(u'-', restricted=True) != u'') | |
69 | self.assertTrue(sanitize_filename(u':', restricted=True) != u'') | |
70 | ||
137c5803 | 71 | def test_ordered_set(self): |
72 | self.assertEqual(orderedSet([1,1,2,3,4,4,5,6,7,3,5]), [1,2,3,4,5,6,7]) | |
73 | self.assertEqual(orderedSet([]), []) | |
74 | self.assertEqual(orderedSet([1]), [1]) | |
75 | #keep the list ordered | |
76 | self.assertEqual(orderedSet([135,1,1,1]), [135,1]) | |
9993976a | 77 | |
137c5803 | 78 | def test_unescape_html(self): |
79 | self.assertEqual(unescapeHTML(u"%20;"), u"%20;") |