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  }