From 320480b74b3d95cf72b8146e580909d5354d8140 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Piotr=20Ma=C5=9Blanka?= <piotr.maslanka@henrietta.com.pl>
Date: Tue, 6 Jul 2021 19:29:38 +0200
Subject: [PATCH] tests

---
 tempsdb/varlen.pyx   | 16 +++++++++++-----
 tests/test_varlen.py |  2 ++
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/tempsdb/varlen.pyx b/tempsdb/varlen.pyx
index b1df106..6ca068a 100644
--- a/tempsdb/varlen.pyx
+++ b/tempsdb/varlen.pyx
@@ -85,6 +85,7 @@ cdef class VarlenEntry:
                 return False
 
         cdef bytes b = self.slice(self.len-len_v, self.len)
+        logger.warning('comparing %s against %s', repr(b), repr(v))
         return b == v
 
     def __gt__(self, other) -> bool:
@@ -196,19 +197,24 @@ cdef class VarlenEntry:
             bytes temp_data
             int offset = self.parent.size_field
 
-        while write_pointer < length and len(self.chunks) > segment:
+        while write_pointer < length:
             if chunk_len-start_reading_at >= + (length - write_pointer):
                 # We have all the data that we require
-                temp_data = chunk.get_slice_of_piece_at(self.item_no[segment],
-                                                        offset, offset+length-write_pointer)
+                try:
+                    temp_data = chunk.get_slice_of_piece_at(self.item_no[segment],
+                                                            offset, offset+length-write_pointer)
+                except IndexError:
+                    raise ValueError('Invalid indices')
                 assert len(temp_data) == length-write_pointer, 'invalid length'
                 b[write_pointer:length] = temp_data
                 return bytes(b)
 
             if chunk_len > length - write_pointer:
                 chunk_len = length - write_pointer
-
-            temp_data = chunk.get_slice_of_piece_at(self.item_no[segment], offset, offset+chunk_len)
+            try:
+                temp_data = chunk.get_slice_of_piece_at(self.item_no[segment], offset, offset+chunk_len)
+            except IndexError:
+                raise ValueError('Invalid indices')
             b[write_pointer:write_pointer+chunk_len] = temp_data
             write_pointer += chunk_len
             segment += 1
diff --git a/tests/test_varlen.py b/tests/test_varlen.py
index ace8d45..e0b98ad 100644
--- a/tests/test_varlen.py
+++ b/tests/test_varlen.py
@@ -29,6 +29,8 @@ class TestVarlen(unittest.TestCase):
         varlen.append(*series[0])
         varlen.append(*series[1])
 
+        self.assertEqual(varlen.last_entry_ts, 10)
+
         with varlen.iterate_range(0, 20) as iterator:
             ve = iterator.get_next()
             while ve is not None:
-- 
GitLab