diff --git a/sqlbuilder/bool_expression_test.go b/sqlbuilder/bool_expression_test.go index 9efbf9a..c86ba21 100644 --- a/sqlbuilder/bool_expression_test.go +++ b/sqlbuilder/bool_expression_test.go @@ -7,37 +7,37 @@ import ( ) func TestBoolExpressionEQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.EQ(table2ColBool)), "(table1.colBool = table2.colBool)") - assert.Equal(t, getTestSerialize(t, table1ColBool.AND(table2ColBool).EQ(table2ColBool)), "((table1.colBool AND table2.colBool) = table2.colBool)") + assertExpressionSerialize(t, table1ColBool.EQ(table2ColBool), "(table1.colBool = table2.colBool)") + assertExpressionSerialize(t, table1ColBool.EQ(Bool(true)), "(table1.colBool = $1)", true) } func TestBoolExpressionNOT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.NOT_EQ(table2ColBool)), "(table1.colBool != table2.colBool)") - assert.Equal(t, getTestSerialize(t, table1ColBool.AND(table2ColBool).NOT_EQ(table2ColBool)), "((table1.colBool AND table2.colBool) != table2.colBool)") + assertExpressionSerialize(t, table1ColBool.NOT_EQ(table2ColBool), "(table1.colBool != table2.colBool)") + assertExpressionSerialize(t, table1ColBool.NOT_EQ(Bool(true)), "(table1.colBool != $1)", true) } func TestBoolExpressionIS_TRUE(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.IS_TRUE()), "table1.colBool IS TRUE") + assertExpressionSerialize(t, table1ColBool.IS_TRUE(), "table1.colBool IS TRUE") } func TestBoolExpressionIS_NOT_TRUE(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.IS_NOT_TRUE()), "table1.colBool IS NOT TRUE") + assertExpressionSerialize(t, table1ColBool.IS_NOT_TRUE(), "table1.colBool IS NOT TRUE") } func TestBoolExpressionIS_FALSE(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.IS_FALSE()), "table1.colBool IS FALSE") + assertExpressionSerialize(t, table1ColBool.IS_FALSE(), "table1.colBool IS FALSE") } func TestBoolExpressionIS_NOT_FALSE(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.IS_NOT_FALSE()), "table1.colBool IS NOT FALSE") + assertExpressionSerialize(t, table1ColBool.IS_NOT_FALSE(), "table1.colBool IS NOT FALSE") } func TestBoolExpressionIS_UNKNOWN(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.IS_UNKNOWN()), "table1.colBool IS UNKNOWN") + assertExpressionSerialize(t, table1ColBool.IS_UNKNOWN(), "table1.colBool IS UNKNOWN") } func TestBoolExpressionIS_NOT_UNKNOWN(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColBool.IS_NOT_UNKNOWN()), "table1.colBool IS NOT UNKNOWN") + assertExpressionSerialize(t, table1ColBool.IS_NOT_UNKNOWN(), "table1.colBool IS NOT UNKNOWN") } func TestBinaryExpression(t *testing.T) { diff --git a/sqlbuilder/expression_test.go b/sqlbuilder/expression_test.go index f52f762..d440540 100644 --- a/sqlbuilder/expression_test.go +++ b/sqlbuilder/expression_test.go @@ -1,26 +1,25 @@ package sqlbuilder import ( - "gotest.tools/assert" "testing" ) func TestExpressionIS_NULL(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table2Col3.IS_NULL()), "table2.col3 IS NULL") - assert.Equal(t, getTestSerialize(t, table2Col3.ADD(table2Col3).IS_NULL()), "(table2.col3 + table2.col3) IS NULL") + assertExpressionSerialize(t, table2Col3.IS_NULL(), "table2.col3 IS NULL") + assertExpressionSerialize(t, table2Col3.ADD(table2Col3).IS_NULL(), "(table2.col3 + table2.col3) IS NULL") } func TestExpressionIS_NOT_NULL(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table2Col3.IS_NOT_NULL()), "table2.col3 IS NOT NULL") - assert.Equal(t, getTestSerialize(t, table2Col3.ADD(table2Col3).IS_NOT_NULL()), "(table2.col3 + table2.col3) IS NOT NULL") + assertExpressionSerialize(t, table2Col3.IS_NOT_NULL(), "table2.col3 IS NOT NULL") + assertExpressionSerialize(t, table2Col3.ADD(table2Col3).IS_NOT_NULL(), "(table2.col3 + table2.col3) IS NOT NULL") } func TestExpressionIS_DISTINCT_FROM(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table2Col3.IS_DISTINCT_FROM(table2Col4)), "(table2.col3 IS DISTINCT FROM table2.col4)") - assert.Equal(t, getTestSerialize(t, table2Col3.ADD(table2Col3).IS_DISTINCT_FROM(Int(23))), "((table2.col3 + table2.col3) IS DISTINCT FROM $1)") + assertExpressionSerialize(t, table2Col3.IS_DISTINCT_FROM(table2Col4), "(table2.col3 IS DISTINCT FROM table2.col4)") + assertExpressionSerialize(t, table2Col3.ADD(table2Col3).IS_DISTINCT_FROM(Int(23)), "((table2.col3 + table2.col3) IS DISTINCT FROM $1)", int64(23)) } func TestExpressionIS_NOT_DISTINCT_FROM(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table2Col3.IS_NOT_DISTINCT_FROM(table2Col4)), "(table2.col3 IS NOT DISTINCT FROM table2.col4)") - assert.Equal(t, getTestSerialize(t, table2Col3.ADD(table2Col3).IS_NOT_DISTINCT_FROM(Int(23))), "((table2.col3 + table2.col3) IS NOT DISTINCT FROM $1)") + assertExpressionSerialize(t, table2Col3.IS_NOT_DISTINCT_FROM(table2Col4), "(table2.col3 IS NOT DISTINCT FROM table2.col4)") + assertExpressionSerialize(t, table2Col3.ADD(table2Col3).IS_NOT_DISTINCT_FROM(Int(23)), "((table2.col3 + table2.col3) IS NOT DISTINCT FROM $1)", int64(23)) } diff --git a/sqlbuilder/float_expression_test.go b/sqlbuilder/float_expression_test.go index ae249f4..0cff39d 100644 --- a/sqlbuilder/float_expression_test.go +++ b/sqlbuilder/float_expression_test.go @@ -1,58 +1,65 @@ package sqlbuilder import ( - "gotest.tools/assert" "testing" ) -func TestFloatExpressionEQColumn(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.EQ(table2ColFloat)), "(table1.colFloat = table2.colFloat)") -} - -func TestFloatExpressionEQFloat(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.EQ(Float(11))), "(table1.colFloat = $1)") +func TestFloatExpressionEQ(t *testing.T) { + assertExpressionSerialize(t, table1ColFloat.EQ(table2ColFloat), "(table1.colFloat = table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.EQ(Float(2.11)), "(table1.colFloat = $1)", float64(2.11)) } func TestFloatExpressionNOT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.NOT_EQ(table2ColFloat)), "(table1.colFloat != table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.NOT_EQ(table2ColFloat), "(table1.colFloat != table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.NOT_EQ(Float(2.11)), "(table1.colFloat != $1)", float64(2.11)) } func TestFloatExpressionGT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.GT(table2ColFloat)), "(table1.colFloat > table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.GT(table2ColFloat), "(table1.colFloat > table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.GT(Float(2.11)), "(table1.colFloat > $1)", float64(2.11)) } func TestFloatExpressionGT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.GT_EQ(table2ColFloat)), "(table1.colFloat >= table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.GT_EQ(table2ColFloat), "(table1.colFloat >= table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.GT_EQ(Float(2.11)), "(table1.colFloat >= $1)", float64(2.11)) } func TestFloatExpressionLT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.LT(table2ColFloat)), "(table1.colFloat < table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.LT(table2ColFloat), "(table1.colFloat < table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.LT(Float(2.11)), "(table1.colFloat < $1)", float64(2.11)) } func TestFloatExpressionLT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.LT_EQ(table2ColFloat)), "(table1.colFloat <= table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.LT_EQ(table2ColFloat), "(table1.colFloat <= table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.LT_EQ(Float(2.11)), "(table1.colFloat <= $1)", float64(2.11)) } func TestFloatExpressionADD(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.ADD(table2ColFloat)), "(table1.colFloat + table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.ADD(table2ColFloat), "(table1.colFloat + table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.ADD(Float(2.11)), "(table1.colFloat + $1)", float64(2.11)) } func TestFloatExpressionSUB(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.SUB(table2ColFloat)), "(table1.colFloat - table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.SUB(table2ColFloat), "(table1.colFloat - table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.SUB(Float(2.11)), "(table1.colFloat - $1)", float64(2.11)) } func TestFloatExpressionMUL(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.MUL(table2ColFloat)), "(table1.colFloat * table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.MUL(table2ColFloat), "(table1.colFloat * table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.MUL(Float(2.11)), "(table1.colFloat * $1)", float64(2.11)) } func TestFloatExpressionDIV(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.DIV(table2ColFloat)), "(table1.colFloat / table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.DIV(table2ColFloat), "(table1.colFloat / table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.DIV(Float(2.11)), "(table1.colFloat / $1)", float64(2.11)) } func TestFloatExpressionMOD(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.MOD(table2ColFloat)), "(table1.colFloat % table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.MOD(table2ColFloat), "(table1.colFloat % table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.MOD(Float(2.11)), "(table1.colFloat % $1)", float64(2.11)) } -func TestFloatExpressionEXP(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColFloat.POW(table2ColFloat)), "(table1.colFloat ^ table2.colFloat)") +func TestFloatExpressionPOW(t *testing.T) { + assertExpressionSerialize(t, table1ColFloat.POW(table2ColFloat), "(table1.colFloat ^ table2.colFloat)") + assertExpressionSerialize(t, table1ColFloat.POW(Float(2.11)), "(table1.colFloat ^ $1)", float64(2.11)) } diff --git a/sqlbuilder/func_expression_test.go b/sqlbuilder/func_expression_test.go index 0e92592..5f7c553 100644 --- a/sqlbuilder/func_expression_test.go +++ b/sqlbuilder/func_expression_test.go @@ -7,115 +7,115 @@ import ( func TestFuncABS(t *testing.T) { t.Run("float", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, ABSf(table1ColFloat)), "ABS(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, ABSf(Float(11.2222))), "ABS($1)") + assertExpressionSerialize(t, ABSf(table1ColFloat), "ABS(table1.colFloat)") + assertExpressionSerialize(t, ABSf(Float(11.2222)), "ABS($1)", float64(11.2222)) }) t.Run("integer", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, ABSi(table1ColInt)), "ABS(table1.colInt)") - assert.Equal(t, getTestSerialize(t, ABSi(Int(11))), "ABS($1)") + assertExpressionSerialize(t, ABSi(table1ColInt), "ABS(table1.colInt)") + assertExpressionSerialize(t, ABSi(Int(11)), "ABS($1)", int64(11)) }) } func TestFuncSQRT(t *testing.T) { t.Run("float", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, SQRTf(table1ColFloat)), "SQRT(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, SQRTf(Float(11.2222))), "SQRT($1)") + assertExpressionSerialize(t, SQRTf(table1ColFloat), "SQRT(table1.colFloat)") + assertExpressionSerialize(t, SQRTf(Float(11.2222)), "SQRT($1)", float64(11.2222)) }) t.Run("integer", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, SQRTi(table1ColInt)), "SQRT(table1.colInt)") - assert.Equal(t, getTestSerialize(t, SQRTi(Int(11))), "SQRT($1)") + assertExpressionSerialize(t, SQRTi(table1ColInt), "SQRT(table1.colInt)") + assertExpressionSerialize(t, SQRTi(Int(11)), "SQRT($1)", int64(11)) }) } func TestFuncCBRT(t *testing.T) { t.Run("float", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, CBRTf(table1ColFloat)), "CBRT(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, CBRTf(Float(11.2222))), "CBRT($1)") + assertExpressionSerialize(t, CBRTf(table1ColFloat), "CBRT(table1.colFloat)") + assertExpressionSerialize(t, CBRTf(Float(11.2222)), "CBRT($1)", float64(11.2222)) }) t.Run("integer", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, CBRTi(table1ColInt)), "CBRT(table1.colInt)") - assert.Equal(t, getTestSerialize(t, CBRTi(Int(11))), "CBRT($1)") + assertExpressionSerialize(t, CBRTi(table1ColInt), "CBRT(table1.colInt)") + assertExpressionSerialize(t, CBRTi(Int(11)), "CBRT($1)", int64(11)) }) } func TestFuncMAX(t *testing.T) { t.Run("float", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, MAXf(table1ColFloat)), "MAX(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, MAXf(Float(11.2222))), "MAX($1)") + assertExpressionSerialize(t, MAXf(table1ColFloat), "MAX(table1.colFloat)") + assertExpressionSerialize(t, MAXf(Float(11.2222)), "MAX($1)", float64(11.2222)) }) t.Run("integer", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, MAXi(table1ColInt)), "MAX(table1.colInt)") - assert.Equal(t, getTestSerialize(t, MAXi(Int(11))), "MAX($1)") + assertExpressionSerialize(t, MAXi(table1ColInt), "MAX(table1.colInt)") + assertExpressionSerialize(t, MAXi(Int(11)), "MAX($1)", int64(11)) }) } func TestFuncSUM(t *testing.T) { t.Run("float", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, SUMf(table1ColFloat)), "SUM(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, SUMf(Float(11.2222))), "SUM($1)") + assertExpressionSerialize(t, SUMf(table1ColFloat), "SUM(table1.colFloat)") + assertExpressionSerialize(t, SUMf(Float(11.2222)), "SUM($1)", float64(11.2222)) }) t.Run("integer", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, SUMi(table1ColInt)), "SUM(table1.colInt)") - assert.Equal(t, getTestSerialize(t, SUMi(Int(11))), "SUM($1)") + assertExpressionSerialize(t, SUMi(table1ColInt), "SUM(table1.colInt)") + assertExpressionSerialize(t, SUMi(Int(11)), "SUM($1)", int64(11)) }) } func TestFuncCOUNT(t *testing.T) { t.Run("float", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, COUNTf(table1ColFloat)), "COUNT(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, COUNTf(Float(11.2222))), "COUNT($1)") + assertExpressionSerialize(t, COUNTf(table1ColFloat), "COUNT(table1.colFloat)") + assertExpressionSerialize(t, COUNTf(Float(11.2222)), "COUNT($1)", float64(11.2222)) }) t.Run("integer", func(t *testing.T) { - assert.Equal(t, getTestSerialize(t, COUNTi(table1ColInt)), "COUNT(table1.colInt)") - assert.Equal(t, getTestSerialize(t, COUNTi(Int(11))), "COUNT($1)") + assertExpressionSerialize(t, COUNTi(table1ColInt), "COUNT(table1.colInt)") + assertExpressionSerialize(t, COUNTi(Int(11)), "COUNT($1)", int64(11)) }) } func TestFuncCEIL(t *testing.T) { - assert.Equal(t, getTestSerialize(t, CEIL(table1ColFloat)), "CEIL(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, CEIL(Float(11.2222))), "CEIL($1)") + assertExpressionSerialize(t, CEIL(table1ColFloat), "CEIL(table1.colFloat)") + assertExpressionSerialize(t, CEIL(Float(11.2222)), "CEIL($1)", float64(11.2222)) } func TestFuncFLOOR(t *testing.T) { - assert.Equal(t, getTestSerialize(t, FLOOR(table1ColFloat)), "FLOOR(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, FLOOR(Float(11.2222))), "FLOOR($1)") + assertExpressionSerialize(t, FLOOR(table1ColFloat), "FLOOR(table1.colFloat)") + assertExpressionSerialize(t, FLOOR(Float(11.2222)), "FLOOR($1)", float64(11.2222)) } func TestFuncROUND(t *testing.T) { - assert.Equal(t, getTestSerialize(t, ROUND(table1ColFloat)), "ROUND(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, ROUND(Float(11.2222))), "ROUND($1)") + assertExpressionSerialize(t, ROUND(table1ColFloat), "ROUND(table1.colFloat)") + assertExpressionSerialize(t, ROUND(Float(11.2222)), "ROUND($1)", float64(11.2222)) - assert.Equal(t, getTestSerialize(t, ROUND(table1ColFloat, Int(2))), "ROUND(table1.colFloat, $1)") - assert.Equal(t, getTestSerialize(t, ROUND(Float(11.2222), Int(1))), "ROUND($1, $2)") + assertExpressionSerialize(t, ROUND(table1ColFloat, Int(2)), "ROUND(table1.colFloat, $1)", int64(2)) + assertExpressionSerialize(t, ROUND(Float(11.2222), Int(1)), "ROUND($1, $2)", float64(11.2222), int64(1)) } func TestFuncSIGN(t *testing.T) { - assert.Equal(t, getTestSerialize(t, SIGN(table1ColFloat)), "SIGN(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, SIGN(Float(11.2222))), "SIGN($1)") + assertExpressionSerialize(t, SIGN(table1ColFloat), "SIGN(table1.colFloat)") + assertExpressionSerialize(t, SIGN(Float(11.2222)), "SIGN($1)", float64(11.2222)) } func TestFuncTRUNC(t *testing.T) { - assert.Equal(t, getTestSerialize(t, TRUNC(table1ColFloat)), "TRUNC(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, TRUNC(Float(11.2222))), "TRUNC($1)") + assertExpressionSerialize(t, TRUNC(table1ColFloat), "TRUNC(table1.colFloat)") + assertExpressionSerialize(t, TRUNC(Float(11.2222)), "TRUNC($1)", float64(11.2222)) - assert.Equal(t, getTestSerialize(t, TRUNC(table1ColFloat, Int(2))), "TRUNC(table1.colFloat, $1)") - assert.Equal(t, getTestSerialize(t, TRUNC(Float(11.2222), Int(1))), "TRUNC($1, $2)") + assertExpressionSerialize(t, TRUNC(table1ColFloat, Int(2)), "TRUNC(table1.colFloat, $1)", int64(2)) + assertExpressionSerialize(t, TRUNC(Float(11.2222), Int(1)), "TRUNC($1, $2)", float64(11.2222), int64(1)) } func TestFuncLN(t *testing.T) { - assert.Equal(t, getTestSerialize(t, LN(table1ColFloat)), "LN(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, LN(Float(11.2222))), "LN($1)") + assertExpressionSerialize(t, LN(table1ColFloat), "LN(table1.colFloat)") + assertExpressionSerialize(t, LN(Float(11.2222)), "LN($1)", float64(11.2222)) } func TestFuncLOG(t *testing.T) { - assert.Equal(t, getTestSerialize(t, LOG(table1ColFloat)), "LOG(table1.colFloat)") - assert.Equal(t, getTestSerialize(t, LOG(Float(11.2222))), "LOG($1)") + assertExpressionSerialize(t, LOG(table1ColFloat), "LOG(table1.colFloat)") + assertExpressionSerialize(t, LOG(Float(11.2222)), "LOG($1)", float64(11.2222)) } func TestCase1(t *testing.T) { @@ -123,12 +123,8 @@ func TestCase1(t *testing.T) { WHEN(table3Col1.EQ(Int(1))).THEN(table3Col1.ADD(Int(1))). WHEN(table3Col1.EQ(Int(2))).THEN(table3Col1.ADD(Int(2))) - queryData := &queryData{} - - err := query.serialize(select_statement, queryData) - - assert.NilError(t, err) - assert.Equal(t, queryData.buff.String(), `(CASE WHEN table3.col1 = $1 THEN table3.col1 + $2 WHEN table3.col1 = $3 THEN table3.col1 + $4 END)`) + assertExpressionSerialize(t, query, `(CASE WHEN table3.col1 = $1 THEN table3.col1 + $2 WHEN table3.col1 = $3 THEN table3.col1 + $4 END)`, + int64(1), int64(1), int64(2), int64(2)) } func TestCase2(t *testing.T) { @@ -137,12 +133,8 @@ func TestCase2(t *testing.T) { WHEN(Int(2)).THEN(table3Col1.ADD(Int(2))). ELSE(Int(0)) - queryData := &queryData{} - - err := query.serialize(select_statement, queryData) - - assert.NilError(t, err) - assert.Equal(t, queryData.buff.String(), `(CASE table3.col1 WHEN $1 THEN table3.col1 + $2 WHEN $3 THEN table3.col1 + $4 ELSE $5 END)`) + assertExpressionSerialize(t, query, `(CASE table3.col1 WHEN $1 THEN table3.col1 + $2 WHEN $3 THEN table3.col1 + $4 ELSE $5 END)`, + int64(1), int64(1), int64(2), int64(2), int64(0)) } func TestInterval(t *testing.T) { diff --git a/sqlbuilder/integer_expression_test.go b/sqlbuilder/integer_expression_test.go index 7a759b7..8b0e4ca 100644 --- a/sqlbuilder/integer_expression_test.go +++ b/sqlbuilder/integer_expression_test.go @@ -1,68 +1,75 @@ package sqlbuilder import ( - "gotest.tools/assert" "testing" ) -func TestIntegerExpressionEQColumn(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.EQ(table2ColInt)), "(table1.colInt = table2.colInt)") -} - -func TestIntegerExpressionEQInt(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.EQ(Int(11))), "(table1.colInt = $1)") +func TestIntegerExpressionEQ(t *testing.T) { + assertExpressionSerialize(t, table1ColInt.EQ(table2ColInt), "(table1.colInt = table2.colInt)") + assertExpressionSerialize(t, table1ColInt.EQ(Int(11)), "(table1.colInt = $1)", int64(11)) } func TestIntegerExpressionNOT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.NOT_EQ(table2ColInt)), "(table1.colInt != table2.colInt)") + assertExpressionSerialize(t, table1ColInt.NOT_EQ(table2ColInt), "(table1.colInt != table2.colInt)") + assertExpressionSerialize(t, table1ColInt.NOT_EQ(Int(11)), "(table1.colInt != $1)", int64(11)) } func TestIntegerExpressionGT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.GT(table2ColInt)), "(table1.colInt > table2.colInt)") + assertExpressionSerialize(t, table1ColInt.GT(table2ColInt), "(table1.colInt > table2.colInt)") + assertExpressionSerialize(t, table1ColInt.GT(Int(11)), "(table1.colInt > $1)", int64(11)) } func TestIntegerExpressionGT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.GT_EQ(table2ColInt)), "(table1.colInt >= table2.colInt)") + assertExpressionSerialize(t, table1ColInt.GT_EQ(table2ColInt), "(table1.colInt >= table2.colInt)") + assertExpressionSerialize(t, table1ColInt.GT_EQ(Int(11)), "(table1.colInt >= $1)", int64(11)) } func TestIntegerExpressionLT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.LT(table2ColInt)), "(table1.colInt < table2.colInt)") + assertExpressionSerialize(t, table1ColInt.LT(table2ColInt), "(table1.colInt < table2.colInt)") + assertExpressionSerialize(t, table1ColInt.LT(Int(11)), "(table1.colInt < $1)", int64(11)) } func TestIntegerExpressionLT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.LT_EQ(table2ColInt)), "(table1.colInt <= table2.colInt)") + assertExpressionSerialize(t, table1ColInt.LT_EQ(table2ColInt), "(table1.colInt <= table2.colInt)") + assertExpressionSerialize(t, table1ColInt.LT_EQ(Int(11)), "(table1.colInt <= $1)", int64(11)) } func TestIntegerExpressionADD(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.ADD(table2ColInt)), "(table1.colInt + table2.colInt)") + assertExpressionSerialize(t, table1ColInt.ADD(table2ColInt), "(table1.colInt + table2.colInt)") + assertExpressionSerialize(t, table1ColInt.ADD(Int(11)), "(table1.colInt + $1)", int64(11)) } func TestIntegerExpressionSUB(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.SUB(table2ColInt)), "(table1.colInt - table2.colInt)") + assertExpressionSerialize(t, table1ColInt.SUB(table2ColInt), "(table1.colInt - table2.colInt)") + assertExpressionSerialize(t, table1ColInt.SUB(Int(11)), "(table1.colInt - $1)", int64(11)) } func TestIntegerExpressionMUL(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.MUL(table2ColInt)), "(table1.colInt * table2.colInt)") + assertExpressionSerialize(t, table1ColInt.MUL(table2ColInt), "(table1.colInt * table2.colInt)") + assertExpressionSerialize(t, table1ColInt.MUL(Int(11)), "(table1.colInt * $1)", int64(11)) } func TestIntegerExpressionDIV(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.DIV(table2ColInt)), "(table1.colInt / table2.colInt)") + assertExpressionSerialize(t, table1ColInt.DIV(table2ColInt), "(table1.colInt / table2.colInt)") + assertExpressionSerialize(t, table1ColInt.DIV(Int(11)), "(table1.colInt / $1)", int64(11)) } func TestIntExpressionMOD(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.MOD(table2ColInt)), "(table1.colInt % table2.colInt)") + assertExpressionSerialize(t, table1ColInt.MOD(table2ColInt), "(table1.colInt % table2.colInt)") + assertExpressionSerialize(t, table1ColInt.MOD(Int(11)), "(table1.colInt % $1)", int64(11)) } -func TestIntExpressionEXP(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.POW(table2ColInt)), "(table1.colInt ^ table2.colInt)") +func TestIntExpressionPOW(t *testing.T) { + assertExpressionSerialize(t, table1ColInt.POW(table2ColInt), "(table1.colInt ^ table2.colInt)") + assertExpressionSerialize(t, table1ColInt.POW(Int(11)), "(table1.colInt ^ $1)", int64(11)) } func TestIntExpressionBIT_SHIFT_LEFT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.BIT_SHIFT_LEFT(table2ColInt)), "(table1.colInt << table2.colInt)") - assert.Equal(t, getTestSerialize(t, table1ColInt.BIT_SHIFT_LEFT(Int(2))), "(table1.colInt << $1)") + assertExpressionSerialize(t, table1ColInt.BIT_SHIFT_LEFT(table2ColInt), "(table1.colInt << table2.colInt)") + assertExpressionSerialize(t, table1ColInt.BIT_SHIFT_LEFT(Int(11)), "(table1.colInt << $1)", int64(11)) } func TestIntExpressionBIT_SHIFT_RIGHT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColInt.BIT_SHIFT_RIGHT(table2ColInt)), "(table1.colInt >> table2.colInt)") - assert.Equal(t, getTestSerialize(t, table1ColInt.BIT_SHIFT_RIGHT(Int(11))), "(table1.colInt >> $1)") + assertExpressionSerialize(t, table1ColInt.BIT_SHIFT_RIGHT(table2ColInt), "(table1.colInt >> table2.colInt)") + assertExpressionSerialize(t, table1ColInt.BIT_SHIFT_RIGHT(Int(11)), "(table1.colInt >> $1)", int64(11)) } diff --git a/sqlbuilder/string_expression_test.go b/sqlbuilder/string_expression_test.go index 8a3c8f2..9829459 100644 --- a/sqlbuilder/string_expression_test.go +++ b/sqlbuilder/string_expression_test.go @@ -1,76 +1,42 @@ package sqlbuilder import ( - "gotest.tools/assert" "testing" ) -func TestStringEQColumn(t *testing.T) { +func TestStringEQ(t *testing.T) { exp := table3StrCol.EQ(table2ColStr) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 = table2.colStr)") -} - -func TestStringEQString(t *testing.T) { - exp := table3StrCol.EQ(String("JOHN")) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 = $1)") + assertExpressionSerialize(t, exp, "(table3.col2 = table2.colStr)") + exp = table3StrCol.EQ(String("JOHN")) + assertExpressionSerialize(t, exp, "(table3.col2 = $1)", "JOHN") } func TestStringNOT_EQ(t *testing.T) { exp := table3StrCol.NOT_EQ(table2ColStr) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 != table2.colStr)") + assertExpressionSerialize(t, exp, "(table3.col2 != table2.colStr)") + assertExpressionSerialize(t, table3StrCol.NOT_EQ(String("JOHN")), "(table3.col2 != $1)", "JOHN") } func TestStringGT(t *testing.T) { exp := table3StrCol.GT(table2ColStr) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 > table2.colStr)") + assertExpressionSerialize(t, exp, "(table3.col2 > table2.colStr)") + assertExpressionSerialize(t, table3StrCol.GT(String("JOHN")), "(table3.col2 > $1)", "JOHN") } func TestStringGT_EQ(t *testing.T) { exp := table3StrCol.GT_EQ(table2ColStr) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 >= table2.colStr)") + assertExpressionSerialize(t, exp, "(table3.col2 >= table2.colStr)") + assertExpressionSerialize(t, table3StrCol.GT_EQ(String("JOHN")), "(table3.col2 >= $1)", "JOHN") } func TestStringLT(t *testing.T) { exp := table3StrCol.LT(table2ColStr) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 < table2.colStr)") + assertExpressionSerialize(t, exp, "(table3.col2 < table2.colStr)") + assertExpressionSerialize(t, table3StrCol.LT(String("JOHN")), "(table3.col2 < $1)", "JOHN") } func TestStringLT_EQ(t *testing.T) { exp := table3StrCol.LT_EQ(table2ColStr) - - out := queryData{} - err := exp.serialize(select_statement, &out) - - assert.NilError(t, err) - assert.Equal(t, out.buff.String(), "(table3.col2 <= table2.colStr)") + assertExpressionSerialize(t, exp, "(table3.col2 <= table2.colStr)") + assertExpressionSerialize(t, table3StrCol.LT_EQ(String("JOHN")), "(table3.col2 <= $1)", "JOHN") } diff --git a/sqlbuilder/test_utils.go b/sqlbuilder/test_utils.go index 32204f4..9fc3d1a 100644 --- a/sqlbuilder/test_utils.go +++ b/sqlbuilder/test_utils.go @@ -49,11 +49,12 @@ var table3 = NewTable( table3Col1, table3StrCol) -func getTestSerialize(t *testing.T, exp expression) string { +func assertExpressionSerialize(t *testing.T, expression expression, query string, args ...interface{}) { out := queryData{} - err := exp.serialize(select_statement, &out) + err := expression.serialize(select_statement, &out) assert.NilError(t, err) - return out.buff.String() + assert.DeepEqual(t, out.buff.String(), query) + assert.DeepEqual(t, out.args, args) } diff --git a/sqlbuilder/time_expression_test.go b/sqlbuilder/time_expression_test.go index 0086b49..2b5c6bf 100644 --- a/sqlbuilder/time_expression_test.go +++ b/sqlbuilder/time_expression_test.go @@ -1,36 +1,35 @@ package sqlbuilder import ( - "gotest.tools/assert" "testing" ) func TestTimeExpressionEQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColTime.EQ(table2ColTime)), "(table1.colTime = table2.colTime)") - assert.Equal(t, getTestSerialize(t, table1ColTime.EQ(Time(10, 20, 0, 0))), "(table1.colTime = $1)") + assertExpressionSerialize(t, table1ColTime.EQ(table2ColTime), "(table1.colTime = table2.colTime)") + assertExpressionSerialize(t, table1ColTime.EQ(Time(10, 20, 0, 0)), "(table1.colTime = $1)", "10:20:00.000") } func TestTimeExpressionNOT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColTime.NOT_EQ(table2ColTime)), "(table1.colTime != table2.colTime)") - assert.Equal(t, getTestSerialize(t, table1ColTime.NOT_EQ(Time(10, 20, 0, 0))), "(table1.colTime != $1)") + assertExpressionSerialize(t, table1ColTime.NOT_EQ(table2ColTime), "(table1.colTime != table2.colTime)") + assertExpressionSerialize(t, table1ColTime.NOT_EQ(Time(10, 20, 0, 0)), "(table1.colTime != $1)", "10:20:00.000") } func TestTimeExpressionLT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColTime.LT(table2ColTime)), "(table1.colTime < table2.colTime)") - assert.Equal(t, getTestSerialize(t, table1ColTime.LT(Time(10, 20, 0, 0))), "(table1.colTime < $1)") + assertExpressionSerialize(t, table1ColTime.LT(table2ColTime), "(table1.colTime < table2.colTime)") + assertExpressionSerialize(t, table1ColTime.LT(Time(10, 20, 0, 0)), "(table1.colTime < $1)", "10:20:00.000") } func TestTimeExpressionLT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColTime.LT_EQ(table2ColTime)), "(table1.colTime <= table2.colTime)") - assert.Equal(t, getTestSerialize(t, table1ColTime.LT_EQ(Time(10, 20, 0, 0))), "(table1.colTime <= $1)") + assertExpressionSerialize(t, table1ColTime.LT_EQ(table2ColTime), "(table1.colTime <= table2.colTime)") + assertExpressionSerialize(t, table1ColTime.LT_EQ(Time(10, 20, 0, 0)), "(table1.colTime <= $1)", "10:20:00.000") } func TestTimeExpressionGT(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColTime.GT(table2ColTime)), "(table1.colTime > table2.colTime)") - assert.Equal(t, getTestSerialize(t, table1ColTime.GT(Time(10, 20, 0, 0))), "(table1.colTime > $1)") + assertExpressionSerialize(t, table1ColTime.GT(table2ColTime), "(table1.colTime > table2.colTime)") + assertExpressionSerialize(t, table1ColTime.GT(Time(10, 20, 0, 0)), "(table1.colTime > $1)", "10:20:00.000") } func TestTimeExpressionGT_EQ(t *testing.T) { - assert.Equal(t, getTestSerialize(t, table1ColTime.GT_EQ(table2ColTime)), "(table1.colTime >= table2.colTime)") - assert.Equal(t, getTestSerialize(t, table1ColTime.GT_EQ(Time(10, 20, 0, 0))), "(table1.colTime >= $1)") + assertExpressionSerialize(t, table1ColTime.GT_EQ(table2ColTime), "(table1.colTime >= table2.colTime)") + assertExpressionSerialize(t, table1ColTime.GT_EQ(Time(10, 20, 0, 0)), "(table1.colTime >= $1)", "10:20:00.000") }