diff options
Diffstat (limited to 'python/tests/test_mathutils.py')
-rwxr-xr-x | python/tests/test_mathutils.py | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/python/tests/test_mathutils.py b/python/tests/test_mathutils.py new file mode 100755 index 0000000..f68fb11 --- /dev/null +++ b/python/tests/test_mathutils.py @@ -0,0 +1,104 @@ +#! /usr/bin/env python + +from unittest import main +from numpy.testing import TestCase, assert_equal +from numpy import array, arange, isnan, isinf +from aubio import bintomidi, miditobin, freqtobin, bintofreq, freqtomidi, miditofreq +from aubio import unwrap2pi +from aubio import fvec +from math import pi + +class aubio_mathutils(TestCase): + + def test_unwrap2pi(self): + unwrap2pi(int(23)) + unwrap2pi(float(23.)) + unwrap2pi(int(23.)) + unwrap2pi(arange(10)) + unwrap2pi(arange(10).astype("int")) + unwrap2pi(arange(10).astype("float")) + unwrap2pi(arange(10).astype("float32")) + unwrap2pi([1,3,5]) + unwrap2pi([23.,24.,25.]) + a = fvec(10) + a[:] = 4. + unwrap2pi(a) + a = pi/100. * arange(-600,600).astype("float") + unwrap2pi(a) + #print zip(a, b) + + def test_unwrap2pi_fails_on_list(self): + with self.assertRaises((TypeError, NotImplementedError)): + unwrap2pi(["23.","24.",25.]) + + def test_unwrap2pi_takes_fvec(self): + a = fvec(10) + b = unwrap2pi(a) + #print zip(a, b) + assert ( b > -pi ).all() + assert ( b <= pi ).all() + + def test_unwrap2pi_takes_array_of_float(self): + a = arange(-10., 10.).astype("float") + b = unwrap2pi(a) + #print zip(a, b) + assert ( b > -pi ).all() + assert ( b <= pi ).all() + + def test_unwrap2pi_takes_array_of_float32(self): + a = arange(-10, 10).astype("float32") + b = unwrap2pi(a) + #print zip(a, b) + assert ( b > -pi ).all() + assert ( b <= pi ).all() + + def test_freqtomidi(self): + a = array(list(range(-20, 50000, 100)) + [ -1e32, 1e32 ]) + b = freqtomidi(a) + #print zip(a, b) + assert_equal ( isnan(array(b)), False ) + assert_equal ( isinf(array(b)), False ) + assert_equal ( array(b) < 0, False ) + + def test_miditofreq(self): + a = list(range(-30, 200)) + [-100000, 10000] + b = miditofreq(a) + #print zip(a, b) + assert_equal ( isnan(b), False ) + assert_equal ( isinf(b), False ) + assert_equal ( b < 0, False ) + + def test_miditobin(self): + a = list(range(-30, 200)) + [-100000, 10000] + b = [ miditobin(x, 44100, 512) for x in a ] + #print zip(a, b) + assert_equal ( isnan(array(b)), False ) + assert_equal ( isinf(array(b)), False ) + assert_equal ( array(b) < 0, False ) + + def test_bintomidi(self): + a = list(range(-100, 512)) + b = [ bintomidi(x, 44100, 512) for x in a ] + #print zip(a, b) + assert_equal ( isnan(array(b)), False ) + assert_equal ( isinf(array(b)), False ) + assert_equal ( array(b) < 0, False ) + + def test_freqtobin(self): + a = list(range(-20, 50000, 100)) + [ -1e32, 1e32 ] + b = [ freqtobin(x, 44100, 512) for x in a ] + #print zip(a, b) + assert_equal ( isnan(array(b)), False ) + assert_equal ( isinf(array(b)), False ) + assert_equal ( array(b) < 0, False ) + + def test_bintofreq(self): + a = list(range(-20, 148)) + b = [ bintofreq(x, 44100, 512) for x in a ] + #print zip(a, b) + assert_equal ( isnan(array(b)), False ) + assert_equal ( isinf(array(b)), False ) + assert_equal ( array(b) < 0, False ) + +if __name__ == '__main__': + main() |