3 from numpy.testing import TestCase
4 from numpy.testing.utils import assert_equal, assert_almost_equal
5 from numpy import cos, arange
8 from aubio import window, level_lin, db_spl, silence_detection, level_detection
10 from aubio import fvec, float_type
12 class aubio_window(TestCase):
14 def test_accept_name_and_size(self):
15 window("default", 1024)
17 def test_fail_name_not_string(self):
20 except ValueError as e:
23 self.fail('non-string window type does not raise a ValueError')
25 def test_fail_size_not_int(self):
27 window("default", "default")
28 except ValueError as e:
31 self.fail('non-integer window length does not raise a ValueError')
33 def test_compute_hanning_1024(self):
35 aubio_window = window("hanning", size)
36 numpy_window = .5 - .5 * cos(2. * pi * arange(size) / size)
37 assert_almost_equal(aubio_window, numpy_window)
39 class aubio_level_lin(TestCase):
40 def test_accept_fvec(self):
43 def test_fail_not_fvec(self):
46 except ValueError as e:
49 self.fail('non-number input phase does not raise a TypeError')
51 def test_zeros_is_zeros(self):
52 assert_equal(level_lin(fvec(1024)), 0.)
54 def test_minus_ones_is_one(self):
55 from numpy import ones
56 assert_equal(level_lin(-ones(1024, dtype = float_type)), 1.)
58 class aubio_db_spl(TestCase):
59 def test_accept_fvec(self):
62 def test_fail_not_fvec(self):
65 except ValueError as e:
68 self.fail('non-number input phase does not raise a TypeError')
70 def test_zeros_is_inf(self):
71 from math import isinf
72 assert isinf(db_spl(fvec(1024)))
74 def test_minus_ones_is_zero(self):
75 from numpy import ones
76 assert_equal(db_spl(-ones(1024, dtype = float_type)), 0.)
78 class aubio_silence_detection(TestCase):
79 def test_accept_fvec(self):
80 silence_detection(fvec(1024), -70.)
82 def test_fail_not_fvec(self):
84 silence_detection("default", -70)
85 except ValueError as e:
88 self.fail('non-number input phase does not raise a TypeError')
90 def test_zeros_is_one(self):
91 from math import isinf
92 assert silence_detection(fvec(1024), -70) == 1
94 def test_minus_ones_is_zero(self):
95 from numpy import ones
96 assert silence_detection(ones(1024, dtype = float_type), -70) == 0
98 class aubio_level_detection(TestCase):
99 def test_accept_fvec(self):
100 level_detection(fvec(1024), -70.)
102 def test_fail_not_fvec(self):
104 level_detection("default", -70)
105 except ValueError as e:
108 self.fail('non-number input phase does not raise a TypeError')
110 def test_zeros_is_one(self):
111 from math import isinf
112 assert level_detection(fvec(1024), -70) == 1
114 def test_minus_ones_is_zero(self):
115 from numpy import ones
116 assert level_detection(ones(1024, dtype = float_type), -70) == 0
118 if __name__ == '__main__':
119 from unittest import main