Skip to content

Commit e4641f6

Browse files
committed
Add tests for MySqlParameterCollection.CopyTo.
Signed-off-by: Bradley Grainger <[email protected]>
1 parent e99d7cb commit e4641f6

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

src/MySqlConnector/MySql.Data.MySqlClient/MySqlParameterCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public MySqlParameter AddWithValue(string parameterName, object value)
6363

6464
public override bool Contains(string value) => IndexOf(value) != -1;
6565

66-
public override void CopyTo(Array array, int index) => ((ICollection) m_parameters).CopyTo( array, index);
66+
public override void CopyTo(Array array, int index) => ((ICollection) m_parameters).CopyTo(array, index);
6767

6868
public override void Clear()
6969
{

tests/SideBySide/ParameterCollection.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Data.Common;
23
using MySql.Data.MySqlClient;
34
using Xunit;
45

@@ -189,6 +190,54 @@ public void AddNameTypeSize()
189190
Assert.Same(parameter, m_parameterCollection[0]);
190191
}
191192

193+
[Fact]
194+
public void CopyTo()
195+
{
196+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test1", Value = 0 });
197+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test2", Value = 1 });
198+
var array = new DbParameter[2];
199+
m_parameterCollection.CopyTo(array, 0);
200+
Assert.Same(array[0], m_parameterCollection[0]);
201+
Assert.Same(array[1], m_parameterCollection[1]);
202+
}
203+
204+
[Fact]
205+
public void CopyToIndex()
206+
{
207+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test1", Value = 0 });
208+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test2", Value = 1 });
209+
var array = new DbParameter[4];
210+
m_parameterCollection.CopyTo(array, 1);
211+
Assert.Null(array[0]);
212+
Assert.Same(array[1], m_parameterCollection[0]);
213+
Assert.Same(array[2], m_parameterCollection[1]);
214+
Assert.Null(array[3]);
215+
}
216+
217+
[Fact]
218+
public void CopyToNullArray()
219+
{
220+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test1", Value = 0 });
221+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test2", Value = 1 });
222+
Assert.Throws<ArgumentNullException>(() => m_parameterCollection.CopyTo(null, 0));
223+
}
224+
225+
[Fact]
226+
public void CopyToSmallArray()
227+
{
228+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test1", Value = 0 });
229+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test2", Value = 1 });
230+
Assert.Throws<ArgumentException>(() => m_parameterCollection.CopyTo(new DbParameter[1], 0));
231+
}
232+
233+
[Fact]
234+
public void CopyToIndexOutOfRange()
235+
{
236+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test1", Value = 0 });
237+
m_parameterCollection.Add(new MySqlParameter { ParameterName = "@Test2", Value = 1 });
238+
Assert.Throws<ArgumentException>(() => m_parameterCollection.CopyTo(new DbParameter[2], 3));
239+
}
240+
192241
MySqlCommand m_command;
193242
MySqlParameterCollection m_parameterCollection;
194243
}

0 commit comments

Comments
 (0)