[RARSLAVE] Add porcelain
[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 (ValueError, 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 testHasExtension1 (self):
64                 FILE = 'some.file.part01.rar'
65
66                 self.assertTrue (has_extension (FILE, 'rar'))
67                 self.assertTrue (has_extension (FILE, '.rar'))
68                 self.assertTrue (has_extension (FILE, 'part01.rar'))
69                 self.assertTrue (has_extension (FILE, '.part01.rar'))
70
71         def testHasExtension2 (self):
72                 FILE = 'some.file.part01.rar'
73
74                 self.assertFalse (has_extension (FILE, 'zip'))
75                 self.assertFalse (has_extension (FILE, '.zip'))
76                 self.assertFalse (has_extension (FILE, '.part01'))
77                 self.assertFalse (has_extension (FILE, 'part01'))
78
79         def testIsNewRar (self):
80                 DIR = os.getcwd() + '/test_material/01/'
81
82                 self.assertTrue (is_newrar (os.listdir (DIR)))
83
84         def testDeletableFiles1 (self):
85                 FILES = ['test.part%d.rar' % n for n in xrange(10)]
86
87                 self.assertListEquals (find_deleteable_files (FILES), FILES)
88
89         def testDeletableFiles2 (self):
90                 FILESN = ['%d.mp3' % n for n in xrange(20)]
91                 FILESY = ['%d.zip' % n for n in xrange(5)]
92
93                 self.assertListEquals (find_deleteable_files (FILESN + FILESY), FILESY)
94
95         ### RarslaveMessage tests
96
97         def testRepr (self):
98                 STR1 = "Hello World"
99                 STR2 = "Goodbye, \nCruel World"
100
101                 self.assertEquals (STR1, RarslaveMessage (STR1).__repr__())
102                 self.assertEquals (STR1, RarslaveMessage (STR1, MessageType.Normal).__repr__())
103                 self.assertEquals (STR2, RarslaveMessage (STR2, MessageType.Verbose).__repr__())
104                 self.assertEquals (STR2, RarslaveMessage (STR2, MessageType.Debug).__repr__())
105
106         def testisVerboseMessage (self):
107                 STR1 = "Hello World"
108                 STR2 = "Goodbye, \nCruel World"
109
110                 self.assertTrue (RarslaveMessage (STR1, MessageType.Verbose).isVerbose())
111                 self.assertTrue (RarslaveMessage (STR2, MessageType.Verbose).isVerbose())
112                 self.assertFalse (RarslaveMessage (STR1).isVerbose())
113                 self.assertFalse (RarslaveMessage (STR2, MessageType.Debug).isVerbose())
114                 self.assertFalse (RarslaveMessage (STR2, MessageType.Normal).isVerbose())
115
116
117 if __name__ == '__main__':
118         unittest.main ()
119