Skip to content

Commit c827b0e

Browse files
authored
Add tests
1 parent 2a87b57 commit c827b0e

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

tests/SqlClient.Tests/TypeProviderTest.fs

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,47 @@ let singleRowOption() =
8888

8989
[<Fact>]
9090
let ToTraceString() =
91-
let now = DateTime.Now
91+
let now = DateTime.Now.ToString("O")
9292
let num = 42
93-
let expected = sprintf "exec sp_executesql N'SELECT CAST(@Date AS DATE), CAST(@Number AS INT)',N'@Date Date,@Number Int',@Date='%A',@Number='%d'" now num
93+
let expected = sprintf "exec sp_executesql N'SELECT CAST(@Date AS DATE), CAST(@Number AS INT)',N'@Date Date,@Number Int',@Date='%s',@Number='%d'" now num
9494
let cmd = new SqlCommandProvider<"SELECT CAST(@Date AS DATE), CAST(@Number AS INT)", ConnectionStrings.AdventureWorksNamed, ResultType.Tuples>()
9595
Assert.Equal<string>(
9696
expected,
9797
actual = cmd.ToTraceString( now, num)
9898
)
99+
100+
let runString query =
101+
use conn = new SqlConnection(ConnectionStrings.AdventureWorks)
102+
conn.Open()
103+
use cmd = new System.Data.SqlClient.SqlCommand()
104+
cmd.Connection <- conn
105+
cmd.CommandText <- query
106+
cmd.ExecuteNonQuery()
107+
108+
[<Fact>]
109+
let ``ToTraceString for dates``() =
110+
let cmd = new SqlCommandProvider<"SELECT CAST(@Date AS DATE)", ConnectionStrings.AdventureWorksNamed>()
111+
runString <| cmd.ToTraceString(System.DateTime.Now)
112+
113+
[<Fact>]
114+
let ``ToTraceString for times``() =
115+
let cmd = new SqlCommandProvider<"SELECT CAST(@Time AS Time)", ConnectionStrings.AdventureWorksNamed>()
116+
runString <| cmd.ToTraceString(System.DateTime.Now.TimeOfDay)
117+
118+
[<Fact>]
119+
let ``ToTraceString for tinyint``() =
120+
let cmd = new SqlCommandProvider<"SELECT CAST(@ti AS TINYINT)", ConnectionStrings.AdventureWorksNamed>()
121+
runString <| cmd.ToTraceString(0uy)
122+
123+
[<Fact>]
124+
let ``ToTraceString for xml``() =
125+
let cmd = new SqlCommandProvider<"SELECT CAST(@x AS XML)", ConnectionStrings.AdventureWorksNamed>()
126+
runString <| cmd.ToTraceString("<foo>bar</foo>")
127+
128+
[<Fact>]
129+
let ``ToTraceString for xml with single quotes``() =
130+
let cmd = new SqlCommandProvider<"SELECT CAST(@x AS XML)", ConnectionStrings.AdventureWorksNamed>()
131+
runString <| cmd.ToTraceString("<foo>b'ar</foo>")
99132

100133
[<Fact>]
101134
let ``ToTraceString for CRUD``() =
@@ -121,6 +154,15 @@ let ``ToTraceString double-quotes``() =
121154
let trace = cmd.ToTraceString()
122155
Assert.Equal<string>("exec sp_executesql N'SELECT OBJECT_ID(''Sales.Currency'')'", trace)
123156

157+
158+
[<Fact>]
159+
let ``ToTraceString double-quotes in paramter``() =
160+
use cmd = new SqlCommandProvider<"SELECT * FROM Sales.Currency WHERE CurrencyCode = @CurrencyCode", ConnectionStrings.AdventureWorksNamed>()
161+
Assert.Equal<string>(
162+
expected = "exec sp_executesql N'DELETE FROM Sales.Currency WHERE CurrencyCode = @Code',N'@Code NChar(3)',@Code='A''B'",
163+
actual = cmd.ToTraceString("A'B")
164+
)
165+
124166
[<Fact(
125167
Skip = "Don't execute for usual runs. Too slow."
126168
)>]

0 commit comments

Comments
 (0)