Skip to content

Commit 28f3fbf

Browse files
added functional test cases for change
1 parent 9ae2e42 commit 28f3fbf

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

queries_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,58 @@ func TestSelectNewTypes(t *testing.T) {
321321
}
322322
}
323323

324+
func TestSelectWithVarchar(t *testing.T) {
325+
conn, logger := openWithVarcharDSN(t)
326+
defer conn.Close()
327+
defer logger.StopLogging()
328+
329+
t.Run("scan into interface{}", func(t *testing.T) {
330+
type testStruct struct {
331+
sql string
332+
val string
333+
}
334+
335+
longstr := strings.Repeat("x", 10000)
336+
337+
values := []testStruct{
338+
{"'abc'", "abc"},
339+
{"N'abc'", "abc"},
340+
{"cast(N'abc' as nvarchar(max))", "abc"},
341+
{"cast('abc' as text)", "abc"},
342+
{"cast(N'abc' as ntext)", "abc"},
343+
{"cast('abc' as char(3))", "abc"},
344+
{"cast('abc' as varchar(3))", "abc"},
345+
{fmt.Sprintf("cast(N'%s' as nvarchar(max))", longstr), longstr},
346+
{"cast(cast('abc' as varchar(3)) as sql_variant)", "abc"},
347+
{"cast(cast('abc' as char(3)) as sql_variant)", "abc"},
348+
{"cast(N'abc' as sql_variant)", "abc"},
349+
}
350+
351+
for _, test := range values {
352+
t.Run(test.sql, func(t *testing.T) {
353+
stmt, err := conn.Prepare("select " + test.sql)
354+
if err != nil {
355+
t.Error("Prepare failed:", test.sql, err.Error())
356+
return
357+
}
358+
defer stmt.Close()
359+
360+
row := stmt.QueryRow()
361+
var retval string
362+
err = row.Scan(&retval)
363+
if err != nil {
364+
t.Error("Scan failed:", test.sql, err.Error())
365+
return
366+
}
367+
if retval != test.val {
368+
t.Errorf("Values don't match '%s' '%s' for test: %s", retval, test.val, test.sql)
369+
return
370+
}
371+
})
372+
}
373+
})
374+
}
375+
324376
func TestTrans(t *testing.T) {
325377
conn, logger := open(t)
326378
defer conn.Close()

tds_go110_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,22 @@ func getTestConnector(t testing.TB) (*Connector, *testLogger) {
2424
}
2525
return connector, &tl
2626
}
27+
28+
func openWithVarcharDSN(t testing.TB) (*sql.DB, *testLogger) {
29+
connector, logger := getTestConnectorWithVarcharDSN(t)
30+
conn := sql.OpenDB(connector)
31+
return conn, logger
32+
}
33+
34+
func getTestConnectorWithVarcharDSN(t testing.TB) (*Connector, *testLogger) {
35+
tl := testLogger{t: t}
36+
SetLogger(&tl)
37+
s := testConnParams(t)
38+
s.SendStringParametersAsUnicode = true
39+
connector, err := NewConnector(s.URL().String())
40+
if err != nil {
41+
t.Error("Open connection failed:", err.Error())
42+
return nil, &tl
43+
}
44+
return connector, &tl
45+
}

0 commit comments

Comments
 (0)