Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
more tests
  • Loading branch information
sungwy committed Aug 21, 2024
commit 743f16128f63de4c69a7e742488ec14cbe44738b
50 changes: 46 additions & 4 deletions bindings/python/tests/test_transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,27 @@
# specific language governing permissions and limitations
# under the License.

from pyiceberg_core import ArrowArrayTransform
from datetime import date, datetime

import pytest
import pyarrow as pa
import pytest
from pyiceberg_core import ArrowArrayTransform


def test_bucket_pyarrow_array():
def test_identity_transform():
arr = pa.array([1, 2])
result = ArrowArrayTransform.identity(arr)
assert result == arr


def test_bucket_transform():
arr = pa.array([1, 2])
result = ArrowArrayTransform.bucket(arr, 10)
expected = pa.array([6, 2], type=pa.int32())
assert result == expected


def test_bucket_pyarrow_array_list_type_fails():
def test_bucket_transform_fails_for_list_type_input():
arr = pa.array([[1, 2], [3, 4]])
with pytest.raises(
ValueError,
Expand All @@ -47,3 +54,38 @@ def test_bucket_chunked_array():
[pa.array([6, 2], type=pa.int32()), pa.array([5, 0], type=pa.int32())]
)
assert pa.chunked_array(result_chunks).equals(expected)


def test_year_transform():
arr = pa.array([date(1970, 1, 1), date(2000, 1, 1)])
result = ArrowArrayTransform.year(arr)
expected = pa.array([0, 30], type=pa.int32())
assert result == expected


def test_month_transform():
arr = pa.array([date(1970, 1, 1), date(2000, 4, 1)])
result = ArrowArrayTransform.month(arr)
expected = pa.array([0, 30 * 12 + 3], type=pa.int32())
assert result == expected


def test_day_transform():
arr = pa.array([date(1970, 1, 1), date(2000, 4, 1)])
result = ArrowArrayTransform.day(arr)
expected = pa.array([0, 11048], type=pa.int32())
assert result == expected


def test_hour_transform():
arr = pa.array([datetime(1970, 1, 1, 19, 1, 23), datetime(2000, 3, 1, 12, 1, 23)])
result = ArrowArrayTransform.hour(arr)
expected = pa.array([19, 264420], type=pa.int32())
assert result == expected


def test_truncate_transform():
arr = pa.array(["this is a long string", "hi my name is sung"])
result = ArrowArrayTransform.truncate(arr, 5)
expected = pa.array(["this ", "hi my"])
assert result == expected