1c93e27a1a4bc8694b12d16c8bbcda9ccc385133
[mussorgsky] / test / mutagen-test.py
1 #  -*- coding: utf-8 -*-
2 import sys
3 import os
4
5 SRC_DIR = os.path.join(os.path.dirname(__file__), "../src")
6
7 if not SRC_DIR in sys.path:
8     sys.path.insert(0, SRC_DIR)
9
10 import unittest
11 from mutagen_backend import MutagenBackend
12
13
14 import os
15
16 def verify_MP3 (filename, expected_artist, expected_title, expected_album):
17     from mutagen.easyid3 import EasyID3
18     audio = EasyID3 (filename)
19     assert audio["artist"][0] == expected_artist
20     assert audio["title"][0] == expected_title
21     assert audio["album"][0] == expected_album
22
23 def verify_wma (filename, expected_artist, expected_title, expected_album):
24     from mutagen.asf import ASF
25     audio = ASF (filename)
26     assert str(audio["Author"][0]) == expected_artist
27     assert str(audio["Title"][0]) == expected_title
28     assert str(audio["WM/AlbumTitle"][0]) == expected_album
29         
30 def verify_autoguess (filename, expected_artist, expected_title, expected_album):
31     from mutagen import File
32     audio = File (filename)
33     assert audio["artist"][0] == expected_artist
34     assert audio["title"][0] == expected_title
35     assert audio["album"][0] == expected_album
36
37
38 class MutagenWritingTest (unittest.TestCase):
39
40     def setUp (self):
41         self.writer = MutagenBackend ()
42
43     def general_test (self, original, result, mime, verify_func = verify_autoguess):
44         """
45         Copy 'original' to 'result', modify metadat in 'result' and read again from there
46         """
47         
48         out = open (result, 'w')
49         out.write (open (original,'r').read ())
50         out.close ()
51     
52         self.writer.save_metadata_on_file (result, mime,
53                                            "artist_test", "title_test", "album_test")
54         verify_func (result, "artist_test", "title_test", "album_test")
55     
56         self.writer.save_metadata_on_file (result, mime,
57                                            "artist_test_2", "title_test_2", "album_2")
58         verify_func (result, "artist_test_2", "title_test_2", "album_2")
59
60         os.unlink (result)
61         
62
63     def test_FLAC (self):
64         TEST_FILE = "../test-files/empty.flac"
65         TEST_FILE_TO_BREAK = "../test-files/test-result.flac"
66         MIME = "audio/x-flac"
67         self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME)
68
69     def test_OGG (self):
70         TEST_FILE = "../test-files/empty.oga"
71         TEST_FILE_TO_BREAK = "../test-files/test-result.oga"
72         MIME = "audio/ogg"
73         self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME)
74
75     def test_OGG_VORBIS (self):
76         TEST_FILE = "../test-files/empty-ogg-vorbis.ogg"
77         TEST_FILE_TO_BREAK = "../test-files/test-result.ogg"
78         MIME = "audio/ogg+vorbis"
79         self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME)
80
81     def test_MP3 (self):
82         TEST_FILE = "../test-files/empty.mp3"
83         TEST_FILE_TO_BREAK = "../test-files/test-result.mp3"
84         MIME = "audio/mpeg"
85         self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME, verify_MP3)
86         
87
88 if __name__ == "__main__":
89     unittest.main ()