Mercurial > pygame
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 |
| 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() |
