github.com/snowflakedb/gosnowflake@v1.9.0/datatype_test.go (about) 1 // Copyright (c) 2017-2023 Snowflake Computing Inc. All rights reserved. 2 3 package gosnowflake 4 5 import ( 6 "database/sql/driver" 7 "fmt" 8 "testing" 9 ) 10 11 type tcDataTypeMode struct { 12 tp driver.Value 13 tmode snowflakeType 14 err error 15 } 16 17 func TestDataTypeMode(t *testing.T) { 18 var testcases = []tcDataTypeMode{ 19 {tp: DataTypeTimestampLtz, tmode: timestampLtzType, err: nil}, 20 {tp: DataTypeTimestampNtz, tmode: timestampNtzType, err: nil}, 21 {tp: DataTypeTimestampTz, tmode: timestampTzType, err: nil}, 22 {tp: DataTypeDate, tmode: dateType, err: nil}, 23 {tp: DataTypeTime, tmode: timeType, err: nil}, 24 {tp: DataTypeBinary, tmode: binaryType, err: nil}, 25 {tp: DataTypeFixed, tmode: fixedType, 26 err: fmt.Errorf(errMsgInvalidByteArray, DataTypeFixed)}, 27 {tp: DataTypeReal, tmode: realType, 28 err: fmt.Errorf(errMsgInvalidByteArray, DataTypeFixed)}, 29 {tp: 123, tmode: nullType, 30 err: fmt.Errorf(errMsgInvalidByteArray, 123)}, 31 } 32 for _, ts := range testcases { 33 t.Run(fmt.Sprintf("%v_%v", ts.tp, ts.tmode), func(t *testing.T) { 34 tmode, err := dataTypeMode(ts.tp) 35 if ts.err == nil { 36 if err != nil { 37 t.Errorf("failed to get datatype mode: %v", err) 38 } 39 if tmode != ts.tmode { 40 t.Errorf("wrong data type: %v", tmode) 41 } 42 } else { 43 if err == nil { 44 t.Errorf("should raise an error: %v", ts.err) 45 } 46 } 47 }) 48 } 49 } 50 51 func TestPopulateSnowflakeParameter(t *testing.T) { 52 columns := []string{"key", "value", "default", "level", "description", "set_by_user", "set_in_job", "set_on", "set_by_thread_id", "set_by_thread_name", "set_by_class", "parameter_comment", "type", "is_expired", "expires_at", "set_by_controlling_parameter", "activate_version", "partial_rollout"} 53 p := SnowflakeParameter{} 54 cols := make([]interface{}, len(columns)) 55 for i := 0; i < len(columns); i++ { 56 cols[i] = populateSnowflakeParameter(columns[i], &p) 57 } 58 for i := 0; i < len(cols); i++ { 59 if cols[i] == nil { 60 t.Fatal("failed to populate parameter") 61 } 62 } 63 }