mydb/internal/sqladapter/exql/value_test.go

131 lines
2.4 KiB
Go
Raw Normal View History

2023-09-18 15:15:42 +08:00
package exql
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestValue(t *testing.T) {
val := NewValue(1)
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `'1'`, s)
val = NewValue(&Raw{Value: "NOW()"})
s, err = val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `NOW()`, s)
}
func TestSameRawValue(t *testing.T) {
{
val := NewValue(&Raw{Value: `"1"`})
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `"1"`, s)
}
{
val := NewValue(&Raw{Value: `'1'`})
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `'1'`, s)
}
{
val := NewValue(&Raw{Value: `1`})
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `1`, s)
}
{
val := NewValue("1")
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `'1'`, s)
}
{
val := NewValue(1)
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `'1'`, s)
}
}
func TestValues(t *testing.T) {
val := NewValueGroup(
&Value{V: &Raw{Value: "1"}},
&Value{V: &Raw{Value: "2"}},
&Value{V: "3"},
)
s, err := val.Compile(defaultTemplate)
assert.NoError(t, err)
assert.Equal(t, `(1, 2, '3')`, s)
}
func BenchmarkValue(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = NewValue("a")
}
}
func BenchmarkValueHash(b *testing.B) {
v := NewValue("a")
b.ResetTimer()
for i := 0; i < b.N; i++ {
_ = v.Hash()
}
}
func BenchmarkValueCompile(b *testing.B) {
v := NewValue("a")
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = v.Compile(defaultTemplate)
}
}
func BenchmarkValueCompileNoCache(b *testing.B) {
for i := 0; i < b.N; i++ {
v := NewValue("a")
_, _ = v.Compile(defaultTemplate)
}
}
func BenchmarkValues(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = NewValueGroup(NewValue("a"), NewValue("b"))
}
}
func BenchmarkValuesHash(b *testing.B) {
vs := NewValueGroup(NewValue("a"), NewValue("b"))
b.ResetTimer()
for i := 0; i < b.N; i++ {
_ = vs.Hash()
}
}
func BenchmarkValuesCompile(b *testing.B) {
vs := NewValueGroup(NewValue("a"), NewValue("b"))
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = vs.Compile(defaultTemplate)
}
}
func BenchmarkValuesCompileNoCache(b *testing.B) {
for i := 0; i < b.N; i++ {
vs := NewValueGroup(NewValue("a"), NewValue("b"))
_, _ = vs.Compile(defaultTemplate)
}
}