Initial work on extraction.
[rarslave2.git] / rarslave-test.py
1 #!/usr/bin/env python
2 # vim: set ts=4 sts=4 sw=4 textwidth=92 :
3
4 import os, sys, unittest
5 from rarslave import *
6
7 class rarslavetest (unittest.TestCase):
8
9         def assertListEquals (self, l1, l2):
10                 if l1 is l2:
11                         return True
12
13                 self.assertEquals (len(l1), len(l2))
14
15                 for e in l1:
16                         if e not in l2:
17                                 self.fail ("Element missing from list")
18
19                 return True
20
21         def setUp (self):
22                 pass
23
24         def tearDown (self):
25                 pass
26
27         def testGetBasenameNone (self):
28                 QNAME = '[something] some names.txt'
29                 ANAME = '[something] some names.txt'
30
31                 # Tests for an exension that should not be stripped
32                 self.assertEquals (ANAME, get_basename (QNAME))
33
34         def testGetBasenameSingle (self):
35                 QNAME = '[something] some names.par2'
36                 ANAME = '[something] some names'
37
38                 self.assertEquals (ANAME, get_basename (QNAME))
39
40         def testGetBasenameMulti (self):
41                 QNAME = '[a.f.k.] The Melancholy of Haruhi Suzumiya - 13.avi.001'
42                 ANAME = '[a.f.k.] The Melancholy of Haruhi Suzumiya - 13'
43
44                 self.assertEquals (ANAME, get_basename (QNAME))
45
46         def testGetBasenameMulti2 (self):
47                 QNAME = '[AonE-AnY]_Ah_My_Goddess_-_Sorezore_no_Tsubasa_-_13_[WS][E6380C3F].avi.vol00+01.PAR2'
48                 ANAME = '[AonE-AnY]_Ah_My_Goddess_-_Sorezore_no_Tsubasa_-_13_[WS][E6380C3F]'
49
50                 self.assertEquals (ANAME, get_basename (QNAME))
51
52         def testFindLikelyFilesBadDir (self):
53                 DIR = '/fake/dir'
54                 
55                 self.assertRaises (ValueError, find_likely_files, "fake", DIR)
56
57         def testFindAllPar2Files (self):
58                 DIR = '/fake/dir'
59
60                 self.assertRaises (ValueError, find_all_par2_files, DIR)
61
62         def testHasExtension1 (self):
63                 FILE = 'some.file.part01.rar'
64
65                 self.assertTrue (has_extension (FILE, 'rar'))
66                 self.assertTrue (has_extension (FILE, '.rar'))
67                 self.assertTrue (has_extension (FILE, 'part01.rar'))
68                 self.assertTrue (has_extension (FILE, '.part01.rar'))
69
70         def testHasExtension2 (self):
71                 FILE = 'some.file.part01.rar'
72
73                 self.assertFalse (has_extension (FILE, 'zip'))
74                 self.assertFalse (has_extension (FILE, '.zip'))
75                 self.assertFalse (has_extension (FILE, '.part01'))
76                 self.assertFalse (has_extension (FILE, 'part01'))
77
78         def testIsNewRar (self):
79                 DIR = '/home/irasnyd/downloads/test_material/01/'
80
81                 self.assertTrue (is_newrar (os.listdir (DIR)))
82
83         def testDeletableFiles1 (self):
84                 FILES = ['test.part%d.rar' % n for n in xrange(10)]
85
86                 self.assertListEquals (find_deleteable_files (FILES), FILES)
87
88         def testDeletableFiles2 (self):
89                 FILESN = ['%d.mp3' % n for n in xrange(20)]
90                 FILESY = ['%d.zip' % n for n in xrange(5)]
91
92                 self.assertListEquals (find_deleteable_files (FILESN + FILESY), FILESY)
93
94
95 if __name__ == '__main__':
96         unittest.main ()
97