191 lines
5.8 KiB
Go
191 lines
5.8 KiB
Go
package db_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
dbv2 "git.fsdpf.net/go/db/v2"
|
|
"git.fsdpf.net/go/db/v2/exp"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type (
|
|
dbv2ExpressionsSuite struct {
|
|
suite.Suite
|
|
}
|
|
)
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestCast() {
|
|
ges.Equal(exp.NewCastExpression(dbv2.C("test"), "string"), dbv2.Cast(dbv2.C("test"), "string"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestDoNothing() {
|
|
ges.Equal(exp.NewDoNothingConflictExpression(), dbv2.DoNothing())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestDoUpdate() {
|
|
ges.Equal(exp.NewDoUpdateConflictExpression("test", dbv2.Record{"a": "b"}), dbv2.DoUpdate("test", dbv2.Record{"a": "b"}))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestOr() {
|
|
e1 := dbv2.C("a").Eq("b")
|
|
e2 := dbv2.C("b").Eq(2)
|
|
ges.Equal(exp.NewExpressionList(exp.OrType, e1, e2), dbv2.Or(e1, e2))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestAnd() {
|
|
e1 := dbv2.C("a").Eq("b")
|
|
e2 := dbv2.C("b").Eq(2)
|
|
ges.Equal(exp.NewExpressionList(exp.AndType, e1, e2), dbv2.And(e1, e2))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestFunc() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("count", dbv2.L("*")), dbv2.Func("count", dbv2.L("*")))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestDISTINCT() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("DISTINCT", dbv2.I("col")), dbv2.DISTINCT("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestCOUNT() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("COUNT", dbv2.I("col")), dbv2.COUNT("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestMIN() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("MIN", dbv2.I("col")), dbv2.MIN("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestMAX() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("MAX", dbv2.I("col")), dbv2.MAX("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestAVG() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("AVG", dbv2.I("col")), dbv2.AVG("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestFIRST() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("FIRST", dbv2.I("col")), dbv2.FIRST("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestLAST() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("LAST", dbv2.I("col")), dbv2.LAST("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestSUM() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("SUM", dbv2.I("col")), dbv2.SUM("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestCOALESCE() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("COALESCE", dbv2.I("col"), nil), dbv2.COALESCE(dbv2.I("col"), nil))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestROW_NUMBER() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("ROW_NUMBER"), dbv2.ROW_NUMBER())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestRANK() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("RANK"), dbv2.RANK())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestDENSE_RANK() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("DENSE_RANK"), dbv2.DENSE_RANK())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestPERCENT_RANK() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("PERCENT_RANK"), dbv2.PERCENT_RANK())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestCUME_DIST() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("CUME_DIST"), dbv2.CUME_DIST())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestNTILE() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("NTILE", 1), dbv2.NTILE(1))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestFIRST_VALUE() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("FIRST_VALUE", dbv2.I("col")), dbv2.FIRST_VALUE("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestLAST_VALUE() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("LAST_VALUE", dbv2.I("col")), dbv2.LAST_VALUE("col"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestNTH_VALUE() {
|
|
ges.Equal(exp.NewSQLFunctionExpression("NTH_VALUE", dbv2.I("col"), 1), dbv2.NTH_VALUE("col", 1))
|
|
ges.Equal(exp.NewSQLFunctionExpression("NTH_VALUE", dbv2.I("col"), 1), dbv2.NTH_VALUE(dbv2.C("col"), 1))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestI() {
|
|
ges.Equal(exp.NewIdentifierExpression("s", "t", "c"), dbv2.I("s.t.c"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestC() {
|
|
ges.Equal(exp.NewIdentifierExpression("", "", "c"), dbv2.C("c"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestS() {
|
|
ges.Equal(exp.NewIdentifierExpression("s", "", ""), dbv2.S("s"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestT() {
|
|
ges.Equal(exp.NewIdentifierExpression("", "t", ""), dbv2.T("t"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestW() {
|
|
ges.Equal(exp.NewWindowExpression(nil, nil, nil, nil), dbv2.W())
|
|
ges.Equal(exp.NewWindowExpression(dbv2.I("a"), nil, nil, nil), dbv2.W("a"))
|
|
ges.Equal(exp.NewWindowExpression(dbv2.I("a"), dbv2.I("b"), nil, nil), dbv2.W("a", "b"))
|
|
ges.Equal(exp.NewWindowExpression(dbv2.I("a"), dbv2.I("b"), nil, nil), dbv2.W("a", "b", "c"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestOn() {
|
|
ges.Equal(exp.NewJoinOnCondition(dbv2.Ex{"a": "b"}), dbv2.On(dbv2.Ex{"a": "b"}))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestUsing() {
|
|
ges.Equal(exp.NewJoinUsingCondition("a", "b"), dbv2.Using("a", "b"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestL() {
|
|
ges.Equal(exp.NewLiteralExpression("? + ?", 1, 2), dbv2.L("? + ?", 1, 2))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestLiteral() {
|
|
ges.Equal(exp.NewLiteralExpression("? + ?", 1, 2), dbv2.Literal("? + ?", 1, 2))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestV() {
|
|
ges.Equal(exp.NewLiteralExpression("?", "a"), dbv2.V("a"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestRange() {
|
|
ges.Equal(exp.NewRangeVal("a", "b"), dbv2.Range("a", "b"))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestStar() {
|
|
ges.Equal(exp.NewLiteralExpression("*"), dbv2.Star())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestDefault() {
|
|
ges.Equal(exp.Default(), dbv2.Default())
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestLateral() {
|
|
ds := dbv2.From("test")
|
|
ges.Equal(exp.NewLateralExpression(ds), dbv2.Lateral(ds))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestAny() {
|
|
ds := dbv2.From("test").Select("id")
|
|
ges.Equal(exp.NewSQLFunctionExpression("ANY ", ds), dbv2.Any(ds))
|
|
}
|
|
|
|
func (ges *dbv2ExpressionsSuite) TestAll() {
|
|
ds := dbv2.From("test").Select("id")
|
|
ges.Equal(exp.NewSQLFunctionExpression("ALL ", ds), dbv2.All(ds))
|
|
}
|
|
|
|
func TestDbv2Expressions(t *testing.T) {
|
|
suite.Run(t, new(dbv2ExpressionsSuite))
|
|
}
|