fix: 将 libsql-client-go 作为普通目录提交,而非 gitlink
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
package ws
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestConvertValue(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
value any
|
||||
want map[string]any
|
||||
err error
|
||||
}{
|
||||
{
|
||||
name: "nil",
|
||||
value: nil,
|
||||
want: map[string]any{
|
||||
"type": "null",
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "integer",
|
||||
value: int64(42),
|
||||
want: map[string]any{
|
||||
"type": "integer",
|
||||
"value": "42",
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "text",
|
||||
value: "turso for win",
|
||||
want: map[string]any{
|
||||
"type": "text",
|
||||
"value": "turso for win",
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "blob",
|
||||
value: []byte("hello world"),
|
||||
want: map[string]any{
|
||||
"type": "blob",
|
||||
// `hello world` encoded is `aGVsbG8gd29ybGQ=` but we want without padding
|
||||
"base64": "aGVsbG8gd29ybGQ",
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "float",
|
||||
value: 3.14,
|
||||
want: map[string]any{
|
||||
"type": "float",
|
||||
"value": 3.14,
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "boolean_true",
|
||||
value: true,
|
||||
want: map[string]any{
|
||||
"type": "integer",
|
||||
"value": "1",
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "boolean_false",
|
||||
value: false,
|
||||
want: map[string]any{
|
||||
"type": "integer",
|
||||
"value": "0",
|
||||
},
|
||||
err: nil,
|
||||
},
|
||||
{
|
||||
name: "unsupported",
|
||||
value: struct{}{},
|
||||
want: nil,
|
||||
err: fmt.Errorf("unsupported value type: %s", struct{}{}),
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := convertValue(tt.value)
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("got %v, want %v", got, tt.want)
|
||||
}
|
||||
if !reflect.DeepEqual(err, tt.err) {
|
||||
t.Errorf("got error %v, want %v", err, tt.err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_execResponse_lastInsertId(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
value map[string]interface{}
|
||||
want int64
|
||||
}{
|
||||
{
|
||||
name: "valid",
|
||||
value: map[string]interface{}{"last_insert_rowid": "42"},
|
||||
want: 42,
|
||||
},
|
||||
{
|
||||
name: "empty",
|
||||
value: map[string]interface{}{},
|
||||
want: 0,
|
||||
},
|
||||
{
|
||||
name: "invalid",
|
||||
value: map[string]interface{}{"last_insert_rowid": "invalid"},
|
||||
want: 0,
|
||||
},
|
||||
{
|
||||
name: "invalid_type",
|
||||
value: map[string]interface{}{"last_insert_rowid": 42.0},
|
||||
want: 0,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
r := &execResponse{
|
||||
resp: tt.value,
|
||||
}
|
||||
if got := r.lastInsertId(); got != tt.want {
|
||||
t.Errorf("lastInsertId() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user