1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
"""Tests for parsing tracks using MbXmlParser."""
import unittest
from musicbrainz2.wsxml import MbXmlParser, ParseError
from musicbrainz2.model import NS_MMD_1, NS_REL_1, Relation
import StringIO
import os.path
VALID_DATA_DIR = os.path.join('test-data', 'valid')
INVALID_DATA_DIR = os.path.join('test-data', 'invalid')
VALID_TRACK_DIR = os.path.join(VALID_DATA_DIR, 'track')
def makeId(relativeUri, resType='track'):
return 'http://musicbrainz.org/%s/%s' % (resType, relativeUri)
class ParseTrackTest(unittest.TestCase):
def __init__(self, name):
unittest.TestCase.__init__(self, name)
def testTrackBasic(self):
f = os.path.join(VALID_TRACK_DIR, 'Silent_All_These_Years_1.xml')
md = MbXmlParser().parse(f)
track = md.getTrack()
self.failIf( track is None )
self.assertEquals(track.getTitle(), 'Silent All These Years')
self.assertEquals(track.getDuration(), 253466)
def testTrackRelations(self):
f = os.path.join(VALID_TRACK_DIR, 'Silent_All_These_Years_2.xml')
md = MbXmlParser().parse(f)
track = md.getTrack()
self.failIf( track is None )
self.assertEquals(track.getTitle(), 'Silent All These Years')
self.assertEquals(track.getDuration(), 253466)
trackRels = track.getRelations(Relation.TO_TRACK)
self.assertEquals(len(trackRels), 1)
rel1 = trackRels[0]
self.assertEquals(rel1.getType(), NS_REL_1 + 'Cover')
self.assertEquals(rel1.getDirection(), 'backward')
self.assertEquals(rel1.getTargetId(),
makeId('31e1c0c4-967f-435e-b09a-35ee079ee234', 'track'))
self.assert_( rel1.getBeginDate() is None )
self.assert_( rel1.getEndDate() is None )
self.failIf( rel1.getTarget() is None )
self.assertEquals(rel1.getTarget().getId(),
makeId('31e1c0c4-967f-435e-b09a-35ee079ee234'))
self.assertEquals(rel1.getTarget().getArtist().getId(),
makeId('5bcd4eaa-fae7-465f-9f03-d005b959ed02', 'artist'))
def testTrackFull(self):
f = os.path.join(VALID_TRACK_DIR, 'Silent_All_These_Years_4.xml')
md = MbXmlParser().parse(f)
track = md.getTrack()
self.failIf( track is None )
self.assertEquals(track.getTitle(), 'Silent All These Years')
self.assertEquals(track.getDuration(), 253466)
artist = track.getArtist()
self.failIf( artist is None )
self.assertEquals(artist.getId(),
makeId('c0b2500e-0cef-4130-869d-732b23ed9df5', 'artist'))
self.assertEquals(artist.getType(), NS_MMD_1 + 'Person')
self.assertEquals(artist.getName(), 'Tori Amos')
self.assertEquals(artist.getSortName(), 'Amos, Tori')
puids = track.getPuids()
self.assertEquals(len(puids), 7)
self.assertEquals(puids[0], 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6')
self.assertEquals(puids[6], '42ab76ea-5d42-4259-85d7-e7f2c69e4485')
releases = track.getReleases()
self.assertEquals(len(releases), 1)
self.assertEquals(releases[0].getTitle(), 'Little Earthquakes')
self.assertEquals(releases[0].getTracksOffset(), 2)
def testSearchResults(self):
f = os.path.join(VALID_TRACK_DIR, 'search_result_1.xml')
md = MbXmlParser().parse(f)
results = md.getTrackResults()
self.assertEquals(len(results), 3)
self.assertEquals(results[0].getScore(), 100)
track1 = results[0].getTrack()
self.assertEquals(track1.getTitle(), 'Little Earthquakes')
# EOF
|