fixed handling of misnumbered tracks during ordering

This commit is contained in:
Adrian Sampson 2009-11-25 14:30:52 -08:00
parent 67bfa2275f
commit 85b4d9a129
2 changed files with 36 additions and 1 deletions

View file

@ -130,12 +130,17 @@ def _order_items_meta(items):
for item in items:
if item.track:
index = item.track - 1
ordered_items[index] = item
# Make sure the index is valid.
if index in available_indices:
available_indices.remove(index)
else:
# Same index used twice.
return None
# Apply index.
ordered_items[index] = item
else:
# If we have any item without an index, give up.
return None
@ -143,6 +148,8 @@ def _order_items_meta(items):
if available_indices:
# Not all indices were used.
return None
return ordered_items
def _order_items_match(items, trackinfo):
"""Orders the items based on how they match some canonical track

View file

@ -193,6 +193,34 @@ class AlbumsInDirTest(unittest.TestCase):
else:
self.assertEqual(len(album), 1)
class OrderingTest(unittest.TestCase):
def test_metaorder_fails_on_duplicated_tracknum(self):
items = []
items.append(Item({'title': 'two', 'track': 2}))
items.append(Item({'title': 'one', 'track': 1}))
items.append(Item({'title': 'twoagain', 'track': 2}))
ordered = autotag._order_items_meta(items)
self.assertEqual(ordered, None)
def test_metaorder_fails_on_too_high_tracknum(self):
items = []
items.append(Item({'title': 'four', 'track': 4}))
items.append(Item({'title': 'one', 'track': 1}))
items.append(Item({'title': 'two', 'track': 2}))
ordered = autotag._order_items_meta(items)
self.assertEqual(ordered, None)
def test_metaorder_correct(self):
items = []
items.append(Item({'title': 'three', 'track': 3}))
items.append(Item({'title': 'one', 'track': 1}))
items.append(Item({'title': 'two', 'track': 2}))
ordered = autotag._order_items_meta(items)
self.assertEqual(ordered[0].title, 'one')
self.assertEqual(ordered[1].title, 'two')
self.assertEqual(ordered[2].title, 'three')
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)