Skip to content

Commit 36ea9ac

Browse files
committed
Add tests for binding prepared command parameters.
1 parent 5843279 commit 36ea9ac

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

tests/SideBySide/PreparedCommandTests.cs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Text;
34
using Dapper;
45
using MySql.Data.MySqlClient;
56
using Xunit;
@@ -220,6 +221,62 @@ public void ThrowsIfTooManyUnnamedParametersUsed()
220221
}
221222
}
222223

224+
[Theory]
225+
[InlineData(1)]
226+
[InlineData(2)]
227+
[InlineData(3)]
228+
[InlineData(4)]
229+
[InlineData(5)]
230+
[InlineData(6)]
231+
[InlineData(7)]
232+
[InlineData(8)]
233+
[InlineData(9)]
234+
[InlineData(10)]
235+
[InlineData(11)]
236+
[InlineData(16)]
237+
[InlineData(17)]
238+
[InlineData(100)]
239+
[InlineData(1000)]
240+
[InlineData(10000)]
241+
[InlineData(32767)]
242+
[InlineData(32768)]
243+
[InlineData(65535)]
244+
public void ParametersAreBound(int parameterCount)
245+
{
246+
using (var connection = CreatePrepareConnection())
247+
{
248+
connection.Execute(@"drop table if exists prepared_command_test; create table prepared_command_test(value int not null); insert into prepared_command_test(value) values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);");
249+
250+
using (var cmd = connection.CreateCommand())
251+
{
252+
var sql = new StringBuilder("select value from prepared_command_test where value in (");
253+
for (int parameterIndex = 1; parameterIndex <= parameterCount; parameterIndex++)
254+
{
255+
var parameterName = "p" + parameterIndex;
256+
cmd.Parameters.AddWithValue(parameterName, parameterIndex);
257+
if (parameterIndex > 1)
258+
sql.Append(",");
259+
sql.Append("@");
260+
sql.Append(parameterName);
261+
}
262+
sql.Append(") order by value;");
263+
264+
cmd.CommandText = sql.ToString();
265+
cmd.Prepare();
266+
267+
using (var reader = cmd.ExecuteReader())
268+
{
269+
for (var i = 1; i <= Math.Min(parameterCount, 10); i++)
270+
{
271+
Assert.True(reader.Read());
272+
Assert.Equal(i, reader.GetInt32(0));
273+
}
274+
Assert.False(reader.Read());
275+
}
276+
}
277+
}
278+
}
279+
223280
public static IEnumerable<object[]> GetInsertAndQueryData()
224281
{
225282
foreach (var isPrepared in new[] { false, true })

0 commit comments

Comments
 (0)