annotate test/sndarray_test.py @ 1849:301bc61643a9 math_module

merged changes from trunk
author lorenz
date Mon, 16 Nov 2009 18:31:40 +0000
parents aa07ba901c03
children 27991588198b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
1 if __name__ == '__main__':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
2 import sys
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
3 import os
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
4 pkg_dir = os.path.split(os.path.abspath(__file__))[0]
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
5 parent_dir, pkg_name = os.path.split(pkg_dir)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
6 is_pygame_pkg = (pkg_name == 'tests' and
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
7 os.path.split(parent_dir)[1] == 'pygame')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
8 if not is_pygame_pkg:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
9 sys.path.insert(0, parent_dir)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
10 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
11 is_pygame_pkg = __name__.startswith('pygame.tests.')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
12
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
13 if is_pygame_pkg:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
14 from pygame.tests.test_utils import test_not_implemented, unittest
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
15 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
16 from test.test_utils import test_not_implemented, unittest
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
17 import pygame
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
18
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
19 arraytype = ""
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
20 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
21 import pygame.sndarray
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
22 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
23 pass
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
24 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
25 arraytype = pygame.sndarray.get_arraytype()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
26 if arraytype == 'numpy':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
27 from numpy import \
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
28 int8, int16, uint8, uint16, array, alltrue
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
29 elif arraytype == 'numeric':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
30 from Numeric import \
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
31 Int8 as int8, Int16 as int16, UInt8 as uint8, UInt16 as uint16, \
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
32 array, alltrue
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
33 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
34 print ("Unknown array type %s; tests skipped" %
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
35 (pygame.sndarray.get_arraytype(),))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
36 arraytype = ""
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
37
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
38
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
39 class SndarrayTest (unittest.TestCase):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
40 if arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
41 array_dtypes = {8: uint8, -8: int8, 16: uint16, -16: int16}
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
42
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
43 def _assert_compatible(self, arr, size):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
44 dtype = self.array_dtypes[size]
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
45 if arraytype == 'numpy':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
46 self.failUnlessEqual(arr.dtype, dtype)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
47 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
48 self.failUnlessEqual(arr.typecode(), dtype)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
49
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
50 def test_import(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
51 'does it import'
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
52 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
53 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
54 import pygame.sndarray
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
55
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
56 def test_array(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
57 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
58 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
59
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
60 def check_array(size, channels, test_data):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
61 try:
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
62 pygame.mixer.init(22050, size, channels)
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
63 except pygame.error:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
64 # Not all sizes are supported on all systems.
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
65 return
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
66 try:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
67 __, sz, __ = pygame.mixer.get_init()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
68 if sz == size:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
69 srcarr = array(test_data, self.array_dtypes[size])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
70 snd = pygame.sndarray.make_sound(srcarr)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
71 arr = pygame.sndarray.array(snd)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
72 self._assert_compatible(arr, size)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
73 self.failUnless(alltrue(arr == srcarr),
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
74 "size: %i\n%s\n%s" %
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
75 (size, arr, test_data))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
76 finally:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
77 pygame.mixer.quit()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
78
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
79 check_array(8, 1, [0, 0x0f, 0xf0, 0xff])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
80 check_array(8, 2,
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
81 [[0, 0x80], [0x2D, 0x41], [0x64, 0xA1], [0xff, 0x40]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
82 check_array(16, 1, [0, 0x00ff, 0xff00, 0xffff])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
83 check_array(16, 2, [[0, 0xffff], [0xffff, 0],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
84 [0x00ff, 0xff00], [0x0f0f, 0xf0f0]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
85 check_array(-8, 1, [0, -0x80, 0x7f, 0x64])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
86 check_array(-8, 2,
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
87 [[0, -0x80], [-0x64, 0x64], [0x25, -0x50], [0xff, 0]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
88 check_array(-16, 1, [0, 0x7fff, -0x7fff, -1])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
89 check_array(-16, 2, [[0, -0x7fff], [-0x7fff, 0],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
90 [0x7fff, 0], [0, 0x7fff]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
91
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
92 def test_get_arraytype(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
93 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
94 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
95
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
96 self.failUnless((pygame.sndarray.get_arraytype() in
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
97 ['numpy', 'numeric']),
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
98 ("unknown array type %s" %
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
99 pygame.sndarray.get_arraytype()))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
100
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
101 def test_get_arraytypes(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
102 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
103 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
104
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
105 arraytypes = pygame.sndarray.get_arraytypes()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
106 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
107 import numpy
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
108 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
109 self.failIf('numpy' in arraytypes)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
110 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
111 self.failUnless('numpy' in arraytypes)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
112
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
113 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
114 import Numeric
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
115 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
116 self.failIf('numeric' in arraytypes)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
117 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
118 self.failUnless('numeric' in arraytypes)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
119
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
120 for atype in arraytypes:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
121 self.failUnless(atype in ['numpy', 'numeric'],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
122 "unknown array type %s" % atype)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
123
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
124 def test_make_sound(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
125 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
126 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
127
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
128 def check_sound(size, channels, test_data):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
129 try:
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
130 pygame.mixer.init(22050, size, channels)
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
131 except pygame.error:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
132 # Not all sizes are supported on all systems.
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
133 return
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
134 try:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
135 __, sz, __ = pygame.mixer.get_init()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
136 if sz == size:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
137 srcarr = array(test_data, self.array_dtypes[size])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
138 snd = pygame.sndarray.make_sound(srcarr)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
139 arr = pygame.sndarray.samples(snd)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
140 self.failUnless(alltrue(arr == srcarr),
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
141 "size: %i\n%s\n%s" %
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
142 (size, arr, test_data))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
143 finally:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
144 pygame.mixer.quit()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
145
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
146 check_sound(8, 1, [0, 0x0f, 0xf0, 0xff])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
147 check_sound(8, 2,
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
148 [[0, 0x80], [0x2D, 0x41], [0x64, 0xA1], [0xff, 0x40]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
149 check_sound(16, 1, [0, 0x00ff, 0xff00, 0xffff])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
150 check_sound(16, 2, [[0, 0xffff], [0xffff, 0],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
151 [0x00ff, 0xff00], [0x0f0f, 0xf0f0]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
152 check_sound(-8, 1, [0, -0x80, 0x7f, 0x64])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
153 check_sound(-8, 2,
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
154 [[0, -0x80], [-0x64, 0x64], [0x25, -0x50], [0xff, 0]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
155 check_sound(-16, 1, [0, 0x7fff, -0x7fff, -1])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
156 check_sound(-16, 2, [[0, -0x7fff], [-0x7fff, 0],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
157 [0x7fff, 0], [0, 0x7fff]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
158
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
159 def test_samples(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
160 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
161 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
162
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
163 def check_sample(size, channels, test_data):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
164 try:
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
165 pygame.mixer.init(22050, size, channels)
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
166 except pygame.error:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
167 # Not all sizes are supported on all systems.
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
168 return
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
169 try:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
170 __, sz, __ = pygame.mixer.get_init()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
171 if sz == size:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
172 zeroed = '\0' * ((abs(size) // 8) *
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
173 len(test_data) *
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
174 channels)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
175 snd = pygame.mixer.Sound(buffer(zeroed))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
176 samples = pygame.sndarray.samples(snd)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
177 self._assert_compatible(samples, size)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
178 print ('X %s' % (samples.shape,))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
179 print ('Y %s' % (test_data,))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
180 samples[...] = test_data
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
181 arr = pygame.sndarray.array(snd)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
182 self.failUnless(alltrue(samples == arr),
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
183 "size: %i\n%s\n%s" %
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
184 (size, arr, test_data))
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
185 finally:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
186 pygame.mixer.quit()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
187
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
188 check_sample(8, 1, [0, 0x0f, 0xf0, 0xff])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
189 check_sample(8, 2,
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
190 [[0, 0x80], [0x2D, 0x41], [0x64, 0xA1], [0xff, 0x40]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
191 check_sample(16, 1, [0, 0x00ff, 0xff00, 0xffff])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
192 check_sample(16, 2, [[0, 0xffff], [0xffff, 0],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
193 [0x00ff, 0xff00], [0x0f0f, 0xf0f0]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
194 check_sample(-8, 1, [0, -0x80, 0x7f, 0x64])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
195 check_sample(-8, 2,
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
196 [[0, -0x80], [-0x64, 0x64], [0x25, -0x50], [0xff, 0]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
197 check_sample(-16, 1, [0, 0x7fff, -0x7fff, -1])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
198 check_sample(-16, 2, [[0, -0x7fff], [-0x7fff, 0],
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
199 [0x7fff, 0], [0, 0x7fff]])
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
200
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
201 def test_use_arraytype(self):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
202 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
203 self.fail("no array package installed")
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
204
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
205 def do_use_arraytype(atype):
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
206 pygame.sndarray.use_arraytype(atype)
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
207
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
208 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
209 import numpy
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
210 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
211 self.failUnlessRaises(ValueError, do_use_arraytype, 'numpy')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
212 self.failIfEqual(pygame.sndarray.get_arraytype(), 'numpy')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
213 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
214 pygame.sndarray.use_arraytype('numpy')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
215 self.failUnlessEqual(pygame.sndarray.get_arraytype(), 'numpy')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
216
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
217 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
218 import Numeric
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
219 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
220 self.failUnlessRaises(ValueError, do_use_arraytype, 'numeric')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
221 self.failIfEqual(pygame.sndarray.get_arraytype(), 'numeric')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
222 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
223 pygame.sndarray.use_arraytype('numeric')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
224 self.failUnlessEqual(pygame.sndarray.get_arraytype(), 'numeric')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
225
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
226 self.failUnlessRaises(ValueError, do_use_arraytype, 'not an option')
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
227
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
228
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
229 if __name__ == '__main__':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
230 unittest.main()