Skip to content

Commit 6c2c695

Browse files
committed
Added test for XBuffer.free for different sizes
1 parent aa61e78 commit 6c2c695

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

tests/test_buffer.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# ########################################### #
55

66
import numpy as np
7+
import pytest
78

89
import xobjects as xo
910
from xobjects.test_helpers import for_all_test_contexts, requires_context
@@ -94,6 +95,35 @@ def test_free_simple(test_context):
9495
ch.free_string(offset)
9596
ch.check()
9697

98+
@for_all_test_contexts
99+
def test_free(test_context):
100+
class CheckFree(xo.Struct):
101+
a = xo.Float64
102+
ch = CheckFree(a=5, _context=test_context)
103+
assert ch._buffer.capacity == 8
104+
assert ch._buffer.chunks == []
105+
with pytest.raises(ValueError, match="Cannot free outside of buffer"):
106+
ch._buffer.free(-2, 8)
107+
with pytest.raises(ValueError, match="Cannot free outside of buffer"):
108+
ch._buffer.free(0, 10)
109+
with pytest.raises(ValueError, match="Cannot free outside of buffer"):
110+
ch._buffer.free(7,2)
111+
ch._buffer.free(0,4)
112+
assert len(ch._buffer.chunks) == 1
113+
assert ch._buffer.chunks[0].start == 0
114+
assert ch._buffer.chunks[0].end == 4
115+
ch._buffer.free(0,4) # Does nothing
116+
ch._buffer.free(2,4) # Increases free chunk
117+
assert len(ch._buffer.chunks) == 1
118+
assert ch._buffer.chunks[0].start == 0
119+
assert ch._buffer.chunks[0].end == 6
120+
ch._buffer.free(7,1)
121+
assert len(ch._buffer.chunks) == 2
122+
assert ch._buffer.chunks[0].start == 0
123+
assert ch._buffer.chunks[0].end == 6
124+
assert ch._buffer.chunks[1].start == 7
125+
assert ch._buffer.chunks[1].end == 8
126+
97127

98128
@for_all_test_contexts
99129
def test_grow(test_context):

0 commit comments

Comments
 (0)