From e9ebde48cf5d7892794eacaeba683b308ce5a94b Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 13 Jul 2010 23:04:56 +0000 Subject: Issue #9243: Fix sndhdr module and add unit tests, contributed by James Lee. --- Lib/sndhdr.py | 8 +++---- Lib/test/sndhdrdata/README | 12 ++++++++++ Lib/test/sndhdrdata/sndhdr.8svx | Bin 0 -> 110 bytes Lib/test/sndhdrdata/sndhdr.aifc | Bin 0 -> 106 bytes Lib/test/sndhdrdata/sndhdr.aiff | Bin 0 -> 108 bytes Lib/test/sndhdrdata/sndhdr.au | Bin 0 -> 64 bytes Lib/test/sndhdrdata/sndhdr.hcom | Bin 0 -> 256 bytes Lib/test/sndhdrdata/sndhdr.sndt | Bin 0 -> 129 bytes Lib/test/sndhdrdata/sndhdr.voc | Bin 0 -> 63 bytes Lib/test/sndhdrdata/sndhdr.wav | Bin 0 -> 64 bytes Lib/test/test_sndhdr.py | 47 ++++++++++++++++++++++++++++++++++++++++ Misc/ACKS | 1 + Misc/NEWS | 2 ++ 13 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 Lib/test/sndhdrdata/README create mode 100644 Lib/test/sndhdrdata/sndhdr.8svx create mode 100644 Lib/test/sndhdrdata/sndhdr.aifc create mode 100644 Lib/test/sndhdrdata/sndhdr.aiff create mode 100644 Lib/test/sndhdrdata/sndhdr.au create mode 100644 Lib/test/sndhdrdata/sndhdr.hcom create mode 100644 Lib/test/sndhdrdata/sndhdr.sndt create mode 100644 Lib/test/sndhdrdata/sndhdr.voc create mode 100644 Lib/test/sndhdrdata/sndhdr.wav create mode 100644 Lib/test/test_sndhdr.py diff --git a/Lib/sndhdr.py b/Lib/sndhdr.py index a8e0a05..9f5dcc9 100644 --- a/Lib/sndhdr.py +++ b/Lib/sndhdr.py @@ -57,12 +57,12 @@ tests = [] def test_aifc(h, f): import aifc - if h.startswith(b'FORM'): + if not h.startswith(b'FORM'): return None if h[8:12] == b'AIFC': fmt = 'aifc' elif h[8:12] == b'AIFF': - fmt = b'aiff' + fmt = 'aiff' else: return None f.seek(0) @@ -123,7 +123,7 @@ tests.append(test_hcom) def test_voc(h, f): - if h.startswith(b'Creative Voice File\032'): + if not h.startswith(b'Creative Voice File\032'): return None sbseek = get_short_le(h[20:22]) rate = 0 @@ -150,7 +150,7 @@ tests.append(test_wav) def test_8svx(h, f): - if h.startswith(b'FORM') or h[8:12] != b'8SVX': + if not h.startswith(b'FORM') or h[8:12] != b'8SVX': return None # Should decode it to get #channels -- assume always 1 return '8svx', 0, 1, 0, 8 diff --git a/Lib/test/sndhdrdata/README b/Lib/test/sndhdrdata/README new file mode 100644 index 0000000..8a17c00 --- /dev/null +++ b/Lib/test/sndhdrdata/README @@ -0,0 +1,12 @@ +Sound file samples used by Lib/test/test_sndhdr.py and generated using the +following commands: + + dd if=/dev/zero of=sndhdr.raw bs=20 count=1 + sox -s -2 -c 2 -r 44100 sndhdr.raw sndhdr. + +Sound file samples used by Lib/test/test_sndhdr.py and generated using the +following commands: + + dd if=/dev/zero of=sndhdr.raw bs=20 count=1 + sox -s -2 -c 2 -r 44100 sndhdr.raw sndhdr. + diff --git a/Lib/test/sndhdrdata/sndhdr.8svx b/Lib/test/sndhdrdata/sndhdr.8svx new file mode 100644 index 0000000..8cd6cde Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.8svx differ diff --git a/Lib/test/sndhdrdata/sndhdr.aifc b/Lib/test/sndhdrdata/sndhdr.aifc new file mode 100644 index 0000000..8aae4e7 Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.aifc differ diff --git a/Lib/test/sndhdrdata/sndhdr.aiff b/Lib/test/sndhdrdata/sndhdr.aiff new file mode 100644 index 0000000..8c279a7 Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.aiff differ diff --git a/Lib/test/sndhdrdata/sndhdr.au b/Lib/test/sndhdrdata/sndhdr.au new file mode 100644 index 0000000..67c9e8f Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.au differ diff --git a/Lib/test/sndhdrdata/sndhdr.hcom b/Lib/test/sndhdrdata/sndhdr.hcom new file mode 100644 index 0000000..debb02d Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.hcom differ diff --git a/Lib/test/sndhdrdata/sndhdr.sndt b/Lib/test/sndhdrdata/sndhdr.sndt new file mode 100644 index 0000000..e1ca9cb Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.sndt differ diff --git a/Lib/test/sndhdrdata/sndhdr.voc b/Lib/test/sndhdrdata/sndhdr.voc new file mode 100644 index 0000000..53a91fd Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.voc differ diff --git a/Lib/test/sndhdrdata/sndhdr.wav b/Lib/test/sndhdrdata/sndhdr.wav new file mode 100644 index 0000000..0dca367 Binary files /dev/null and b/Lib/test/sndhdrdata/sndhdr.wav differ diff --git a/Lib/test/test_sndhdr.py b/Lib/test/test_sndhdr.py new file mode 100644 index 0000000..4b4c857 --- /dev/null +++ b/Lib/test/test_sndhdr.py @@ -0,0 +1,47 @@ +import sndhdr +import unittest +from test.support import findfile + +class TestFormats(unittest.TestCase): + def test_data(self): + for filename, expected in ( + ('sndhdr.8svx', ('8svx', 0, 1, 0, 8)), + ('sndhdr.aifc', ('aifc', 44100, 2, 5, 16)), + ('sndhdr.aiff', ('aiff', 44100, 2, 5, 16)), + ('sndhdr.au', ('au', 44100, 2, 5.0, 16)), + ('sndhdr.hcom', ('hcom', 22050.0, 1, -1, 8)), + ('sndhdr.sndt', ('sndt', 44100, 1, 5, 8)), + ('sndhdr.voc', ('voc', 0, 1, -1, 8)), + ('sndhdr.wav', ('wav', 44100, 2, -1, 16)), + ): + filename = findfile(filename, subdir="sndhdrdata") + what = sndhdr.what(filename) + self.assertNotEqual(what, None, filename) + self.assertSequenceEqual(what, expected) + +if __name__ == '__main__': + unittest.main() + +import sndhdr +import unittest +from test.support import findfile + +class TestFormats(unittest.TestCase): + def test_data(self): + for filename, expected in ( + ('sndhdr.8svx', ('8svx', 0, 1, 0, 8)), + ('sndhdr.aifc', ('aifc', 44100, 2, 5, 16)), + ('sndhdr.aiff', ('aiff', 44100, 2, 5, 16)), + ('sndhdr.au', ('au', 44100, 2, 5.0, 16)), + ('sndhdr.hcom', ('hcom', 22050.0, 1, -1, 8)), + ('sndhdr.sndt', ('sndt', 44100, 1, 5, 8)), + ('sndhdr.voc', ('voc', 0, 1, -1, 8)), + ('sndhdr.wav', ('wav', 44100, 2, -1, 16)), + ): + filename = findfile(filename, subdir="sndhdrdata") + what = sndhdr.what(filename) + self.assertNotEqual(what, None, filename) + self.assertSequenceEqual(what, expected) + +if __name__ == '__main__': + unittest.main() diff --git a/Misc/ACKS b/Misc/ACKS index b340795..2823789 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -454,6 +454,7 @@ Ben Laurie Simon Law Chris Lawrence Brian Leair +James Lee John J. Lee Inyeol Lee Thomas Lee diff --git a/Misc/NEWS b/Misc/NEWS index 86e8d16..6579ae1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -473,6 +473,8 @@ C-API Library ------- +- Issue #9243: Fix sndhdr module and add unit tests, contributed by James Lee. + - ``ast.literal_eval()`` now allows byte literals. - Issue #9137: Fix issue in MutableMapping.update, which incorrectly -- cgit v0.12