...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package parquet_test
18
19 import (
20 "bytes"
21 "testing"
22
23 "github.com/apache/arrow/go/v15/arrow/memory"
24 "github.com/apache/arrow/go/v15/parquet"
25 "github.com/apache/arrow/go/v15/parquet/compress"
26 "github.com/stretchr/testify/assert"
27 )
28
29 func TestReaderPropBasics(t *testing.T) {
30 props := parquet.NewReaderProperties(nil)
31 assert.Equal(t, parquet.DefaultBufSize, props.BufferSize)
32 assert.False(t, props.BufferedStreamEnabled)
33 }
34
35 func TestWriterPropBasics(t *testing.T) {
36 props := parquet.NewWriterProperties()
37
38 assert.Equal(t, parquet.DefaultDataPageSize, props.DataPageSize())
39 assert.Equal(t, parquet.DefaultDictionaryPageSizeLimit, props.DictionaryPageSizeLimit())
40 assert.Equal(t, parquet.V2_LATEST, props.Version())
41 assert.Equal(t, parquet.DataPageV1, props.DataPageVersion())
42 }
43
44 func TestWriterPropAdvanced(t *testing.T) {
45 props := parquet.NewWriterProperties(
46 parquet.WithCompressionFor("gzip", compress.Codecs.Gzip),
47 parquet.WithCompressionFor("zstd", compress.Codecs.Zstd),
48 parquet.WithCompression(compress.Codecs.Snappy),
49 parquet.WithEncoding(parquet.Encodings.DeltaBinaryPacked),
50 parquet.WithEncodingFor("delta-length", parquet.Encodings.DeltaLengthByteArray),
51 parquet.WithDataPageVersion(parquet.DataPageV2),
52 parquet.WithRootName("test2"),
53 parquet.WithRootRepetition(parquet.Repetitions.Required))
54
55 assert.Equal(t, compress.Codecs.Gzip, props.CompressionPath(parquet.ColumnPathFromString("gzip")))
56 assert.Equal(t, compress.Codecs.Zstd, props.CompressionFor("zstd"))
57 assert.Equal(t, compress.Codecs.Snappy, props.CompressionPath(parquet.ColumnPathFromString("delta-length")))
58 assert.Equal(t, parquet.Encodings.DeltaBinaryPacked, props.EncodingFor("gzip"))
59 assert.Equal(t, parquet.Encodings.DeltaLengthByteArray, props.EncodingPath(parquet.ColumnPathFromString("delta-length")))
60 assert.Equal(t, parquet.DataPageV2, props.DataPageVersion())
61 assert.Equal(t, "test2", props.RootName())
62 assert.Equal(t, parquet.Repetitions.Required, props.RootRepetition())
63 }
64
65 func TestReaderPropsGetStreamInsufficient(t *testing.T) {
66 data := "shorter than expected"
67 buf := memory.NewBufferBytes([]byte(data))
68 rdr := bytes.NewReader(buf.Bytes())
69
70 props := parquet.NewReaderProperties(nil)
71 _, err := props.GetStream(rdr, 12, 15)
72 assert.Error(t, err)
73 }
74
View as plain text