Added test for mutagen. Included 3 sec. files in different formats
authorIvan Frade <ivan.frade@nokia.com>
Fri, 26 Feb 2010 15:30:25 +0000 (17:30 +0200)
committerIvan Frade <ivan.frade@nokia.com>
Fri, 26 Feb 2010 15:30:25 +0000 (17:30 +0200)
test-files/README [new file with mode: 0644]
test-files/empty-ogg-vorbis.ogg [new file with mode: 0644]
test-files/empty.flac [new file with mode: 0644]
test-files/empty.mp3 [new file with mode: 0644]
test-files/empty.oga [new file with mode: 0644]
test/mutagen-test.py [new file with mode: 0644]

diff --git a/test-files/README b/test-files/README
new file mode 100644 (file)
index 0000000..215de65
--- /dev/null
@@ -0,0 +1,8 @@
+FILES for test purpouse
+=======================
+
+These files are cuts of 3 seconds from music files encoded in
+different formats. They are included in the repository for testing
+purpouse, and are pretty useless and harmless.
+
+We hope this doesn't provoke any copyright issue.
diff --git a/test-files/empty-ogg-vorbis.ogg b/test-files/empty-ogg-vorbis.ogg
new file mode 100644 (file)
index 0000000..6979cd6
Binary files /dev/null and b/test-files/empty-ogg-vorbis.ogg differ
diff --git a/test-files/empty.flac b/test-files/empty.flac
new file mode 100644 (file)
index 0000000..99aaf08
Binary files /dev/null and b/test-files/empty.flac differ
diff --git a/test-files/empty.mp3 b/test-files/empty.mp3
new file mode 100644 (file)
index 0000000..9b30b3d
Binary files /dev/null and b/test-files/empty.mp3 differ
diff --git a/test-files/empty.oga b/test-files/empty.oga
new file mode 100644 (file)
index 0000000..8beca75
Binary files /dev/null and b/test-files/empty.oga differ
diff --git a/test/mutagen-test.py b/test/mutagen-test.py
new file mode 100644 (file)
index 0000000..1c93e27
--- /dev/null
@@ -0,0 +1,89 @@
+#  -*- coding: utf-8 -*-
+import sys
+import os
+
+SRC_DIR = os.path.join(os.path.dirname(__file__), "../src")
+
+if not SRC_DIR in sys.path:
+    sys.path.insert(0, SRC_DIR)
+
+import unittest
+from mutagen_backend import MutagenBackend
+
+
+import os
+
+def verify_MP3 (filename, expected_artist, expected_title, expected_album):
+    from mutagen.easyid3 import EasyID3
+    audio = EasyID3 (filename)
+    assert audio["artist"][0] == expected_artist
+    assert audio["title"][0] == expected_title
+    assert audio["album"][0] == expected_album
+
+def verify_wma (filename, expected_artist, expected_title, expected_album):
+    from mutagen.asf import ASF
+    audio = ASF (filename)
+    assert str(audio["Author"][0]) == expected_artist
+    assert str(audio["Title"][0]) == expected_title
+    assert str(audio["WM/AlbumTitle"][0]) == expected_album
+        
+def verify_autoguess (filename, expected_artist, expected_title, expected_album):
+    from mutagen import File
+    audio = File (filename)
+    assert audio["artist"][0] == expected_artist
+    assert audio["title"][0] == expected_title
+    assert audio["album"][0] == expected_album
+
+
+class MutagenWritingTest (unittest.TestCase):
+
+    def setUp (self):
+        self.writer = MutagenBackend ()
+
+    def general_test (self, original, result, mime, verify_func = verify_autoguess):
+        """
+        Copy 'original' to 'result', modify metadat in 'result' and read again from there
+        """
+        
+        out = open (result, 'w')
+        out.write (open (original,'r').read ())
+        out.close ()
+    
+        self.writer.save_metadata_on_file (result, mime,
+                                           "artist_test", "title_test", "album_test")
+        verify_func (result, "artist_test", "title_test", "album_test")
+    
+        self.writer.save_metadata_on_file (result, mime,
+                                           "artist_test_2", "title_test_2", "album_2")
+        verify_func (result, "artist_test_2", "title_test_2", "album_2")
+
+        os.unlink (result)
+        
+
+    def test_FLAC (self):
+        TEST_FILE = "../test-files/empty.flac"
+        TEST_FILE_TO_BREAK = "../test-files/test-result.flac"
+        MIME = "audio/x-flac"
+        self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME)
+
+    def test_OGG (self):
+        TEST_FILE = "../test-files/empty.oga"
+        TEST_FILE_TO_BREAK = "../test-files/test-result.oga"
+        MIME = "audio/ogg"
+        self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME)
+
+    def test_OGG_VORBIS (self):
+        TEST_FILE = "../test-files/empty-ogg-vorbis.ogg"
+        TEST_FILE_TO_BREAK = "../test-files/test-result.ogg"
+        MIME = "audio/ogg+vorbis"
+        self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME)
+
+    def test_MP3 (self):
+        TEST_FILE = "../test-files/empty.mp3"
+        TEST_FILE_TO_BREAK = "../test-files/test-result.mp3"
+        MIME = "audio/mpeg"
+        self.general_test (TEST_FILE, TEST_FILE_TO_BREAK, MIME, verify_MP3)
+        
+
+if __name__ == "__main__":
+    unittest.main ()