shithub: aubio

ref: 5a7e2c3a1b79adc7f15e9eb3e6614349e431cfa9
dir: /python/tests/test_musicutils.py/

View raw version
#! /usr/bin/env python

from numpy.testing import TestCase
from numpy.testing.utils import assert_equal, assert_almost_equal
from numpy import cos, arange
from math import pi

from aubio import window, level_lin

from aubio import fvec

class aubio_window(TestCase):

    def test_accept_name_and_size(self):
        window("default", 1024)

    def test_fail_name_not_string(self):
        try:
            window(10, 1024)
        except ValueError, e:
            pass
        else:
            self.fail('non-string window type does not raise a ValueError')

    def test_fail_size_not_int(self):
        try:
            window("default", "default")
        except ValueError, e:
            pass
        else:
            self.fail('non-integer window length does not raise a ValueError')

    def test_compute_hanning_1024(self):
        size = 1024
        aubio_window = window("hanning", size)
        numpy_window = .5 - .5 * cos(2. * pi * arange(size) / size)
        assert_almost_equal(aubio_window, numpy_window)

class aubio_level_lin(TestCase):
    def test_accept_fvec(self):
        level_lin(fvec(1024))

    def test_fail_not_fvec(self):
        try:
            level_lin("default")
        except ValueError, e:
            pass
        else:
            self.fail('non-number input phase does not raise a TypeError')

    def test_zeros_is_zeros(self):
        assert_equal(level_lin(fvec(1024)), 0.)

    def test_minus_ones_is_one(self):
        from numpy import ones
        assert_equal(level_lin(-ones(1024, dtype="float32")), 1.)

if __name__ == '__main__':
    from unittest import main
    main()