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