8 def __init__(self
, string
= None):
12 for line
in self
.lines
.splitlines():
15 def write(self
, string
):
19 class H(unittest
.TestCase
):
20 def test_all_same_string_false(self
):
21 self
.assertEqual(False, lineage
.all_same(iter('aazaa')))
23 def test_all_same_string_true(self
):
24 self
.assertEqual(True, lineage
.all_same(iter('aaaaa')))
26 def test_all_same_list_False(self
):
27 self
.assertEqual(False, lineage
.all_same(['A','v','A','A']))
30 def test_all_same_list_True(self
):
31 self
.assertEqual(True, lineage
.all_same(['A','A','A','A']))
33 def test_all_same_raw_string_true(self
):
34 self
.assertEqual(True, lineage
.all_same('aaaaa'))
37 class I(unittest
.TestCase
):
39 self
.assertEqual([5,6], lineage
.find_diffs( ['track%.2d.whatever' % n
for n
in range(12) ]))
42 self
.assertEqual([5,6], lineage
.find_diffs( ['track%.2d.whatever' % n
for n
in range(12) ]))
45 tracks
= ["Track01.ape", "Track02.ape", "Track03.ape"]
46 self
.assertEqual(6, lineage
.find_diffs(tracks
))
48 def test_track2(self
):
49 tracks
= ["01. Reverence.ape", "02. She's My Baby.ape", "10. Take The Long Way Home.ape"]
50 self
.assertEqual(0, lineage
.find_diffs(tracks
))
52 class TestLineageLifetime(unittest
.TestCase
):
54 obj
= lineage
.Lineage()
55 self
.assertEqual(len(obj
.album
.discs
), 1)
56 obj
.try_match('DISC 2')
57 self
.assertEqual(len(obj
.album
.discs
), 2)
58 obj
= lineage
.Lineage()
59 self
.assertEqual(len(obj
.album
.discs
), 1)
62 class TestLineage(unittest
.TestCase
):
65 self
.lineage
= lineage
.Lineage()
68 disc
= self
.lineage
.album
.disc(1)
71 line
= '8. God Is A DJ'
72 self
.lineage
.try_match(line
)
73 self
.assertEqual(self
.lineage
.album
.disc(1).track(8).title
, 'God Is A Dj')
75 def testTrackWithoutSpace(self
):
76 line
= '8.God Is A DJ'
77 self
.lineage
.try_match(line
)
78 self
.assertEqual(self
.lineage
.album
.disc(1).track(8).title
, 'God Is A Dj')
80 def testTrackWithoutSpace(self
):
81 self
.lineage
.try_match('CD2')
82 self
.lineage
.try_match('08. God Is A DJ')
83 self
.lineage
.try_match('1234567890abcdef0123456789012345 *CD2/Track07.flac')
84 self
.lineage
.try_match('1234567890abcdef0123456789012345 *CD2/Track08.flac')
85 self
.lineage
.process()
86 #self.lineage.try_match('Track01.flac:1234567890abcdef0123456789012345')
87 #self.lineage.try_match('Track02.flac:1234567890abcdef0123456789012345')
88 #self.lineage.process()
89 self
.assertEqual(self
.lineage
.album
.disc(2).track(8).title
, 'God Is A DJ')
90 self
.assertEqual(self
.lineage
.album
.disc(2).track(8).filename
, 'Track08.flac')
94 line
= '08 God Is A DJ'
95 self
.assertEqual(self
.lineage
.try_match_test(line
), ('08' , 'God Is A DJ'))
96 self
.lineage
.try_match(line
)
97 self
.assertEqual(self
.lineage
.album
.disc(1).track(8).title
, 'God Is A DJ')
100 self
.lineage
.try_match_test('Track01.flac:1234567890abcdef0123456789012345')
101 self
.lineage
.try_match_test('Track10.flac:1234567890abcdef0123456789012345')
102 #self.assertEqual(self.lineage.try_match_test('DISC 2'), ('DISC' , '2'))
103 #self.assertEqual(self.lineage.try_match_test('Disc 2'), ('Disc' , '2'))
104 #self.assertEqual(self.lineage.try_match_test('d3t01.flac'), ('3' , '01'))
106 def testChecksum1(self
):
107 self
.lineage
.try_match('Track01.flac:1234567890abcdef0123456789012345')
108 self
.lineage
.try_match('Track02.flac:1234567890abcdef0123456789012345')
109 self
.lineage
.process()
110 self
.assertEqual(self
.lineage
.album
.disc(1).track(1).filename
, 'Track01.flac')
111 self
.assertEqual(self
.lineage
.album
.disc(1).track(1).checksum
, '1234567890abcdef0123456789012345')
113 def testChecksum2(self
):
115 1234567890abcdef0123456789012345 *Faithless2005-08-19_t07.flac
116 1234567890abcdef0123456789012345 *Faithless2005-08-19_t08.flac
118 self
.lineage
.input_file
= FileFaker(input)
119 self
.lineage
.readlines()
120 self
.assertEqual(self
.lineage
.album
.disc(1).track(8).filename
, 'Faithless2005-08-19_t08.flac')
121 self
.assertEqual(self
.lineage
.album
.disc(1).track(8).checksum
, '1234567890abcdef0123456789012345')
123 def testChecksum3(self
):
125 1234567890abcdef0123456789012345 *01. Reverence.ape
126 1234567890abcdef0123456789012345 *02. She's My Baby.ape
127 1234567890abcdef0123456789012345 *10. Take The Long Way Home.ape
129 self
.lineage
.input_file
= FileFaker(input)
130 self
.lineage
.readlines()
131 self
.assertEqual(self
.lineage
.album
.disc(1).track(10).filename
, '10. Take The Long Way Home.ape')
133 def testFilenameWithDiscNumber(self
):
134 self
.lineage
.try_match('d1t01.flac')
135 #self.assertEqual(self.lineage.disc.number, 1)
136 self
.lineage
.try_match('d2t01.flac')
137 #self.assertEqual(self.lineage.disc.number, 2)
140 def testDetectNumber(self
):
141 self
.lineage
.try_match('1234567890abcdef0123456789012345 *Faithless2005-08-19_t01.flac')
142 self
.lineage
.try_match('1234567890abcdef0123456789012345 *Faithless2005-08-19_t02.flac')
143 self
.lineage
.try_match('1234567890abcdef0123456789012345 *Faithless2005-08-19_t07.flac')
144 self
.lineage
.process()
145 self
.assertEqual(self
.lineage
.album
.disc(1).track(7).filename
, 'Faithless2005-08-19_t07.flac')
147 def testDetectNumberWithBackslash(self
):
148 self
.lineage
.try_match('1234567890abcdef0123456789012345 *cd1\Faithless2005-08-19_t01.flac')
149 self
.lineage
.try_match('1234567890abcdef0123456789012345 *cd1\Faithless2005-08-19_t02.flac')
150 self
.lineage
.try_match('1234567890abcdef0123456789012345 *cd2\Faithless2005-08-19_t03.flac')
151 self
.lineage
.try_match('1234567890abcdef0123456789012345 *cd2\Faithless2005-08-19_t04.flac')
152 self
.lineage
.process()
153 self
.assertEqual(self
.lineage
.album
.disc(1).track(1).filename
, 'Faithless2005-08-19_t01.flac')
154 self
.assertEqual(self
.lineage
.album
.disc(2).track(3).filename
, 'Faithless2005-08-19_t03.flac')
156 def testMultiDisc(self
):
159 def write(self
, string
):
163 self
.lineage
.try_match('DISC 1')
164 self
.lineage
.try_match('DISC 2')
165 self
.lineage
.try_match('8. God Is A DJ')
166 self
.assertEqual(self
.lineage
.album
.disc(2).track(8).title
, 'God Is A DJ')
168 self
.lineage
.write_cue_sheet()
170 def testMultiDisc(self
):
171 self
.lineage
.try_match("01. Reverence")
172 self
.lineage
.try_match("02. She's My Baby")
173 self
.lineage
.try_match("01. Reverence")
174 self
.lineage
.try_match("02. She's My Baby")
175 self
.lineage
.process()
176 self
.assertEqual(self
.lineage
.album
.disc(1).track(1).title
, "Reverence")
177 self
.assertEqual(self
.lineage
.album
.disc(2).track(1).title
, "Reverence")
179 def testExample(self
):
181 01. Faithless - Reverence
182 02. Faithless - She's My Baby
183 03. Faithless - Take The Long Way Home
184 04. Faithless - Insomnia
185 05. Faithless - Bring The Family Back
186 06. Faithless - Salva Mea
187 07. Faithless - Dirty Old Man
188 08. Faithless - God Is A DJ
191 self
.lineage
.input_file
= FileFaker(input)
193 self
.lineage
.readlines()
194 self
.lineage
.write_cue_sheet()
197 if __name__
== '__main__':