code: def test_arrow_concat_basic():
      # Test two basic tables.
      t1 = pa.table({"a": [1, 2], "b": [5, 6]})
      t2 = pa.table({"a": [3, 4], "b": [7, 8]})
      ts = [t1, t2]
      out = concat(ts)
      # Check length.
      assert len(out) == 4
      # Check schema.
      assert out.column_names == ["a", "b"]
      assert out.schema.types == [pa.int64(), pa.int64()]
      # Confirm that concatenation is zero-copy (i.e. it didn't trigger chunk
      # consolidation).
      assert out["a"].num_chunks == 2
      assert out["b"].num_chunks == 2
      # Check content.
      assert out["a"].to_pylist() == [1, 2, 3, 4]
      assert out["b"].to_pylist() == [5, 6, 7, 8]
      # Check equivalence.
      expected = pa.concat_tables(ts)
      assert out == expected
  
imports: import os
  import numpy
  import pandas
  import pyarrow
  import pytest
  import ray
  from ray.data._internal.arrow_ops.transform_pyarrow import concat, unify_schemas
  from ray.data.block import BlockAccessor
  from ray.data.extensions import ArrowTensorArray, ArrowTensorType, ArrowVariableShapedTensorType
label_desc: Use image node_id 3 for calling a global function with example usage: test_arrow_concat_basic() without return types