blob: b7bfc91e54f70bed5eb022db07a229dba9597e11 [file] [log] [blame]
// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package bigquery
import (
"testing"
"cloud.google.com/go/internal/testutil"
bq "google.golang.org/api/bigquery/v2"
)
func TestBQToStandardSQLDataType(t *testing.T) {
for _, test := range []struct {
in *bq.StandardSqlDataType
want *StandardSQLDataType
}{
{&bq.StandardSqlDataType{}, &StandardSQLDataType{}},
{
&bq.StandardSqlDataType{
TypeKind: "INT64",
},
&StandardSQLDataType{
TypeKind: "INT64",
},
},
{
&bq.StandardSqlDataType{
TypeKind: "ARRAY",
ArrayElementType: &bq.StandardSqlDataType{
TypeKind: "INT64",
},
},
&StandardSQLDataType{
TypeKind: "ARRAY",
ArrayElementType: &StandardSQLDataType{
TypeKind: "INT64",
},
},
},
} {
got, err := bqToStandardSQLDataType(test.in)
if err != nil {
t.Fatal(err)
}
if diff := testutil.Diff(got, test.want); diff != "" {
t.Errorf("%+v: -got, +want:\n%s", test.in, diff)
}
}
}
func TestBQToStandardSQLField(t *testing.T) {
for _, test := range []struct {
in *bq.StandardSqlField
want *StandardSQLField
}{
{&bq.StandardSqlField{}, &StandardSQLField{}},
{
&bq.StandardSqlField{
Name: "foo",
Type: &bq.StandardSqlDataType{
TypeKind: "NUMERIC",
},
},
&StandardSQLField{
Name: "foo",
Type: &StandardSQLDataType{
TypeKind: "NUMERIC",
},
},
},
} {
got, err := bqToStandardSQLField(test.in)
if err != nil {
t.Fatal(err)
}
if diff := testutil.Diff(got, test.want); diff != "" {
t.Errorf("%+v: -got, +want:\n%s", test.in, diff)
}
}
}
func TestBQToStandardSQLStructType(t *testing.T) {
for _, test := range []struct {
in *bq.StandardSqlStructType
want *StandardSQLStructType
}{
{&bq.StandardSqlStructType{}, &StandardSQLStructType{}},
{
&bq.StandardSqlStructType{
Fields: []*bq.StandardSqlField{
{
Name: "foo",
Type: &bq.StandardSqlDataType{
TypeKind: "STRING",
},
},
},
},
&StandardSQLStructType{
Fields: []*StandardSQLField{
{
Name: "foo",
Type: &StandardSQLDataType{
TypeKind: "STRING",
},
},
},
},
},
} {
got, err := bqToStandardSQLStructType(test.in)
if err != nil {
t.Fatal(err)
}
if diff := testutil.Diff(got, test.want); diff != "" {
t.Errorf("%+v: -got, +want:\n%s", test.in, diff)
}
}
}