Skip to content
This repository has been archived by the owner on May 31, 2024. It is now read-only.

Commit

Permalink
Merge pull request #7 from PTB-PSt1/resolve_read_from_empty_buffer
Browse files Browse the repository at this point in the history
Resolve read from empty buffer
  • Loading branch information
mgrub authored Sep 2, 2020
2 parents b7ff824 + 875c645 commit 6e838d1
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 7 deletions.
43 changes: 43 additions & 0 deletions test_buffer/test_buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ def test_show_all():
# check if newest elements are received and order is as expected
assert np.all(result == data)


def test_return_format_list():
M = 4
tsb = TimeSeriesBuffer(maxlen=maxlen, return_type="list")
Expand Down Expand Up @@ -247,3 +248,45 @@ def test_return_format_uarrays():
assert isinstance(v, np.ndarray)
assert isinstance(t[0], uncertainties.core.Variable)
assert isinstance(v[0], uncertainties.core.Variable)


def test_pop_empty_array():
tsb = TimeSeriesBuffer(maxlen=maxlen, return_type="array")
result = tsb.pop()

assert isinstance(result, np.ndarray)
assert result.shape == (0, 4)
assert result.size == 0


def test_pop_empty_arrays():
tsb = TimeSeriesBuffer(maxlen=maxlen, return_type="arrays")
t, ut, v, uv = tsb.show(n_samples=n_samples)

assert isinstance(t, np.ndarray)
assert isinstance(ut, np.ndarray)
assert isinstance(v, np.ndarray)
assert isinstance(uv, np.ndarray)
assert t.size == 0
assert ut.size == 0
assert v.size == 0
assert uv.size == 0


def test_pop_empty_uarray():
tsb = TimeSeriesBuffer(maxlen=maxlen, return_type="uarray")
result = tsb.show(n_samples=n_samples)

assert isinstance(result, np.ndarray)
assert result.shape == (0, 2)
assert result.size == 0


def test_pop_empty_uarrays():
tsb = TimeSeriesBuffer(maxlen=maxlen, return_type="uarrays")
t, v = tsb.show(n_samples=n_samples)

assert isinstance(t, np.ndarray)
assert isinstance(v, np.ndarray)
assert t.size == 0
assert v.size == 0
2 changes: 1 addition & 1 deletion time_series_buffer/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from .buffer import TimeSeriesBuffer

__version__ = "v0.1.2-beta"
__version__ = "v0.1.3-beta"
22 changes: 16 additions & 6 deletions time_series_buffer/buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,14 +229,24 @@ def _return_converter(self, samples):
return samples

else:
data = np.array(samples)
t = data[:, 0]
ut = data[:, 1]
v = data[:, 2]
uv = data[:, 3]
# handle empty buffer
if len(samples) == 0:
data = np.empty((0, 4))
t = np.empty((0))
ut = np.empty((0))
v = np.empty((0))
uv = np.empty((0))

# handle non empty buffer
else:
data = np.array(samples)
t = data[:, 0]
ut = data[:, 1]
v = data[:, 2]
uv = data[:, 3]

if self.return_type == "array":
return np.vstack(data)
return data

elif self.return_type == "arrays":
return t, ut, v, uv
Expand Down

0 comments on commit 6e838d1

Please sign in to comment.