shithub: aubio

ref: b712146c4cd22929e97320510e48d30e9145e9b4
dir: /tests/python/examples/aubioonset.py/

View raw version
from template import program_test_case

class aubioonset_unit(program_test_case):
  
  import os.path
  filename = os.path.join('..','..','sounds','woodblock.aiff')
  progname = os.path.join('..','..','examples','aubioonset')

  def test_aubioonset_with_inf_silence(self):
    """ test aubioonset with -s 0  """
    self.command += " -s 0" 
    self.getOutput()
    assert len(self.output) == 0, self.output

class aubioonset_unit_finds_onset(aubioonset_unit):

  def test_aubioonset(self):
    """ test aubioonset with default parameters """
    self.getOutput()
    assert len(str(self.output)) != 0, "no output produced with command:\n" \
      + self.command

  def test_aubioonset_with_no_silence(self):
    """ test aubioonset with -s -100 """ 
    self.command += " -s -100 " 
    self.getOutput()
    # only one onset in woodblock.aiff
    self.assertNotEqual(0, len(str(self.output)), \
      "no output produced with command:\n" + self.command)
    self.assertEqual(1, len(self.output.split('\n')) )
    # onset should be at 0.00000
    self.assertEqual(0, float(self.output.strip()))

list_of_onset_modes = ["energy", "specdiff", "hfc", "complex", "phase", \
                      "kl", "mkl", "specflux"]

for name in list_of_onset_modes:
  exec("class aubioonset_"+name+"_unit(aubioonset_unit):\n\
  options = \" -O "+name+" \"")

if __name__ == '__main__': unittest.main()