8th day of python challenges 111-117
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import pytest
|
||||
|
||||
from pandas.util._move import BadMove, move_into_mutable_buffer, stolenbuf
|
||||
|
||||
|
||||
def test_cannot_create_instance_of_stolen_buffer():
|
||||
# Stolen buffers need to be created through the smart constructor
|
||||
# "move_into_mutable_buffer," which has a bunch of checks in it.
|
||||
|
||||
msg = "cannot create 'pandas.util._move.stolenbuf' instances"
|
||||
with pytest.raises(TypeError, match=msg):
|
||||
stolenbuf()
|
||||
|
||||
|
||||
def test_more_than_one_ref():
|
||||
# Test case for when we try to use "move_into_mutable_buffer"
|
||||
# when the object being moved has other references.
|
||||
|
||||
b = b"testing"
|
||||
|
||||
with pytest.raises(BadMove, match="testing") as e:
|
||||
|
||||
def handle_success(type_, value, tb):
|
||||
assert value.args[0] is b
|
||||
return type(e).handle_success(e, type_, value, tb) # super
|
||||
|
||||
e.handle_success = handle_success
|
||||
move_into_mutable_buffer(b)
|
||||
|
||||
|
||||
def test_exactly_one_ref():
|
||||
# Test case for when the object being moved has exactly one reference.
|
||||
|
||||
b = b"testing"
|
||||
|
||||
# We need to pass an expression on the stack to ensure that there are
|
||||
# not extra references hanging around. We cannot rewrite this test as
|
||||
# buf = b[:-3]
|
||||
# as_stolen_buf = move_into_mutable_buffer(buf)
|
||||
# because then we would have more than one reference to buf.
|
||||
as_stolen_buf = move_into_mutable_buffer(b[:-3])
|
||||
|
||||
# Materialize as byte-array to show that it is mutable.
|
||||
assert bytearray(as_stolen_buf) == b"test"
|
||||
Reference in New Issue
Block a user