From 160aea349c787a747b9bbb4af7b1980bbf70454d Mon Sep 17 00:00:00 2001 From: Yevgeny Pats <16490766+yevgenypats@users.noreply.github.com> Date: Tue, 7 Mar 2023 22:00:23 +0200 Subject: [PATCH] more testing --- go/arrow/csv/reader_test.go | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/go/arrow/csv/reader_test.go b/go/arrow/csv/reader_test.go index 9893dada87451..710fd4d3784a1 100644 --- a/go/arrow/csv/reader_test.go +++ b/go/arrow/csv/reader_test.go @@ -163,6 +163,61 @@ func Example_withChunk() { // rec[3]["str"]: ["str-9"] } +func TestCSVReadInvalidFields(t *testing.T) { + tests := []struct { + Name string + Data string + Fields []arrow.Field + ExpectedError bool + }{ + { + Name: "ValidListInt64", + Data: "{}", + Fields: []arrow.Field{ + {Name: "list(i64)", Type: arrow.ListOf(arrow.PrimitiveTypes.Int64)}, + }, + ExpectedError: false, + }, + { + Name: "InvalidListInt64T1", + Data: "{", + Fields: []arrow.Field{ + {Name: "list(i64)", Type: arrow.ListOf(arrow.PrimitiveTypes.Int64)}, + }, + ExpectedError: true, + }, + { + Name: "InvalidListInt64T2", + Data: "}", + Fields: []arrow.Field{ + {Name: "list(i64)", Type: arrow.ListOf(arrow.PrimitiveTypes.Int64)}, + }, + ExpectedError: true, + }, + } + for _, tc := range tests { + tc := tc + t.Run(tc.Name, func(t *testing.T) { + f := bytes.NewBufferString(tc.Data) + schema := arrow.NewSchema(tc.Fields, nil) + + r := csv.NewReader( + f, schema, + csv.WithComma(','), + ) + defer r.Release() + for r.Next() {} + parseErr := r.Err() + if tc.ExpectedError && parseErr == nil { + t.Fatal("Expected error, but none found") + } + if !tc.ExpectedError && parseErr != nil { + t.Fatalf("Not expecting error, but got %v", parseErr) + } + }) + } +} + func TestCSVReaderParseError(t *testing.T) { f := bytes.NewBufferString(`## a simple set of data: int64;float64;string 0;0;str-0