add first tests for scale.c
authorPaul Brossier <piem@piem.org>
Fri, 30 Nov 2007 18:52:54 +0000 (19:52 +0100)
committerPaul Brossier <piem@piem.org>
Fri, 30 Nov 2007 18:52:54 +0000 (19:52 +0100)
tests/python/src/utils/scale.py [new file with mode: 0644]

diff --git a/tests/python/src/utils/scale.py b/tests/python/src/utils/scale.py
new file mode 100644 (file)
index 0000000..f48e6f3
--- /dev/null
@@ -0,0 +1,95 @@
+import unittest
+
+from template import aubio_unit_template
+from aubio.aubiowrapper import *
+
+buf_size = 2000
+channels = 2
+
+ilow = .40
+ihig = 40.00
+olow = 100.0
+ohig = 1000.
+
+class scale_unit(aubio_unit_template):
+
+  def setUp(self):
+    self.o = new_aubio_scale(ilow, ihig, olow, ohig)
+
+  def tearDown(self):
+    del_aubio_scale(self.o)
+
+  def test(self):
+    """ create and delete scale """
+    pass
+
+  def test_zeroes(self):
+    """ test scale on zeroes """
+    input = new_fvec(buf_size, channels)
+    aubio_scale_do(self.o, input)
+    for index in range(buf_size):
+      for channel in range(channels):
+        expval = (- ilow) * (ohig - olow) / \
+          (ihig - ilow) + olow
+        val = fvec_read_sample(input, channel, index)
+        self.assertCloseEnough(expval, val)
+    del_fvec(input)
+
+  def test_ilow(self):
+    """ test scale on ilow """
+    input = new_fvec(buf_size, channels)
+    for index in range(buf_size):
+      for channel in range(channels):
+        fvec_write_sample(input, ilow, channel, index)
+    aubio_scale_do(self.o, input)
+    for index in range(buf_size):
+      for channel in range(channels):
+        val = fvec_read_sample(input, channel, index)
+        self.assertAlmostEqual(olow, val)
+    del_fvec(input)
+
+  def test_ihig(self):
+    """ test scale on ihig """
+    input = new_fvec(buf_size, channels)
+    for index in range(buf_size):
+      for channel in range(channels):
+        fvec_write_sample(input, ihig, channel, index)
+    aubio_scale_do(self.o, input)
+    for index in range(buf_size):
+      for channel in range(channels):
+        val = fvec_read_sample(input, channel, index)
+        self.assertCloseEnough(ohig, val)
+    del_fvec(input)
+
+  def test_climbing_ramp(self):
+    """ test scale on climbing ramp """
+    input = new_fvec(buf_size, channels)
+    for index in range(buf_size):
+      for channel in range(channels):
+        rampval = index*(ihig-ilow)/buf_size + ilow 
+        fvec_write_sample(input, rampval, channel, index)
+    aubio_scale_do(self.o, input)
+    for index in range(buf_size):
+      for channel in range(channels):
+        expval = index*(ohig-olow)/buf_size + olow
+        self.assertCloseEnough(expval, \
+          fvec_read_sample(input, channel, index))
+    del_fvec(input)
+
+  def test_falling_ramp(self):
+    """ test scale on falling ramp """
+    input = new_fvec(buf_size, channels)
+    for index in range(buf_size):
+      for channel in range(channels):
+        fvec_write_sample(input, ihig \
+          - index*(ihig-ilow)/buf_size, \
+          channel, index)
+    aubio_scale_do(self.o, input)
+    for index in range(buf_size):
+      for channel in range(channels):
+        expval = ohig - index*(ohig-olow)/buf_size
+        self.assertCloseEnough(expval, \
+          fvec_read_sample(input, channel, index))
+    del_fvec(input)
+
+if __name__ == '__main__': unittest.main()