code: def test_copy_normal_buffer_if_needed():
      bytes_ = b"abcd"
      buf = pa.py_buffer(bytes_)
      byte_width = 1
      uncopied_buf = _copy_normal_buffer_if_needed(
          buf, byte_width, 0, len(bytes_)
      )
      assert uncopied_buf.address == buf.address
      assert uncopied_buf.size == len(bytes_)
      for offset in range(1, len(bytes_) - 1):
          for length in range(1, len(bytes_) - offset):
              copied_buf = _copy_normal_buffer_if_needed(
                  buf, byte_width, offset, length
              )
              assert copied_buf.address != buf.address
              assert copied_buf.size == length
  
imports: import logging
  import os
  import sys
  from unittest import mock
  import numpy
  import pyarrow
  import pyarrow.parquet
  import pytest
  from packaging.version import parse
  from pytest_lazyfixture import lazy_fixture
  import ray
  import ray.cloudpickle
  from ray._private.arrow_serialization import _align_bit_offset, _bytes_for_bits, _copy_bitpacked_buffer_if_needed, _copy_buffer_if_needed, _copy_normal_buffer_if_needed, _copy_offsets_buffer_if_needed
  from ray._private.utils import _get_pyarrow_version
  from ray.data.extensions.tensor_extension import ArrowTensorArray, ArrowVariableShapedTensorArray
  from ray.tests.conftest import *
label_desc: Use image node_id 5 for calling a global function with example usage: test_copy_normal_buffer_if_needed() without return types