content: 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"
  