Bugfix: Fix deletion of .1 files for NoExtract type
[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 from RarslaveLogger import RarslaveLogger,RarslaveMessage,MessageType
7
8 class rarslavetest (unittest.TestCase):
9
10         def assertListEquals (self, l1, l2):
11                 if l1 is l2:
12                         return True
13
14                 self.assertEquals (len(l1), len(l2))
15
16                 for e in l1:
17                         if e not in l2:
18                                 self.fail ("Element missing from list")
19
20                 return True
21
22         def setUp (self):
23                 self.logger = RarslaveLogger ()
24
25         def tearDown (self):
26                 self.logger = None
27
28         def testGetBasenameNone (self):
29                 QNAME = '[something] some names.txt'
30                 ANAME = '[something] some names.txt'
31
32                 # Tests for an exension that should not be stripped
33                 self.assertEquals (ANAME, get_basename (QNAME))
34
35         def testGetBasenameSingle (self):
36                 QNAME = '[something] some names.par2'
37                 ANAME = '[something] some names'
38
39                 self.assertEquals (ANAME, get_basename (QNAME))
40
41         def testGetBasenameMulti (self):
42                 QNAME = '[a.f.k.] The Melancholy of Haruhi Suzumiya - 13.avi.001'
43                 ANAME = '[a.f.k.] The Melancholy of Haruhi Suzumiya - 13'
44
45                 self.assertEquals (ANAME, get_basename (QNAME))
46
47         def testGetBasenameMulti2 (self):
48                 QNAME = '[AonE-AnY]_Ah_My_Goddess_-_Sorezore_no_Tsubasa_-_13_[WS][E6380C3F].avi.vol00+01.PAR2'
49                 ANAME = '[AonE-AnY]_Ah_My_Goddess_-_Sorezore_no_Tsubasa_-_13_[WS][E6380C3F]'
50
51                 self.assertEquals (ANAME, get_basename (QNAME))
52
53         def testFindLikelyFilesBadDir (self):
54                 DIR = '/fake/dir'
55
56                 self.assertRaises (AssertionError, find_likely_files, "fake", DIR)
57
58         def testFindAllPar2Files (self):
59                 DIR = '/fake/dir'
60
61                 self.assertRaises (ValueError, find_all_par2_files, DIR)
62
63         def testIsNewRar (self):
64                 DIR = os.getcwd() + '/test_material/01/'
65
66                 self.assertTrue (is_newrar (os.listdir (DIR)))
67
68         def testDeletableFiles1 (self):
69                 FILES = ['test.part%d.rar' % n for n in xrange(10)]
70
71                 self.assertListEquals (find_deleteable_files (FILES), FILES)
72
73         def testDeletableFiles2 (self):
74                 FILESN = ['%d.mp3' % n for n in xrange(20)]
75                 FILESY = ['%d.zip' % n for n in xrange(5)]
76
77                 self.assertListEquals (find_deleteable_files (FILESN + FILESY), FILESY)
78
79         ### RarslaveMessage tests
80
81         def testRepr (self):
82                 STR1 = "Hello World"
83                 STR2 = "Goodbye, \nCruel World"
84
85                 self.assertEquals (STR1, RarslaveMessage (STR1).__repr__())
86                 self.assertEquals (STR1, RarslaveMessage (STR1, MessageType.Normal).__repr__())
87                 self.assertEquals (STR2, RarslaveMessage (STR2, MessageType.Verbose).__repr__())
88                 self.assertEquals (STR2, RarslaveMessage (STR2, MessageType.Debug).__repr__())
89
90         def testisVerboseMessage (self):
91                 STR1 = "Hello World"
92                 STR2 = "Goodbye, \nCruel World"
93
94                 self.assertTrue (RarslaveMessage (STR1, MessageType.Verbose).isVerbose())
95                 self.assertTrue (RarslaveMessage (STR2, MessageType.Verbose).isVerbose())
96                 self.assertFalse (RarslaveMessage (STR1).isVerbose())
97                 self.assertFalse (RarslaveMessage (STR2, MessageType.Debug).isVerbose())
98                 self.assertFalse (RarslaveMessage (STR2, MessageType.Normal).isVerbose())
99
100
101 if __name__ == '__main__':
102         unittest.main ()
103