// 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) } } }