| package squirrel |
| |
| import ( |
| "strings" |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| ) |
| |
| func TestQuestion(t *testing.T) { |
| sql := "x = ? AND y = ?" |
| s, _ := Question.ReplacePlaceholders(sql) |
| assert.Equal(t, sql, s) |
| } |
| |
| func TestDollar(t *testing.T) { |
| sql := "x = ? AND y = ?" |
| s, _ := Dollar.ReplacePlaceholders(sql) |
| assert.Equal(t, "x = $1 AND y = $2", s) |
| } |
| |
| func TestColon(t *testing.T) { |
| sql := "x = ? AND y = ?" |
| s, _ := Colon.ReplacePlaceholders(sql) |
| assert.Equal(t, "x = :1 AND y = :2", s) |
| } |
| |
| func TestAtp(t *testing.T) { |
| sql := "x = ? AND y = ?" |
| s, _ := AtP.ReplacePlaceholders(sql) |
| assert.Equal(t, "x = @p1 AND y = @p2", s) |
| } |
| |
| func TestPlaceholders(t *testing.T) { |
| assert.Equal(t, Placeholders(2), "?,?") |
| } |
| |
| func TestEscapeDollar(t *testing.T) { |
| sql := "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ??| array['?'] AND enabled = ?" |
| s, _ := Dollar.ReplacePlaceholders(sql) |
| assert.Equal(t, "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ?| array['$1'] AND enabled = $2", s) |
| } |
| |
| func TestEscapeColon(t *testing.T) { |
| sql := "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ??| array['?'] AND enabled = ?" |
| s, _ := Colon.ReplacePlaceholders(sql) |
| assert.Equal(t, "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ?| array[':1'] AND enabled = :2", s) |
| } |
| |
| func TestEscapeAtp(t *testing.T) { |
| sql := "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ??| array['?'] AND enabled = ?" |
| s, _ := AtP.ReplacePlaceholders(sql) |
| assert.Equal(t, "SELECT uuid, \"data\" #> '{tags}' AS tags FROM nodes WHERE \"data\" -> 'tags' ?| array['@p1'] AND enabled = @p2", s) |
| } |
| |
| func BenchmarkPlaceholdersArray(b *testing.B) { |
| var count = b.N |
| placeholders := make([]string, count) |
| for i := 0; i < count; i++ { |
| placeholders[i] = "?" |
| } |
| var _ = strings.Join(placeholders, ",") |
| } |
| |
| func BenchmarkPlaceholdersStrings(b *testing.B) { |
| Placeholders(b.N) |
| } |