Skip to content

Commit cb2270e

Browse files
authored
test(parquet): Add tests for uint32 to uint64 array widening (#723)
Tests for #721
1 parent 87f8cab commit cb2270e

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

parquet/read_test.go

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package parquet
2+
3+
import (
4+
"testing"
5+
6+
"github.com/apache/arrow-go/v18/arrow"
7+
"github.com/apache/arrow-go/v18/arrow/array"
8+
"github.com/apache/arrow-go/v18/arrow/memory"
9+
"github.com/stretchr/testify/require"
10+
)
11+
12+
func TestReverseTransformArray_Uint32ToUint64(t *testing.T) {
13+
builder := array.NewUint32Builder(memory.DefaultAllocator)
14+
defer builder.Release()
15+
16+
builder.Append(0)
17+
builder.Append(42)
18+
builder.AppendNull()
19+
builder.Append(4294967295) // max uint32
20+
21+
arr := builder.NewArray()
22+
defer arr.Release()
23+
24+
result := reverseTransformArray(arrow.PrimitiveTypes.Uint64, arr)
25+
defer result.Release()
26+
27+
require.Equal(t, arrow.PrimitiveTypes.Uint64, result.DataType())
28+
require.Equal(t, 4, result.Len())
29+
30+
u64 := result.(*array.Uint64)
31+
require.Equal(t, uint64(0), u64.Value(0))
32+
require.False(t, u64.IsNull(0))
33+
34+
require.Equal(t, uint64(42), u64.Value(1))
35+
require.False(t, u64.IsNull(1))
36+
37+
require.True(t, u64.IsNull(2))
38+
39+
require.Equal(t, uint64(4294967295), u64.Value(3))
40+
require.False(t, u64.IsNull(3))
41+
}
42+
43+
func TestReverseTransformArray_Uint32ToUint64_Empty(t *testing.T) {
44+
builder := array.NewUint32Builder(memory.DefaultAllocator)
45+
defer builder.Release()
46+
47+
arr := builder.NewArray()
48+
defer arr.Release()
49+
50+
result := reverseTransformArray(arrow.PrimitiveTypes.Uint64, arr)
51+
defer result.Release()
52+
53+
require.Equal(t, arrow.PrimitiveTypes.Uint64, result.DataType())
54+
require.Equal(t, 0, result.Len())
55+
}
56+
57+
func TestReverseTransformArray_Uint32ToUint64_ListOf(t *testing.T) {
58+
bldr := array.NewListBuilder(memory.DefaultAllocator, arrow.PrimitiveTypes.Uint32)
59+
defer bldr.Release()
60+
61+
vb := bldr.ValueBuilder().(*array.Uint32Builder)
62+
63+
bldr.Append(true)
64+
vb.Append(1)
65+
vb.Append(2)
66+
67+
bldr.Append(true)
68+
vb.Append(3)
69+
70+
bldr.AppendNull()
71+
72+
arr := bldr.NewArray()
73+
defer arr.Release()
74+
75+
targetDt := arrow.ListOf(arrow.PrimitiveTypes.Uint64)
76+
result := reverseTransformArray(targetDt, arr)
77+
defer result.Release()
78+
79+
require.True(t, arrow.TypeEqual(targetDt, result.DataType()))
80+
require.Equal(t, 3, result.Len())
81+
82+
listArr := result.(*array.List)
83+
require.False(t, listArr.IsNull(0))
84+
require.False(t, listArr.IsNull(1))
85+
require.True(t, listArr.IsNull(2))
86+
87+
values := listArr.ListValues().(*array.Uint64)
88+
require.Equal(t, uint64(1), values.Value(0))
89+
require.Equal(t, uint64(2), values.Value(1))
90+
require.Equal(t, uint64(3), values.Value(2))
91+
}

0 commit comments

Comments
 (0)