fix: 将 libsql-client-go 作为普通目录提交,而非 gitlink
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
package hrana
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestStmtWithPositionalArgs(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
args []any
|
||||
want []Value
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "int args",
|
||||
args: []any{1, 2},
|
||||
want: []Value{{Type: "integer", Value: "1"}, {Type: "integer", Value: "2"}},
|
||||
},
|
||||
{
|
||||
name: "string args",
|
||||
args: []any{"a", "b"},
|
||||
want: []Value{{Type: "text", Value: "a"}, {Type: "text", Value: "b"}},
|
||||
},
|
||||
{
|
||||
name: "invalid arg",
|
||||
args: []any{make(chan int)},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
stmt := Stmt{}
|
||||
err := stmt.AddPositionalArgs(tt.args)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("StmtWithPositionalArgs() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(stmt.Args, tt.want) {
|
||||
t.Errorf("got = %v, want %v", stmt.Args, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestStmtWithNamedArgs(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
args map[string]any
|
||||
want []NamedArg
|
||||
wantErr bool
|
||||
}{
|
||||
{
|
||||
name: "int args",
|
||||
args: map[string]any{"arg1": 1, "arg2": int64(2)},
|
||||
want: []NamedArg{
|
||||
{Name: "arg1", Value: Value{Type: "integer", Value: "1"}},
|
||||
{Name: "arg2", Value: Value{Type: "integer", Value: "2"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "string args",
|
||||
args: map[string]any{"arg1": "a", "arg2": "b"},
|
||||
want: []NamedArg{
|
||||
{Name: "arg1", Value: Value{Type: "text", Value: "a"}},
|
||||
{Name: "arg2", Value: Value{Type: "text", Value: "b"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "invalid arg",
|
||||
args: map[string]any{"arg1": make(chan int)},
|
||||
want: nil,
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
stmt := Stmt{}
|
||||
err := stmt.AddNamedArgs(tt.args)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("StmtWithNamedArgs() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
got := make(map[NamedArg]struct{})
|
||||
want := make(map[NamedArg]struct{})
|
||||
for _, arg := range stmt.NamedArgs {
|
||||
got[arg] = struct{}{}
|
||||
}
|
||||
for _, arg := range tt.want {
|
||||
want[arg] = struct{}{}
|
||||
}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("got = %v, want %v", stmt.NamedArgs, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user