From 5d5353dd1cf02e0268c887484d1cbdda06ffc48a Mon Sep 17 00:00:00 2001
From: Michele Nottoli <michele.nottoli@gmail.com>
Date: Fri, 20 Oct 2023 16:42:00 +0200
Subject: [PATCH] Updated.

---
 grext/buffer.py      |  2 +-
 tests/test_buffer.py | 19 ++++++++++++++++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/grext/buffer.py b/grext/buffer.py
index 64c937b..bf9d8cf 100644
--- a/grext/buffer.py
+++ b/grext/buffer.py
@@ -32,4 +32,4 @@ class CircularBuffer:
             raise ValueError("`m` is larger than the stored matrices.")
 
         start_idx = (self.index - m) % self.n
-        return [self.buffer[i] for i in range(start_idx, start_idx + m)]
+        return [self.buffer[(start_idx + i) % self.n] for i in range(m)]
diff --git a/tests/test_buffer.py b/tests/test_buffer.py
index e2d31a9..659c5bd 100644
--- a/tests/test_buffer.py
+++ b/tests/test_buffer.py
@@ -10,7 +10,7 @@ def test_buffer():
 
     shape = (5, 5)
     buffer_size = 10
-    nframes = 100
+    nframes = 20
 
     buffer = CircularBuffer(buffer_size, shape)
 
@@ -31,6 +31,11 @@ def test_buffer():
 
     assert len(buffer.get(0)) == 0
 
+    for m in [buffer_size//2, buffer_size//2-1, buffer_size//2-2]:
+        matrices = buffer.get(m)
+        for value, matrix in zip(list(range(buffer_size//2 - m, buffer_size//2)), matrices):
+            assert matrix[0,0] == value
+
     # finish the loading
     for i in range(buffer_size // 2, nframes):
         matrix = np.full(shape, i)
@@ -51,3 +56,15 @@ def test_buffer():
         matrices = buffer.get(m)
         for value, matrix in zip(list(range(nframes - m, nframes)), matrices):
             assert matrix[0,0] == value
+
+def test_buffer_manual():
+    shape = (5, 5)
+    buffer = CircularBuffer(6, shape)
+
+    for i in range(6):
+        matrix = np.full(shape, i)
+        buffer.push(matrix)
+
+    matrices = buffer.get(6)
+    for matrix, value in zip(matrices, range(6)):
+        assert matrix[0, 0] == value
-- 
GitLab