From 1ba54f3e8238115c97dfa0304c7d3dd1025dfa4b Mon Sep 17 00:00:00 2001 From: Olivier Guilyardi Date: Wed, 17 Feb 2010 22:40:41 +0000 Subject: [PATCH] fix input adapter eod return value when the total number of frames is a multiple of the buffer size --- core.py | 2 +- tests/testinputadapter.py | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/core.py b/core.py index 45aae7a..6ee180a 100644 --- 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: diff --git a/tests/testinputadapter.py b/tests/testinputadapter.py index e42f6e6..28550e1 100644 --- a/tests/testinputadapter.py +++ b/tests/testinputadapter.py @@ -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") -- 2.39.5