1import pickle
2import unittest
3from test.support import findfile
4from test.support import warnings_helper
5
6sndhdr = warnings_helper.import_deprecated("sndhdr")
7
8
9class TestFormats(unittest.TestCase):
10    def test_data(self):
11        for filename, expected in (
12            ('sndhdr.8svx', ('8svx', 0, 1, 0, 8)),
13            ('sndhdr.aifc', ('aifc', 44100, 2, 5, 16)),
14            ('sndhdr.aiff', ('aiff', 44100, 2, 5, 16)),
15            ('sndhdr.au', ('au', 44100, 2, 5.0, 16)),
16            ('sndhdr.hcom', ('hcom', 22050.0, 1, -1, 8)),
17            ('sndhdr.sndt', ('sndt', 44100, 1, 5, 8)),
18            ('sndhdr.voc', ('voc', 0, 1, -1, 8)),
19            ('sndhdr.wav', ('wav', 44100, 2, 5, 16)),
20        ):
21            filename = findfile(filename, subdir="sndhdrdata")
22            what = sndhdr.what(filename)
23            self.assertNotEqual(what, None, filename)
24            self.assertSequenceEqual(what, expected)
25            self.assertEqual(what.filetype, expected[0])
26            self.assertEqual(what.framerate, expected[1])
27            self.assertEqual(what.nchannels, expected[2])
28            self.assertEqual(what.nframes, expected[3])
29            self.assertEqual(what.sampwidth, expected[4])
30
31    def test_pickleable(self):
32        filename = findfile('sndhdr.aifc', subdir="sndhdrdata")
33        what = sndhdr.what(filename)
34        for proto in range(pickle.HIGHEST_PROTOCOL + 1):
35            dump = pickle.dumps(what, proto)
36            self.assertEqual(pickle.loads(dump), what)
37
38
39if __name__ == '__main__':
40    unittest.main()
41