]> git.parisson.com Git - timeside.git/commitdiff
fix input adapter eod return value when the total number of frames is a multiple...
authorOlivier Guilyardi <olivier@samalyse.com>
Wed, 17 Feb 2010 22:40:41 +0000 (22:40 +0000)
committerOlivier Guilyardi <olivier@samalyse.com>
Wed, 17 Feb 2010 22:40:41 +0000 (22:40 +0000)
core.py
tests/testinputadapter.py

diff --git a/core.py b/core.py
index 45aae7a6b7464d75e315c30e9e2109ab8b4e8934..6ee180a4cf182d2c37c92ec4a9d293039e138bcd 100644 (file)
--- a/core.py
+++ b/core.py
@@ -136,7 +136,7 @@ class FixedSizeInputAdapter(object):
             self.len  += copylen
 
             if self.len == self.buffer_size:
-                yield self.buffer, False
+                yield self.buffer, (eod and not remaining)
                 self.len = 0
 
         if eod and self.len:
index e42f6e67701b47390272d205bf45db67d4ce5bbf..28550e1da00f58f81b6bcf8d39a6fdf7a1caf64d 100644 (file)
@@ -2,13 +2,17 @@ from timeside.core import FixedSizeInputAdapter
 from sys import stdout
 import numpy
 
-def test(adapter, data, eod, expected):
+def test(adapter, data, eod, expected, expected_eod=None):
     expected.reverse()
+    _eod = None
     for buffer, _eod in adapter.process(data, eod):
         a = expected.pop()
         if not numpy.array_equiv(buffer, a):
             raise Exception("\n-- Actual --\n%s\n -- Expected -- \n%s\n" % (str(buffer), str(a)))
 
+    if _eod != expected_eod:
+        raise Exception("eod do not match: %s != %s", (str(_eod), str(expected_eod)))
+
     if expected:
         raise Exception("trailing expected data: %s" % expected)
 
@@ -25,14 +29,14 @@ if actual != expected:
     raise Exception("%d != %d nframes", (actual, expected))
 
 test(adapter, data[0:1], False, [])
-test(adapter, data[1:5], False, [data[0:4]])
-test(adapter, data[5:12], False, [data[4:8], data[8:12]])
+test(adapter, data[1:5], False, [data[0:4]], False)
+test(adapter, data[5:12], False, [data[4:8], data[8:12]], False)
 test(adapter, data[12:13], False, [])
 test(adapter, data[13:14], False, [])
-test(adapter, data[14:18], False, [data[12:16]])
-test(adapter, data[18:20], False, [data[16:20]])
+test(adapter, data[14:18], False, [data[12:16]], False)
+test(adapter, data[18:20], False, [data[16:20]], False)
 test(adapter, data[20:21], False, [])
-test(adapter, data[21:22], True, [data[20:22]])
+test(adapter, data[21:22], True, [data[20:22]], True)
 stdout.write(" OK\n")
 
 adapter = FixedSizeInputAdapter(4, 2, pad=True)
@@ -43,11 +47,16 @@ actual   = adapter.nframes(len(data))
 if actual != expected:
     raise Exception("%d != %d nframes", (actual, expected))
 
-test(adapter, data[0:21], False, [data[0:4], data[4:8], data[8:12], data[12:16], data[16:20]])
+test(adapter, data[0:21], False, [data[0:4], data[4:8], data[8:12], data[12:16], data[16:20]], False)
 test(adapter, data[21:22], True, [[
     [20, 42],
     [21, 43],
     [0, 0],
     [0, 0]
-]])
+]], True)
+stdout.write(" OK\n")
+
+adapter = FixedSizeInputAdapter(4, 2)
+stdout.write("%s multiple test" % adapter.__class__.__name__)
+test(adapter, data[0:20], True, [data[0:4], data[4:8], data[8:12], data[12:16], data[16:20]], True)
 stdout.write(" OK\n")