1# -*- coding: utf-8 -*-
2
3import os
4
5from mutagen.id3 import ID3, TIT1
6from mutagen.aac import AAC, AACError
7
8from tests import TestCase, DATA_DIR, get_temp_copy
9
10
11class TADTS(TestCase):
12
13    def setUp(self):
14        original = os.path.join(DATA_DIR, "empty.aac")
15        self.filename = get_temp_copy(original)
16
17        tag = ID3()
18        tag.add(TIT1(text=[u"a" * 5000], encoding=3))
19        tag.save(self.filename)
20
21        self.aac = AAC(original)
22        self.aac_id3 = AAC(self.filename)
23
24    def tearDown(self):
25        os.remove(self.filename)
26
27    def test_channels(self):
28        self.failUnlessEqual(self.aac.info.channels, 2)
29        self.failUnlessEqual(self.aac_id3.info.channels, 2)
30
31    def test_bitrate(self):
32        self.failUnlessEqual(self.aac.info.bitrate, 3159)
33        self.failUnlessEqual(self.aac_id3.info.bitrate, 3159)
34
35    def test_sample_rate(self):
36        self.failUnlessEqual(self.aac.info.sample_rate, 44100)
37        self.failUnlessEqual(self.aac_id3.info.sample_rate, 44100)
38
39    def test_length(self):
40        self.failUnlessAlmostEqual(self.aac.info.length, 3.70, 2)
41        self.failUnlessAlmostEqual(self.aac_id3.info.length, 3.70, 2)
42
43    def test_not_my_file(self):
44        self.failUnlessRaises(
45            AACError, AAC,
46            os.path.join(DATA_DIR, "empty.ogg"))
47
48        self.failUnlessRaises(
49            AACError, AAC,
50            os.path.join(DATA_DIR, "silence-44-s.mp3"))
51
52    def test_pprint(self):
53        self.assertEqual(self.aac.pprint(), self.aac_id3.pprint())
54        self.assertTrue("ADTS" in self.aac.pprint())
55
56
57class TADIF(TestCase):
58
59    def setUp(self):
60        original = os.path.join(DATA_DIR, "adif.aac")
61        self.filename = get_temp_copy(original)
62
63        tag = ID3()
64        tag.add(TIT1(text=[u"a" * 5000], encoding=3))
65        tag.save(self.filename)
66
67        self.aac = AAC(original)
68        self.aac_id3 = AAC(self.filename)
69
70    def tearDown(self):
71        os.remove(self.filename)
72
73    def test_channels(self):
74        self.failUnlessEqual(self.aac.info.channels, 2)
75        self.failUnlessEqual(self.aac_id3.info.channels, 2)
76
77    def test_bitrate(self):
78        self.failUnlessEqual(self.aac.info.bitrate, 128000)
79        self.failUnlessEqual(self.aac_id3.info.bitrate, 128000)
80
81    def test_sample_rate(self):
82        self.failUnlessEqual(self.aac.info.sample_rate, 48000)
83        self.failUnlessEqual(self.aac_id3.info.sample_rate, 48000)
84
85    def test_length(self):
86        self.failUnlessAlmostEqual(self.aac.info.length, 0.25, 2)
87        self.failUnlessAlmostEqual(self.aac_id3.info.length, 0.25, 2)
88
89    def test_not_my_file(self):
90        self.failUnlessRaises(
91            AACError, AAC,
92            os.path.join(DATA_DIR, "empty.ogg"))
93
94        self.failUnlessRaises(
95            AACError, AAC,
96            os.path.join(DATA_DIR, "silence-44-s.mp3"))
97
98    def test_pprint(self):
99        self.assertEqual(self.aac.pprint(), self.aac_id3.pprint())
100        self.assertTrue("ADIF" in self.aac.pprint())
101