35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
|
|
package stardb
|
||
|
|
|
||
|
|
import "testing"
|
||
|
|
|
||
|
|
func TestConvertQuestionToDollarPlaceholders(t *testing.T) {
|
||
|
|
query := "SELECT * FROM users WHERE id = ? AND name = ?"
|
||
|
|
got := ConvertQuestionToDollarPlaceholders(query)
|
||
|
|
want := "SELECT * FROM users WHERE id = $1 AND name = $2"
|
||
|
|
if got != want {
|
||
|
|
t.Fatalf("expected %q, got %q", want, got)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestConvertQuestionToDollarPlaceholders_SkipQuotedAndComments(t *testing.T) {
|
||
|
|
query := "SELECT '?', \"?\", `?`, col FROM t WHERE id = ? -- ?\nAND note = '??' /* ? */ AND x = ?"
|
||
|
|
got := ConvertQuestionToDollarPlaceholders(query)
|
||
|
|
want := "SELECT '?', \"?\", `?`, col FROM t WHERE id = $1 -- ?\nAND note = '??' /* ? */ AND x = $2"
|
||
|
|
if got != want {
|
||
|
|
t.Fatalf("expected %q, got %q", want, got)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestConvertPlaceholders(t *testing.T) {
|
||
|
|
query := "SELECT * FROM t WHERE a = ? AND b = ?"
|
||
|
|
if got := ConvertPlaceholders(query, PlaceholderQuestion); got != query {
|
||
|
|
t.Fatalf("question style should keep query unchanged, got %q", got)
|
||
|
|
}
|
||
|
|
|
||
|
|
got := ConvertPlaceholders(query, PlaceholderDollar)
|
||
|
|
want := "SELECT * FROM t WHERE a = $1 AND b = $2"
|
||
|
|
if got != want {
|
||
|
|
t.Fatalf("expected %q, got %q", want, got)
|
||
|
|
}
|
||
|
|
}
|