...

Source file src/github.com/doug-martin/goqu/v9/exp/cast_test.go

Documentation: github.com/doug-martin/goqu/v9/exp

     1  package exp_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/doug-martin/goqu/v9/exp"
     7  	"github.com/stretchr/testify/suite"
     8  )
     9  
    10  type castExpressionSuite struct {
    11  	suite.Suite
    12  	ce exp.CastExpression
    13  }
    14  
    15  func TestCastExpressionSuite(t *testing.T) {
    16  	suite.Run(t, &castExpressionSuite{
    17  		ce: exp.NewCastExpression(exp.NewIdentifierExpression("", "", "a"), "TEXT"),
    18  	})
    19  }
    20  
    21  func (ces *castExpressionSuite) TestClone() {
    22  	ces.Equal(ces.ce, ces.ce.Clone())
    23  }
    24  
    25  func (ces *castExpressionSuite) TestExpression() {
    26  	ces.Equal(ces.ce, ces.ce.Expression())
    27  }
    28  
    29  func (ces *castExpressionSuite) TestCasted() {
    30  	ces.Equal(exp.NewIdentifierExpression("", "", "a"), ces.ce.Casted())
    31  }
    32  
    33  func (ces *castExpressionSuite) TestType() {
    34  	ces.Equal(exp.NewLiteralExpression("TEXT"), ces.ce.Type())
    35  }
    36  
    37  func (ces *castExpressionSuite) TestAllOthers() {
    38  	ce := ces.ce
    39  	rv := exp.NewRangeVal(1, 2)
    40  	pattern := "cast like%"
    41  	inVals := []interface{}{1, 2}
    42  	testCases := []struct {
    43  		Ex       exp.Expression
    44  		Expected exp.Expression
    45  	}{
    46  		{Ex: ce.As("a"), Expected: exp.NewAliasExpression(ce, "a")},
    47  		{Ex: ce.Eq(1), Expected: exp.NewBooleanExpression(exp.EqOp, ce, 1)},
    48  		{Ex: ce.Neq(1), Expected: exp.NewBooleanExpression(exp.NeqOp, ce, 1)},
    49  		{Ex: ce.Gt(1), Expected: exp.NewBooleanExpression(exp.GtOp, ce, 1)},
    50  		{Ex: ce.Gte(1), Expected: exp.NewBooleanExpression(exp.GteOp, ce, 1)},
    51  		{Ex: ce.Lt(1), Expected: exp.NewBooleanExpression(exp.LtOp, ce, 1)},
    52  		{Ex: ce.Lte(1), Expected: exp.NewBooleanExpression(exp.LteOp, ce, 1)},
    53  		{Ex: ce.Asc(), Expected: exp.NewOrderedExpression(ce, exp.AscDir, exp.NoNullsSortType)},
    54  		{Ex: ce.Desc(), Expected: exp.NewOrderedExpression(ce, exp.DescSortDir, exp.NoNullsSortType)},
    55  		{Ex: ce.Between(rv), Expected: exp.NewRangeExpression(exp.BetweenOp, ce, rv)},
    56  		{Ex: ce.NotBetween(rv), Expected: exp.NewRangeExpression(exp.NotBetweenOp, ce, rv)},
    57  		{Ex: ce.Like(pattern), Expected: exp.NewBooleanExpression(exp.LikeOp, ce, pattern)},
    58  		{Ex: ce.NotLike(pattern), Expected: exp.NewBooleanExpression(exp.NotLikeOp, ce, pattern)},
    59  		{Ex: ce.ILike(pattern), Expected: exp.NewBooleanExpression(exp.ILikeOp, ce, pattern)},
    60  		{Ex: ce.NotILike(pattern), Expected: exp.NewBooleanExpression(exp.NotILikeOp, ce, pattern)},
    61  		{Ex: ce.RegexpLike(pattern), Expected: exp.NewBooleanExpression(exp.RegexpLikeOp, ce, pattern)},
    62  		{Ex: ce.RegexpNotLike(pattern), Expected: exp.NewBooleanExpression(exp.RegexpNotLikeOp, ce, pattern)},
    63  		{Ex: ce.RegexpILike(pattern), Expected: exp.NewBooleanExpression(exp.RegexpILikeOp, ce, pattern)},
    64  		{Ex: ce.RegexpNotILike(pattern), Expected: exp.NewBooleanExpression(exp.RegexpNotILikeOp, ce, pattern)},
    65  		{Ex: ce.In(inVals), Expected: exp.NewBooleanExpression(exp.InOp, ce, inVals)},
    66  		{Ex: ce.NotIn(inVals), Expected: exp.NewBooleanExpression(exp.NotInOp, ce, inVals)},
    67  		{Ex: ce.Is(true), Expected: exp.NewBooleanExpression(exp.IsOp, ce, true)},
    68  		{Ex: ce.IsNot(true), Expected: exp.NewBooleanExpression(exp.IsNotOp, ce, true)},
    69  		{Ex: ce.IsNull(), Expected: exp.NewBooleanExpression(exp.IsOp, ce, nil)},
    70  		{Ex: ce.IsNotNull(), Expected: exp.NewBooleanExpression(exp.IsNotOp, ce, nil)},
    71  		{Ex: ce.IsTrue(), Expected: exp.NewBooleanExpression(exp.IsOp, ce, true)},
    72  		{Ex: ce.IsNotTrue(), Expected: exp.NewBooleanExpression(exp.IsNotOp, ce, true)},
    73  		{Ex: ce.IsFalse(), Expected: exp.NewBooleanExpression(exp.IsOp, ce, false)},
    74  		{Ex: ce.IsNotFalse(), Expected: exp.NewBooleanExpression(exp.IsNotOp, ce, false)},
    75  		{Ex: ce.Distinct(), Expected: exp.NewSQLFunctionExpression("DISTINCT", ce)},
    76  	}
    77  
    78  	for _, tc := range testCases {
    79  		ces.Equal(tc.Expected, tc.Ex)
    80  	}
    81  }
    82  

View as plain text