--- /dev/null
+from template import aubio_unit_template
+
+from aubio.aubiowrapper import *
+
+buf_size = 7
+channels = 1
+
+class peakpick_unit(aubio_unit_template):
+
+ def setUp(self):
+ self.o = new_aubio_peakpicker(0.1)
+ pass
+
+ def tearDown(self):
+ del_aubio_peakpicker(self.o)
+ pass
+
+ def test_peakpick(self):
+ """ create and delete peakpick """
+ pass
+
+ def test_peakpick_zeroes(self):
+ """ check peakpick run on a vector full of zero returns no peak. """
+ self.assertEqual(0., aubio_peakpick_pimrt_getval(self.o))
+
+ def test_peakpick_impulse(self):
+ """ check peakpick detects a single impulse as a peak. """
+ """ check two consecutive peaks are detected as one. """
+ #print
+ for index in range(0,buf_size-1):
+ input = new_fvec(buf_size, channels)
+ fvec_write_sample(input, 1000., 0, index)
+ fvec_write_sample(input, 1000./2, 0, index+1)
+ #print "%2s" % index, aubio_peakpick_pimrt(input, self.o), "|",
+ #for i in range(buf_size): print fvec_read_sample(input, 0, i),
+ #print
+ del_fvec(input)
+
+ def test_peakpick_consecutive_peaks(self):
+ """ check two consecutive peaks are detected as one. """
+ #print
+ for index in range(0,buf_size-4):
+ input = new_fvec(buf_size, channels)
+ fvec_write_sample(input, 1000./2, 0, index)
+ fvec_write_sample(input, 1000., 0, index+1)
+ fvec_write_sample(input, 1000., 0, index+3)
+ fvec_write_sample(input, 1000./2, 0, index+4)
+ peak_pick_result = aubio_peakpick_pimrt(input, self.o)
+ if index == 2: self.assertEqual(1., peak_pick_result)
+ else: self.assertEqual(0., peak_pick_result)
+ #print "%2s" % index, peak_pick_result, "|",
+ #for i in range(buf_size): print fvec_read_sample(input, 0, i),
+ #print
+ del_fvec(input)
+ for index in range(buf_size-4,buf_size-1):
+ input = new_fvec(buf_size, channels)
+ fvec_write_sample(input, 1000./2, 0, index)
+ fvec_write_sample(input, 1000., 0, index+1)
+ #print "%2s" % index, aubio_peakpick_pimrt(input, self.o), "|",
+ #for i in range(buf_size): print fvec_read_sample(input, 0, i),
+ #print
+ del_fvec(input)
+
+ def test_peakpick_set_threshold(self):
+ """ test aubio_peakpicker_set_threshold """
+ new_threshold = 0.1
+ aubio_peakpicker_set_threshold(self.o, new_threshold)
+ self.assertCloseEnough(new_threshold, aubio_peakpicker_get_threshold(self.o))
+
+ def test_peakpick_get_threshold(self):
+ """ test aubio_peakpicker_get_threshold """
+ new_threshold = aubio_peakpicker_get_threshold(self.o)
+ aubio_peakpicker_set_threshold(self.o, new_threshold)
+ self.assertCloseEnough(new_threshold, aubio_peakpicker_get_threshold(self.o))
+
+if __name__ == '__main__':
+ unittest.main()