| 1 | # -*- Mode: Python; test-case-name: morituri.test.test_common_program -*- |
|---|
| 2 | # vi:si:et:sw=4:sts=4:ts=4 |
|---|
| 3 | |
|---|
| 4 | import os |
|---|
| 5 | import pickle |
|---|
| 6 | |
|---|
| 7 | import unittest |
|---|
| 8 | |
|---|
| 9 | from morituri.result import result |
|---|
| 10 | from morituri.common import program, accurip, musicbrainz |
|---|
| 11 | from morituri.rip import cd |
|---|
| 12 | |
|---|
| 13 | class 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 | |
|---|
| 69 | class 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 | |
|---|
| 83 | class 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') |
|---|