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

Revision 552, 4.0 KB checked in by thomas, 19 months ago (diff)
  • morituri/common/Makefile.am:
  • morituri/common/musicbrainz.py:
  • morituri/common/program.py:
  • morituri/test/test_common_program.py:
  • morituri/test/Makefile.am:
  • morituri/test/test_common_musicbrainz.py (added):
  • morituri/common/musicbrainz.py (added): Split off musicbrainz-specific code.
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, musicbrainz
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 = musicbrainz.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 = musicbrainz.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')
Note: See TracBrowser for help on using the repository browser.