mydb/internal/sqladapter/exql/order_by_test.go
2023-09-18 15:15:42 +08:00

155 lines
3.1 KiB
Go

package exql
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestOrderBy(t *testing.T) {
o := JoinWithOrderBy(
JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
),
)
s := mustTrim(o.Compile(defaultTemplate))
assert.Equal(t, `ORDER BY "foo"`, s)
}
func TestOrderByRaw(t *testing.T) {
o := JoinWithOrderBy(
JoinSortColumns(
&SortColumn{Column: &Raw{Value: "CASE WHEN id IN ? THEN 0 ELSE 1 END"}},
),
)
s := mustTrim(o.Compile(defaultTemplate))
assert.Equal(t, `ORDER BY CASE WHEN id IN ? THEN 0 ELSE 1 END`, s)
}
func TestOrderByDesc(t *testing.T) {
o := JoinWithOrderBy(
JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}, Order: Order_Descendent},
),
)
s := mustTrim(o.Compile(defaultTemplate))
assert.Equal(t, `ORDER BY "foo" DESC`, s)
}
func BenchmarkOrderBy(b *testing.B) {
for i := 0; i < b.N; i++ {
JoinWithOrderBy(
JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
),
)
}
}
func BenchmarkOrderByHash(b *testing.B) {
o := OrderBy{
SortColumns: JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
),
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
o.Hash()
}
}
func BenchmarkCompileOrderByCompile(b *testing.B) {
o := OrderBy{
SortColumns: JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
),
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = o.Compile(defaultTemplate)
}
}
func BenchmarkCompileOrderByCompileNoCache(b *testing.B) {
for i := 0; i < b.N; i++ {
o := JoinWithOrderBy(
JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
),
)
_, _ = o.Compile(defaultTemplate)
}
}
func BenchmarkCompileOrderCompile(b *testing.B) {
o := Order_Descendent
for i := 0; i < b.N; i++ {
_, _ = o.Compile(defaultTemplate)
}
}
func BenchmarkCompileOrderCompileNoCache(b *testing.B) {
for i := 0; i < b.N; i++ {
o := Order_Descendent
_, _ = o.Compile(defaultTemplate)
}
}
func BenchmarkSortColumnHash(b *testing.B) {
s := &SortColumn{Column: &Column{Name: "foo"}}
b.ResetTimer()
for i := 0; i < b.N; i++ {
s.Hash()
}
}
func BenchmarkSortColumnCompile(b *testing.B) {
s := &SortColumn{Column: &Column{Name: "foo"}}
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = s.Compile(defaultTemplate)
}
}
func BenchmarkSortColumnCompileNoCache(b *testing.B) {
for i := 0; i < b.N; i++ {
s := &SortColumn{Column: &Column{Name: "foo"}}
_, _ = s.Compile(defaultTemplate)
}
}
func BenchmarkSortColumnsHash(b *testing.B) {
s := JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
&SortColumn{Column: &Column{Name: "bar"}},
)
b.ResetTimer()
for i := 0; i < b.N; i++ {
s.Hash()
}
}
func BenchmarkSortColumnsCompile(b *testing.B) {
s := JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
&SortColumn{Column: &Column{Name: "bar"}},
)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = s.Compile(defaultTemplate)
}
}
func BenchmarkSortColumnsCompileNoCache(b *testing.B) {
for i := 0; i < b.N; i++ {
s := JoinSortColumns(
&SortColumn{Column: &Column{Name: "foo"}},
&SortColumn{Column: &Column{Name: "bar"}},
)
_, _ = s.Compile(defaultTemplate)
}
}