annotate test/sndarray_test.py @ 3194:9fcb7abf3185 default tip

Remove some gcc 4.7.2 compiler warnings
author Lenard Lindstrom <len-l@telus.net>
date Tue, 23 Apr 2013 19:53:36 -0700
parents 27991588198b
children
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
2088
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
18 from pygame.compat import as_bytes
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
19
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
20 arraytype = ""
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
21 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
22 import pygame.sndarray
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
23 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
24 pass
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
25 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
26 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
27 if arraytype == 'numpy':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
28 from numpy import \
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
29 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
30 elif arraytype == 'numeric':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
31 from Numeric import \
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
32 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
33 array, alltrue
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
34 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
35 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
36 (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
37 arraytype = ""
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
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
40 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
41 if arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
42 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
43
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
44 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
45 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
46 if arraytype == 'numpy':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
47 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
48 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
49 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
50
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
51 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
52 'does it import'
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
53 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
54 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
55 import pygame.sndarray
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
56
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
57 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
58 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
59 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
60
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
61 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
62 try:
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
63 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
64 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
65 # 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
66 return
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
67 try:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
68 __, 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
69 if sz == size:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
70 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
71 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
72 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
73 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
74 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
75 "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
76 (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
77 finally:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
78 pygame.mixer.quit()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
79
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, 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
81 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
82 [[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
83 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
84 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
85 [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
86 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
87 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
88 [[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
89 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
90 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
91 [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
92
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
93 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
94 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
95 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
96
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
97 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
98 ['numpy', 'numeric']),
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
99 ("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
100 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
101
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
102 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
103 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
104 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
105
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
106 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
107 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
108 import numpy
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
109 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
110 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
111 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
112 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
113
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
114 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
115 import Numeric
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
116 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
117 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
118 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
119 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
120
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
121 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
122 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
123 "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
124
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
125 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
126 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
127 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
128
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
129 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
130 try:
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
131 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
132 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
133 # 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
134 return
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
135 try:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
136 __, 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
137 if sz == size:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
138 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
139 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
140 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
141 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
142 "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
143 (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
144 finally:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
145 pygame.mixer.quit()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
146
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, 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
148 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
149 [[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
150 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
151 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
152 [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
153 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
154 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
155 [[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
156 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
157 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
158 [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
159
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
160 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
161 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
162 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
163
2088
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
164 null_byte = as_bytes('\x00')
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
165 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
166 try:
1805
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
167 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
168 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
169 # 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
170 return
aa07ba901c03 fix sndarray_test.py problem where failed to detect unsupported formats
Lenard Lindstrom <len-l@telus.net>
parents: 1610
diff changeset
171 try:
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
172 __, 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
173 if sz == size:
2088
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
174 zeroed = null_byte * ((abs(size) // 8) *
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
175 len(test_data) *
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
176 channels)
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
177 snd = pygame.mixer.Sound(buffer=zeroed)
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
178 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
179 self._assert_compatible(samples, size)
2088
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
180 ##print ('X %s' % (samples.shape,))
27991588198b upgrade numpy handling to Python 3.x
Lenard Lindstrom <len-l@telus.net>
parents: 1805
diff changeset
181 ##print ('Y %s' % (test_data,))
1610
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
182 samples[...] = test_data
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
183 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
184 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
185 "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
186 (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
187 finally:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
188 pygame.mixer.quit()
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
189
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
190 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
191 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
192 [[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
193 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
194 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
195 [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
196 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
197 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
198 [[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
199 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
200 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
201 [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
202
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
203 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
204 if not arraytype:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
205 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
206
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
207 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
208 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
209
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
210 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
211 import numpy
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
212 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
213 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
214 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
215 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
216 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
217 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
218
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
219 try:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
220 import Numeric
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
221 except ImportError:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
222 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
223 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
224 else:
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
225 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
226 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
227
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
228 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
229
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
230
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
231 if __name__ == '__main__':
6c5040262b53 implement *_tags.py module replacement to *_test.py level tags.
Lenard Lindstrom <len-l@telus.net>
parents: 1608
diff changeset
232 unittest.main()