source: trunk/morituri/test/test_common_program.py @ 540

Revision 540, 5.4 KB checked in by thomas, 22 months ago (diff)

assert we get metadata

Line 
1# -*- Mode: Python; test-case-name: morituri.test.test_common_program -*-
2# vi:si:et:sw=4:sts=4:ts=4
3
4import os
5import pickle
6
7import unittest
8
9from morituri.result import result
10from morituri.common import program, accurip
11from morituri.rip import cd
12
13class TrackImageVerifyTestCase(unittest.TestCase):
14    # example taken from a rip of Luke Haines Is Dead, disc 1
15    # AccurateRip database has 0 confidence for 1st track
16    # Rip had a wrong result for track 9
17
18    def testVerify(self):
19        path = os.path.join(os.path.dirname(__file__),
20            'dBAR-020-002e5023-029d8e49-040eaa14.bin')
21        data = open(path, "rb").read()
22        responses = accurip.getAccurateRipResponses(data)
23
24        # these crc's were calculated from an actual rip
25        checksums = [1644890007, 2945205445, 3983436658, 1528082495,
26        1203704270, 1163423644, 3649097244, 100524219, 1583356174, 373652058,
27        1842579359, 2850056507, 1329730252, 2526965856, 2525886806, 209743350,
28        3184062337, 2099956663, 2943874164, 2321637196]
29
30        prog = program.Program()
31        prog.result = result.RipResult()
32        # fill it with empty trackresults
33        for i, c in enumerate(checksums):
34            r = result.TrackResult()
35            r.number = i + 1
36            prog.result.tracks.append(r)
37
38        prog._verifyImageWithChecksums(responses, checksums)
39
40        # now check if the results were filled in properly
41        tr = prog.result.getTrackResult(1)
42        self.assertEquals(tr.accurip, False)
43        self.assertEquals(tr.ARDBMaxConfidence, 0)
44        self.assertEquals(tr.ARDBCRC, 0)
45        self.assertEquals(tr.ARDBCRC, 0)
46
47        tr = prog.result.getTrackResult(2)
48        self.assertEquals(tr.accurip, True)
49        self.assertEquals(tr.ARDBMaxConfidence, 2)
50        self.assertEquals(tr.ARDBCRC, checksums[2 - 1])
51
52        tr = prog.result.getTrackResult(10)
53        self.assertEquals(tr.accurip, False)
54        self.assertEquals(tr.ARDBMaxConfidence, 2)
55        # we know track 10 was ripped wrong
56        self.assertNotEquals(tr.ARDBCRC, checksums[10 - 1])
57
58        res = prog.getAccurateRipResults()
59        self.assertEquals(res[1 - 1],
60            "Track  1: rip NOT accurate (not found)             "
61            "[620b0797], DB [notfound]")
62        self.assertEquals(res[2 - 1],
63            "Track  2: rip accurate     (max confidence      2) "
64            "[af8c44c5], DB [af8c44c5]")
65        self.assertEquals(res[10 - 1],
66            "Track 10: rip NOT accurate (max confidence      2) "
67            "[16457a5a], DB [eb6e55b4]")
68
69class HTOATestCase(unittest.TestCase):
70    def setUp(self):
71        path = os.path.join(os.path.dirname(__file__),
72            'silentalarm.result.pickle')
73        self._tracks = pickle.load(open(path, 'rb'))
74       
75    def testGetAccurateRipResults(self):
76        prog = program.Program()
77        prog.result = result.RipResult()
78        prog.result.tracks = self._tracks
79
80        prog.getAccurateRipResults()
81
82
83class PathTestCase(unittest.TestCase):
84    def testStandardTemplateEmpty(self):
85        prog = program.Program()
86
87        path = prog.getPath(u'/tmp', cd.DEFAULT_DISC_TEMPLATE, 'mbdiscid', 0)
88        self.assertEquals(path,
89            u'/tmp/Unknown Artist - mbdiscid/Unknown Artist - mbdiscid')
90       
91    def testStandardTemplateFilled(self):
92        prog = program.Program()
93        md = program.DiscMetadata()
94        md.artist = md.sortName = 'Jeff Buckley'
95        md.title = 'Grace'
96        prog.metadata = md
97
98        path = prog.getPath(u'/tmp', cd.DEFAULT_DISC_TEMPLATE, 'mbdiscid', 0)
99        self.assertEquals(path,
100            u'/tmp/Jeff Buckley - Grace/Jeff Buckley - Grace')
101
102    def testIssue66TemplateFilled(self):
103        prog = program.Program()
104        md = program.DiscMetadata()
105        md.artist = md.sortName = 'Jeff Buckley'
106        md.title = 'Grace'
107        prog.metadata = md
108
109        path = prog.getPath(u'/tmp', u'%A/%d', 'mbdiscid', 0)
110        self.assertEquals(path,
111            u'/tmp/Jeff Buckley/Grace')
112 
113class MetadataLengthTestCase(unittest.TestCase):
114    def testLamprey(self):
115        from musicbrainz2 import wsxml
116
117        path = os.path.join(os.path.dirname(__file__),
118            'release.c7d919f4-3ea0-4c4b-a230-b3605f069440.xml')
119        handle = open(path, "rb")
120
121        reader = wsxml.MbXmlParser()
122        wsMetadata = reader.parse(handle)
123        release = wsMetadata.getRelease()
124        metadata = program.getMetadata(release)
125
126        self.assertEquals(metadata.duration, 2962889)
127
128    def testLadyhawke(self):
129        from musicbrainz2 import wsxml
130
131        path = os.path.join(os.path.dirname(__file__),
132            'release.93a6268c-ddf1-4898-bf93-fb862b1c5c5e.xml')
133        handle = open(path, "rb")
134
135        reader = wsxml.MbXmlParser()
136        wsMetadata = reader.parse(handle)
137        release = wsMetadata.getRelease()
138        metadata = program.getMetadata(release)
139        self.failUnless(metadata)
140
141        # self.assertEquals(metadata.duration, 2609413)
142
143    def testDasCapital(self):
144        from musicbrainz2 import wsxml
145
146        path = os.path.join(os.path.dirname(__file__),
147            'release.08397059-86c1-463b-8ed0-cd596dbd174f.xml')
148        handle = open(path, "rb")
149
150        reader = wsxml.MbXmlParser()
151        wsMetadata = reader.parse(handle)
152        release = wsMetadata.getRelease()
153        metadata = program.getMetadata(release)
154
155        # FIXME: 2 seconds longer than the duration according to table
156        self.assertEquals(metadata.duration, 2315730)
Note: See TracBrowser for help on using the repository browser.