1# -*- coding: utf-8 -*-
2
3import os
4
5from mutagen.monkeysaudio import MonkeysAudio, MonkeysAudioHeaderError
6from tests import TestCase, DATA_DIR
7
8
9class TMonkeysAudio(TestCase):
10
11    def setUp(self):
12        self.mac399 = MonkeysAudio(os.path.join(DATA_DIR, "mac-399.ape"))
13        self.mac396 = MonkeysAudio(os.path.join(DATA_DIR, "mac-396.ape"))
14        self.mac390 = MonkeysAudio(os.path.join(DATA_DIR, "mac-390-hdr.ape"))
15
16    def test_channels(self):
17        self.failUnlessEqual(self.mac399.info.channels, 2)
18        self.failUnlessEqual(self.mac396.info.channels, 2)
19        self.failUnlessEqual(self.mac390.info.channels, 2)
20
21    def test_sample_rate(self):
22        self.failUnlessEqual(self.mac399.info.sample_rate, 44100)
23        self.failUnlessEqual(self.mac396.info.sample_rate, 44100)
24        self.failUnlessEqual(self.mac390.info.sample_rate, 44100)
25
26    def test_length(self):
27        self.failUnlessAlmostEqual(self.mac399.info.length, 3.68, 2)
28        self.failUnlessAlmostEqual(self.mac396.info.length, 3.68, 2)
29        self.failUnlessAlmostEqual(self.mac390.info.length, 15.63, 2)
30
31    def test_bits_per_sample(self):
32        assert self.mac399.info.bits_per_sample == 16
33        assert self.mac396.info.bits_per_sample == 16
34        assert self.mac390.info.bits_per_sample == 16
35
36    def test_version(self):
37        self.failUnlessEqual(self.mac399.info.version, 3.99)
38        self.failUnlessEqual(self.mac396.info.version, 3.96)
39        self.failUnlessEqual(self.mac390.info.version, 3.90)
40
41    def test_not_my_file(self):
42        self.failUnlessRaises(
43            MonkeysAudioHeaderError, MonkeysAudio,
44            os.path.join(DATA_DIR, "empty.ogg"))
45        self.failUnlessRaises(
46            MonkeysAudioHeaderError, MonkeysAudio,
47            os.path.join(DATA_DIR, "click.mpc"))
48
49    def test_mime(self):
50        self.failUnless("audio/x-ape" in self.mac399.mime)
51
52    def test_pprint(self):
53        self.failUnless(self.mac399.pprint())
54        self.failUnless(self.mac396.pprint())
55