* morituri/image/toc.py:
* morituri/test/test_image_toc.py: * morituri/test/test_program_cdrdao.py: After careful vetting, fix up the expected values after toc parsing. Fix (untested) INDEX handling. Fix handling of START.
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* morituri/image/toc.py:
|
||||
* morituri/test/test_image_toc.py:
|
||||
* morituri/test/test_program_cdrdao.py:
|
||||
After careful vetting, fix up the expected values after toc parsing.
|
||||
Fix (untested) INDEX handling. Fix handling of START.
|
||||
|
||||
2009-05-05 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
|
||||
* morituri/image/table.py:
|
||||
|
||||
@@ -100,16 +100,20 @@ class TocFile(object, log.Loggable):
|
||||
if m:
|
||||
state = 'TRACK'
|
||||
|
||||
# handle index 1 of previous track, if any
|
||||
# set index 1 of previous track if there was one, using
|
||||
# pregapLength if applicable
|
||||
if currentTrack:
|
||||
currentTrack.index(1, path=currentFile.path,
|
||||
relative=currentOffset + pregapLength, counter=counter)
|
||||
self.debug('track %d, added index %r',
|
||||
currentTrack.number, currentTrack.getIndex(1))
|
||||
|
||||
trackNumber += 1
|
||||
currentOffset += currentLength
|
||||
currentLength = 0
|
||||
indexNumber = 1
|
||||
trackMode = m.group('mode')
|
||||
pregapLength = 0
|
||||
|
||||
# FIXME: track mode
|
||||
currentTrack = table.ITTrack(trackNumber)
|
||||
@@ -153,24 +157,34 @@ class TocFile(object, log.Loggable):
|
||||
|
||||
length = common.msfToFrames(m.group('length'))
|
||||
currentTrack.index(0, path=currentFile.path,
|
||||
relative=currentOffset - length, counter=counter)
|
||||
#currentLength += length
|
||||
relative=currentOffset, counter=counter)
|
||||
self.debug('track %d, added index %r',
|
||||
currentTrack.number, currentTrack.getIndex(0))
|
||||
# store the pregapLength to add it when we index 1 for this
|
||||
# track on the next iteration
|
||||
pregapLength = length
|
||||
|
||||
# look for INDEX lines
|
||||
# look for INDEX lines
|
||||
m = _INDEX_RE.search(line)
|
||||
if m:
|
||||
if not currentTrack:
|
||||
self.message(number, 'INDEX without preceding TRACK')
|
||||
indexNumber += 1
|
||||
offset = common.msfToFrames(m.group('offset'))
|
||||
currentTrack.index(indexNumber, path=currentFile.path,
|
||||
relative=offset, counter=counter)
|
||||
print 'ouch'
|
||||
continue
|
||||
|
||||
indexNumber += 1
|
||||
offset = common.msfToFrames(m.group('offset'))
|
||||
currentTrack.index(indexNumber, path=currentFile.path,
|
||||
relative=offset, counter=counter)
|
||||
self.debug('track %d, added index %r',
|
||||
currentTrack.number, currentTrack.getIndex(indexNumber))
|
||||
|
||||
# handle index 1 of final track, if any
|
||||
if currentTrack:
|
||||
currentTrack.index(1, path=currentFile.path,
|
||||
relative=currentOffset + pregapLength, counter=counter)
|
||||
self.debug('track %d, added index %r',
|
||||
currentTrack.number, currentTrack.getIndex(1))
|
||||
|
||||
def message(self, number, message):
|
||||
"""
|
||||
|
||||
@@ -22,7 +22,8 @@ class CureTestCase(unittest.TestCase):
|
||||
self.assertEquals(self.toc.getTrackLength(t), -1)
|
||||
|
||||
def testIndexes(self):
|
||||
# track 2, index 0 is at 06:16:45
|
||||
# track 2, index 0 is at 06:16:45 or 28245
|
||||
# track 2, index 1 is at 06:17:49 or 28324
|
||||
# FIXME: cdrdao seems to get length of FILE 1 frame too many,
|
||||
# and START value one frame less
|
||||
t = self.toc.table.tracks[1]
|
||||
@@ -60,7 +61,7 @@ class CureTestCase(unittest.TestCase):
|
||||
self.toc.table.clearFiles()
|
||||
|
||||
self._assertAbsolute(1, 1, 0)
|
||||
self._assertAbsolute(2, 0, 28166)
|
||||
self._assertAbsolute(2, 0, 28245)
|
||||
self._assertAbsolute(2, 1, 28324)
|
||||
self._assertAbsolute(3, 1, 46110)
|
||||
self._assertAbsolute(4, 1, 66767)
|
||||
@@ -72,7 +73,7 @@ class CureTestCase(unittest.TestCase):
|
||||
self._assertPath(1, 1, 'track01.wav')
|
||||
self._assertRelative(1, 1, 0)
|
||||
self._assertPath(2, 0, 'track01.wav')
|
||||
self._assertAbsolute(2, 0, 28166)
|
||||
self._assertRelative(2, 0, 28245)
|
||||
|
||||
self._assertPath(2, 1, None)
|
||||
self._assertRelative(2, 1, None)
|
||||
@@ -88,7 +89,9 @@ class BlocTestCase(unittest.TestCase):
|
||||
def testGetTrackLength(self):
|
||||
t = self.toc.table.tracks[0]
|
||||
# first track has known length because the .toc is a single file
|
||||
self.assertEquals(self.toc.getTrackLength(t), 50089)
|
||||
# the length is from Track 1, Index 1 to Track 2, Index 1, so
|
||||
# does not include the htoa
|
||||
self.assertEquals(self.toc.getTrackLength(t), 19649)
|
||||
# last track has unknown length
|
||||
t = self.toc.table.tracks[-1]
|
||||
self.assertEquals(self.toc.getTrackLength(t), -1)
|
||||
|
||||
@@ -26,5 +26,5 @@ class ParseTestCase(unittest.TestCase):
|
||||
for i, offset in enumerate(
|
||||
[0, 13864, 31921, 48332, 61733, 80961,
|
||||
100219, 116291, 136188, 157504, 175275]):
|
||||
track = self._parser.toc.tracks[i]
|
||||
track = self._parser.table.tracks[i]
|
||||
self.assertEquals(track.getIndex(1).absolute, offset)
|
||||
|
||||
Reference in New Issue
Block a user