2 // SqlParameterTest.cs - NUnit Test Cases for testing the
5 // Senganal T (tsenganal@novell.com)
6 // Amit Biswas (amit@amitbiswas.com)
7 // Gert Driesen (drieseng@users.sourceforge.net)
9 // Copyright (c) 2004 Novell Inc., and the individuals listed
10 // on the ChangeLog entries.
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using System.Data.Common;
35 using System.Data.SqlClient;
36 using System.Data.SqlTypes;
40 using NUnit.Framework;
42 namespace MonoTests.System.Data.SqlClient
45 public class SqlParameterTest
48 public void Constructor1 ()
50 SqlParameter p = new SqlParameter ();
51 Assert.AreEqual (DbType.String, p.DbType, "DbType");
52 Assert.AreEqual (ParameterDirection.Input, p.Direction, "Direction");
53 Assert.IsFalse (p.IsNullable, "IsNullable");
54 Assert.AreEqual (0, p.LocaleId, "LocaleId");
55 Assert.AreEqual (string.Empty, p.ParameterName, "ParameterName");
56 Assert.AreEqual (0, p.Precision, "Precision");
57 Assert.AreEqual (0, p.Scale, "Scale");
58 Assert.AreEqual (0, p.Size, "Size");
59 Assert.AreEqual (string.Empty, p.SourceColumn, "SourceColumn");
60 Assert.IsFalse (p.SourceColumnNullMapping, "SourceColumnNullMapping");
61 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "SourceVersion");
62 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "SqlDbType");
63 Assert.IsNull (p.SqlValue, "SqlValue");
64 Assert.IsNull (p.Value, "Value");
65 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionDatabase, "XmlSchemaCollectionDatabase");
66 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionName, "XmlSchemaCollectionName");
67 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionOwningSchema, "XmlSchemaCollectionOwningSchema");
71 public void Constructor2_Value_DateTime ()
73 DateTime value = new DateTime (2004, 8, 24);
75 SqlParameter p = new SqlParameter ("address", value);
76 Assert.AreEqual (DbType.DateTime, p.DbType, "B:DbType");
77 Assert.AreEqual (ParameterDirection.Input, p.Direction, "B:Direction");
78 Assert.IsFalse (p.IsNullable, "B:IsNullable");
79 Assert.AreEqual (0, p.LocaleId, "B:LocaleId");
80 Assert.AreEqual ("address", p.ParameterName, "B:ParameterName");
81 Assert.AreEqual (0, p.Precision, "B:Precision");
82 Assert.AreEqual (0, p.Scale, "B:Scale");
83 //Assert.AreEqual (0, p.Size, "B:Size");
84 Assert.AreEqual (string.Empty, p.SourceColumn, "B:SourceColumn");
85 Assert.IsFalse (p.SourceColumnNullMapping, "B:SourceColumnNullMapping");
86 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "B:SourceVersion");
87 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "B:SqlDbType");
89 //Assert.AreEqual (new SqlDateTime (value), p.SqlValue, "B:SqlValue");
90 Assert.AreEqual (value, p.Value, "B:Value");
91 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionDatabase, "B:XmlSchemaCollectionDatabase");
92 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionName, "B:XmlSchemaCollectionName");
93 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionOwningSchema, "B:XmlSchemaCollectionOwningSchema");
97 public void Constructor2_Value_DBNull ()
99 SqlParameter p = new SqlParameter ("address", DBNull.Value);
100 Assert.AreEqual (DbType.String, p.DbType, "B:DbType");
101 Assert.AreEqual (ParameterDirection.Input, p.Direction, "B:Direction");
102 Assert.IsFalse (p.IsNullable, "B:IsNullable");
103 Assert.AreEqual (0, p.LocaleId, "B:LocaleId");
104 Assert.AreEqual ("address", p.ParameterName, "B:ParameterName");
105 Assert.AreEqual (0, p.Precision, "B:Precision");
106 Assert.AreEqual (0, p.Scale, "B:Scale");
107 Assert.AreEqual (0, p.Size, "B:Size");
108 Assert.AreEqual (string.Empty, p.SourceColumn, "B:SourceColumn");
109 Assert.IsFalse (p.SourceColumnNullMapping, "B:SourceColumnNullMapping");
110 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "B:SourceVersion");
111 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "B:SqlDbType");
113 //Assert.AreEqual (SqlString.Null, p.SqlValue, "B:SqlValue");
114 Assert.AreEqual (DBNull.Value, p.Value, "B:Value");
115 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionDatabase, "B:XmlSchemaCollectionDatabase");
116 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionName, "B:XmlSchemaCollectionName");
117 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionOwningSchema, "B:XmlSchemaCollectionOwningSchema");
121 public void Constructor2_Value_Null ()
123 SqlParameter p = new SqlParameter ("address", (Object) null);
124 Assert.AreEqual (DbType.String, p.DbType, "A:DbType");
125 Assert.AreEqual (ParameterDirection.Input, p.Direction, "A:Direction");
126 Assert.IsFalse (p.IsNullable, "A:IsNullable");
127 Assert.AreEqual (0, p.LocaleId, "A:LocaleId");
128 Assert.AreEqual ("address", p.ParameterName, "A:ParameterName");
129 Assert.AreEqual (0, p.Precision, "A:Precision");
130 Assert.AreEqual (0, p.Scale, "A:Scale");
131 Assert.AreEqual (0, p.Size, "A:Size");
132 Assert.AreEqual (string.Empty, p.SourceColumn, "A:SourceColumn");
133 Assert.IsFalse (p.SourceColumnNullMapping, "A:SourceColumnNullMapping");
134 Assert.AreEqual (DataRowVersion.Current, p.SourceVersion, "A:SourceVersion");
135 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "A:SqlDbType");
136 Assert.IsNull (p.SqlValue, "A:SqlValue");
137 Assert.IsNull (p.Value, "A:Value");
138 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionDatabase, "A:XmlSchemaCollectionDatabase");
139 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionName, "A:XmlSchemaCollectionName");
140 Assert.AreEqual (string.Empty, p.XmlSchemaCollectionOwningSchema, "A:XmlSchemaCollectionOwningSchema");
143 [Test] // .ctor (String, SqlDbType, Int32, ParameterDirection, Byte, Byte, String, DataRowVersion, Boolean, Object, String, String, String)
144 public void Constructor7 ()
146 SqlParameter p1 = new SqlParameter ("p1Name", SqlDbType.VarChar, 20,
147 ParameterDirection.InputOutput, 0, 0,
148 "srcCol", DataRowVersion.Original, false,
149 "foo", "database", "schema", "name");
150 Assert.AreEqual (DbType.AnsiString, p1.DbType, "DbType");
151 Assert.AreEqual (ParameterDirection.InputOutput, p1.Direction, "Direction");
152 Assert.AreEqual (false, p1.IsNullable, "IsNullable");
153 //Assert.AreEqual (999, p1.LocaleId, "#");
154 Assert.AreEqual ("p1Name", p1.ParameterName, "ParameterName");
155 Assert.AreEqual (0, p1.Precision, "Precision");
156 Assert.AreEqual (0, p1.Scale, "Scale");
157 Assert.AreEqual (20, p1.Size, "Size");
158 Assert.AreEqual ("srcCol", p1.SourceColumn, "SourceColumn");
159 Assert.AreEqual (false, p1.SourceColumnNullMapping, "SourceColumnNullMapping");
160 Assert.AreEqual (DataRowVersion.Original, p1.SourceVersion, "SourceVersion");
161 Assert.AreEqual (SqlDbType.VarChar, p1.SqlDbType, "SqlDbType");
162 //Assert.AreEqual (3210, p1.SqlValue, "#");
163 Assert.AreEqual ("foo", p1.Value, "Value");
164 Assert.AreEqual ("database", p1.XmlSchemaCollectionDatabase, "XmlSchemaCollectionDatabase");
165 Assert.AreEqual ("name", p1.XmlSchemaCollectionName, "XmlSchemaCollectionName");
166 Assert.AreEqual ("schema", p1.XmlSchemaCollectionOwningSchema, "XmlSchemaCollectionOwningSchema");
170 public void CompareInfo ()
172 SqlParameter parameter = new SqlParameter ();
173 Assert.AreEqual (SqlCompareOptions.None, parameter.CompareInfo, "#1");
174 parameter.CompareInfo = SqlCompareOptions.IgnoreNonSpace;
175 Assert.AreEqual (SqlCompareOptions.IgnoreNonSpace, parameter.CompareInfo, "#2");
179 public void InferType_Byte ()
183 SqlParameter param = new SqlParameter ();
185 Assert.AreEqual (SqlDbType.TinyInt, param.SqlDbType, "#1");
186 Assert.AreEqual (DbType.Byte, param.DbType, "#2");
190 public void InferType_ByteArray ()
192 Byte [] value = new Byte [] { 0x0a, 0x0d };
194 SqlParameter param = new SqlParameter ();
196 Assert.AreEqual (SqlDbType.VarBinary, param.SqlDbType, "#1");
197 Assert.AreEqual (DbType.Binary, param.DbType, "#2");
201 [Category ("NotWorking")]
202 public void InferType_Char ()
206 String string_value = "X";
208 SqlParameter p = new SqlParameter ();
210 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#A:SqlDbType");
211 Assert.AreEqual (DbType.String, p.DbType, "#A:DbType");
212 Assert.AreEqual (string_value, p.Value, "#A:Value");
214 p = new SqlParameter ();
216 Assert.AreEqual (value, p.Value, "#B:Value1");
217 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#B:SqlDbType");
218 Assert.AreEqual (string_value, p.Value, "#B:Value2");
220 p = new SqlParameter ();
222 Assert.AreEqual (value, p.Value, "#C:Value1");
223 Assert.AreEqual (DbType.String, p.DbType, "#C:DbType");
224 Assert.AreEqual (string_value, p.Value, "#C:Value2");
226 p = new SqlParameter ("name", value);
227 Assert.AreEqual (value, p.Value, "#D:Value1");
228 Assert.AreEqual (DbType.String, p.DbType, "#D:DbType");
229 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#D:SqlDbType");
230 Assert.AreEqual (string_value, p.Value, "#D:Value2");
232 p = new SqlParameter ("name", 5);
234 Assert.AreEqual (value, p.Value, "#E:Value1");
235 Assert.AreEqual (DbType.String, p.DbType, "#E:DbType");
236 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#E:SqlDbType");
237 Assert.AreEqual (string_value, p.Value, "#E:Value2");
239 p = new SqlParameter ("name", SqlDbType.NVarChar);
241 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#F:SqlDbType");
242 Assert.AreEqual (value, p.Value, "#F:Value");
246 [Category ("NotWorking")]
247 public void InferType_CharArray ()
249 Char [] value = new Char [] { 'A', 'X' };
251 String string_value = "AX";
253 SqlParameter p = new SqlParameter ();
255 Assert.AreEqual (value, p.Value, "#A:Value1");
256 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#A:SqlDbType");
257 Assert.AreEqual (DbType.String, p.DbType, "#A:DbType");
258 Assert.AreEqual (string_value, p.Value, "#A:Value2");
260 p = new SqlParameter ();
262 Assert.AreEqual (value, p.Value, "#B:Value1");
263 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#B:SqlDbType");
264 Assert.AreEqual (string_value, p.Value, "#B:Value2");
266 p = new SqlParameter ();
268 Assert.AreEqual (value, p.Value, "#C:Value1");
269 Assert.AreEqual (DbType.String, p.DbType, "#C:DbType");
270 Assert.AreEqual (string_value, p.Value, "#C:Value2");
272 p = new SqlParameter ("name", value);
273 Assert.AreEqual (value, p.Value, "#D:Value1");
274 Assert.AreEqual (DbType.String, p.DbType, "#D:DbType");
275 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#D:SqlDbType");
276 Assert.AreEqual (string_value, p.Value, "#D:Value2");
278 p = new SqlParameter ("name", 5);
280 Assert.AreEqual (value, p.Value, "#E:Value1");
281 Assert.AreEqual (DbType.String, p.DbType, "#E:DbType");
282 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#E:SqlDbType");
283 Assert.AreEqual (string_value, p.Value, "#E:Value2");
285 p = new SqlParameter ("name", SqlDbType.NVarChar);
287 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#F:SqlDbType");
288 Assert.AreEqual (value, p.Value, "#F:Value");
292 public void InferType_DateTime ()
297 value = DateTime.Now;
298 param = new SqlParameter ();
300 Assert.AreEqual (SqlDbType.DateTime, param.SqlDbType, "#A1");
301 Assert.AreEqual (DbType.DateTime, param.DbType, "#A2");
303 value = DateTime.Now;
304 param = new SqlParameter ();
306 Assert.AreEqual (SqlDbType.DateTime, param.SqlDbType, "#B1");
307 Assert.AreEqual (DbType.DateTime, param.DbType, "#B2");
309 value = new DateTime (1973, 8, 13);
310 param = new SqlParameter ();
312 Assert.AreEqual (SqlDbType.DateTime, param.SqlDbType, "#C1");
313 Assert.AreEqual (DbType.DateTime, param.DbType, "#C2");
317 public void InferType_Decimal ()
322 value = Decimal.MaxValue;
323 param = new SqlParameter ();
325 Assert.AreEqual (SqlDbType.Decimal, param.SqlDbType, "#A1");
326 Assert.AreEqual (DbType.Decimal, param.DbType, "#A2");
328 value = Decimal.MinValue;
329 param = new SqlParameter ();
331 Assert.AreEqual (SqlDbType.Decimal, param.SqlDbType, "#B1");
332 Assert.AreEqual (DbType.Decimal, param.DbType, "#B2");
335 param = new SqlParameter ();
337 Assert.AreEqual (SqlDbType.Decimal, param.SqlDbType, "#C1");
338 Assert.AreEqual (DbType.Decimal, param.DbType, "#C2");
342 public void InferType_Double ()
347 value = Double.MaxValue;
348 param = new SqlParameter ();
350 Assert.AreEqual (SqlDbType.Float, param.SqlDbType, "#A1");
351 Assert.AreEqual (DbType.Double, param.DbType, "#A2");
353 value = Double.MinValue;
354 param = new SqlParameter ();
356 Assert.AreEqual (SqlDbType.Float, param.SqlDbType, "#B1");
357 Assert.AreEqual (DbType.Double, param.DbType, "#B2");
360 param = new SqlParameter ();
362 Assert.AreEqual (SqlDbType.Float, param.SqlDbType, "#C1");
363 Assert.AreEqual (DbType.Double, param.DbType, "#C2");
367 public void InferType_Enum ()
371 param = new SqlParameter ();
372 param.Value = ByteEnum.A;
373 Assert.AreEqual (SqlDbType.TinyInt, param.SqlDbType, "#A1");
374 Assert.AreEqual (DbType.Byte, param.DbType, "#A2");
376 param = new SqlParameter ();
377 param.Value = Int64Enum.A;
378 Assert.AreEqual (SqlDbType.BigInt, param.SqlDbType, "#B1");
379 Assert.AreEqual (DbType.Int64, param.DbType, "#B2");
383 public void InferType_Guid ()
385 Guid value = Guid.NewGuid ();
387 SqlParameter param = new SqlParameter ();
389 Assert.AreEqual (SqlDbType.UniqueIdentifier, param.SqlDbType, "#1");
390 Assert.AreEqual (DbType.Guid, param.DbType, "#2");
394 public void InferType_Int16 ()
399 value = Int16.MaxValue;
400 param = new SqlParameter ();
402 Assert.AreEqual (SqlDbType.SmallInt, param.SqlDbType, "#A1");
403 Assert.AreEqual (DbType.Int16, param.DbType, "#A2");
405 value = Int16.MinValue;
406 param = new SqlParameter ();
408 Assert.AreEqual (SqlDbType.SmallInt, param.SqlDbType, "#B1");
409 Assert.AreEqual (DbType.Int16, param.DbType, "#B2");
412 param = new SqlParameter ();
414 Assert.AreEqual (SqlDbType.SmallInt, param.SqlDbType, "#C1");
415 Assert.AreEqual (DbType.Int16, param.DbType, "#C2");
419 public void InferType_Int32 ()
424 value = Int32.MaxValue;
425 param = new SqlParameter ();
427 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#A1");
428 Assert.AreEqual (DbType.Int32, param.DbType, "#A2");
430 value = Int32.MinValue;
431 param = new SqlParameter ();
433 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#B1");
434 Assert.AreEqual (DbType.Int32, param.DbType, "#B2");
437 param = new SqlParameter ();
439 Assert.AreEqual (SqlDbType.Int, param.SqlDbType, "#C1");
440 Assert.AreEqual (DbType.Int32, param.DbType, "#C2");
444 public void InferType_Int64 ()
449 value = Int64.MaxValue;
450 param = new SqlParameter ();
452 Assert.AreEqual (SqlDbType.BigInt, param.SqlDbType, "#A1");
453 Assert.AreEqual (DbType.Int64, param.DbType, "#A2");
455 value = Int64.MinValue;
456 param = new SqlParameter ();
458 Assert.AreEqual (SqlDbType.BigInt, param.SqlDbType, "#B1");
459 Assert.AreEqual (DbType.Int64, param.DbType, "#B2");
462 param = new SqlParameter ();
464 Assert.AreEqual (SqlDbType.BigInt, param.SqlDbType, "#C1");
465 Assert.AreEqual (DbType.Int64, param.DbType, "#C2");
469 [Category ("NotWorking")]
470 public void InferType_Invalid ()
472 object [] notsupported = new object [] {
480 SqlParameter param = new SqlParameter ();
482 for (int i = 0; i < notsupported.Length; i++) {
483 param.Value = notsupported [i];
485 SqlDbType type = param.SqlDbType;
486 Assert.Fail ("#A1:" + i + " (" + type + ")");
487 } catch (ArgumentException ex) {
488 // The parameter data type of ... is invalid
489 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
490 Assert.IsNull (ex.InnerException, "#A3");
491 Assert.IsNotNull (ex.Message, "#A4");
492 Assert.IsNull (ex.ParamName, "#A5");
496 DbType type = param.DbType;
497 Assert.Fail ("#B1:" + i + " (" + type + ")");
498 } catch (ArgumentException ex) {
499 // The parameter data type of ... is invalid
500 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
501 Assert.IsNull (ex.InnerException, "#B3");
502 Assert.IsNotNull (ex.Message, "#B4");
503 Assert.IsNull (ex.ParamName, "#B5");
509 public void InferType_Object ()
511 Object value = new Object ();
513 SqlParameter param = new SqlParameter ();
515 Assert.AreEqual (SqlDbType.Variant, param.SqlDbType, "#1");
516 Assert.AreEqual (DbType.Object, param.DbType, "#2");
520 public void InferType_Single ()
522 Single value = Single.MaxValue;
524 SqlParameter param = new SqlParameter ();
526 Assert.AreEqual (SqlDbType.Real, param.SqlDbType, "#1");
527 Assert.AreEqual (DbType.Single, param.DbType, "#2");
531 public void InferType_String ()
533 String value = "some text";
535 SqlParameter param = new SqlParameter ();
537 Assert.AreEqual (SqlDbType.NVarChar, param.SqlDbType, "#1");
538 Assert.AreEqual (DbType.String, param.DbType, "#2");
542 [Category ("NotWorking")]
543 public void InferType_TimeSpan ()
545 TimeSpan value = new TimeSpan (4, 6, 23);
547 SqlParameter param = new SqlParameter ();
549 Assert.AreEqual (SqlDbType.Time, param.SqlDbType, "#1");
550 Assert.AreEqual (DbType.Time, param.DbType, "#2");
554 public void LocaleId ()
556 SqlParameter parameter = new SqlParameter ();
557 Assert.AreEqual (0, parameter.LocaleId, "#1");
558 parameter.LocaleId = 15;
559 Assert.AreEqual(15, parameter.LocaleId, "#2");
562 [Test] // bug #320196
563 public void ParameterNullTest ()
565 SqlParameter param = new SqlParameter ("param", SqlDbType.Decimal);
566 Assert.AreEqual (0, param.Scale, "#A1");
567 param.Value = DBNull.Value;
568 Assert.AreEqual (0, param.Scale, "#A2");
570 param = new SqlParameter ("param", SqlDbType.Int);
571 Assert.AreEqual (0, param.Scale, "#B1");
572 param.Value = DBNull.Value;
573 Assert.AreEqual (0, param.Scale, "#B2");
577 public void ParameterType ()
581 // If Type is not set, then type is inferred from the value
582 // assigned. The Type should be inferred everytime Value is assigned
583 // If value is null or DBNull, then the current Type should be reset to NVarChar.
584 p = new SqlParameter ();
585 Assert.AreEqual (DbType.String, p.DbType, "#A1");
586 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#A2");
587 p.Value = DBNull.Value;
588 Assert.AreEqual (DbType.String, p.DbType, "#B1");
589 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#B2");
591 Assert.AreEqual (DbType.Int32, p.DbType, "#C1");
592 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#C2");
593 p.Value = DBNull.Value;
594 Assert.AreEqual (DbType.String, p.DbType, "#D1");
595 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#D2");
596 p.Value = new byte [] { 0x0a };
597 Assert.AreEqual (DbType.Binary, p.DbType, "#E1");
598 Assert.AreEqual (SqlDbType.VarBinary, p.SqlDbType, "#E2");
600 Assert.AreEqual (DbType.String, p.DbType, "#F1");
601 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#F2");
602 p.Value = DateTime.Now;
603 Assert.AreEqual (DbType.DateTime, p.DbType, "#G1");
604 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#G2");
606 Assert.AreEqual (DbType.String, p.DbType, "#H1");
607 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#H2");
609 // If DbType is set, then the SqlDbType should not be
610 // inferred from the value assigned.
611 p = new SqlParameter ();
612 p.DbType = DbType.DateTime;
613 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#I1");
615 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#I2");
617 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#I3");
618 p.Value = DBNull.Value;
619 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#I4");
621 // If SqlDbType is set, then the DbType should not be
622 // inferred from the value assigned.
623 p = new SqlParameter ();
624 p.SqlDbType = SqlDbType.VarBinary;
625 Assert.AreEqual (SqlDbType.VarBinary, p.SqlDbType, "#J1");
627 Assert.AreEqual (SqlDbType.VarBinary, p.SqlDbType, "#J2");
629 Assert.AreEqual (SqlDbType.VarBinary, p.SqlDbType, "#J3");
630 p.Value = DBNull.Value;
631 Assert.AreEqual (SqlDbType.VarBinary, p.SqlDbType, "#J4");
635 public void InferType_Boolean ()
641 param = new SqlParameter ();
643 Assert.AreEqual (SqlDbType.Bit, param.SqlDbType, "#A1");
644 Assert.AreEqual (DbType.Boolean, param.DbType, "#A2");
647 param = new SqlParameter ();
649 Assert.AreEqual (SqlDbType.Bit, param.SqlDbType, "#B1");
650 Assert.AreEqual (DbType.Boolean, param.DbType, "#B2");
654 public void ParameterName ()
656 SqlParameter p = new SqlParameter ();
657 p.ParameterName = "name";
658 Assert.AreEqual ("name", p.ParameterName, "#A:ParameterName");
659 Assert.AreEqual (string.Empty, p.SourceColumn, "#A:SourceColumn");
661 p.ParameterName = null;
662 Assert.AreEqual (string.Empty, p.ParameterName, "#B:ParameterName");
663 Assert.AreEqual (string.Empty, p.SourceColumn, "#B:SourceColumn");
665 p.ParameterName = " ";
666 Assert.AreEqual (" ", p.ParameterName, "#C:ParameterName");
667 Assert.AreEqual (string.Empty, p.SourceColumn, "#C:SourceColumn");
669 p.ParameterName = " name ";
670 Assert.AreEqual (" name ", p.ParameterName, "#D:ParameterName");
671 Assert.AreEqual (string.Empty, p.SourceColumn, "#D:SourceColumn");
673 p.ParameterName = string.Empty;
674 Assert.AreEqual (string.Empty, p.ParameterName, "#E:ParameterName");
675 Assert.AreEqual (string.Empty, p.SourceColumn, "#E:SourceColumn");
679 public void ResetDbType ()
683 //Parameter with an assigned value but no DbType specified
684 p = new SqlParameter ("foo", 42);
686 Assert.AreEqual (DbType.Int32, p.DbType, "#A:DbType");
687 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#A:SqlDbType");
688 Assert.AreEqual (42, p.Value, "#A:Value");
690 p.DbType = DbType.DateTime; //assigning a DbType
691 Assert.AreEqual (DbType.DateTime, p.DbType, "#B:DbType1");
692 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#B:SqlDbType1");
694 Assert.AreEqual (DbType.Int32, p.DbType, "#B:DbType2");
695 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#B:SqlDbtype2");
697 //Parameter with an assigned SqlDbType but no specified value
698 p = new SqlParameter ("foo", SqlDbType.Int);
700 Assert.AreEqual (DbType.String, p.DbType, "#C:DbType");
701 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#C:SqlDbType");
703 p.DbType = DbType.DateTime; //assigning a SqlDbType
704 Assert.AreEqual (DbType.DateTime, p.DbType, "#D:DbType1");
705 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#D:SqlDbType1");
707 Assert.AreEqual (DbType.String, p.DbType, "#D:DbType2");
708 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#D:SqlDbType2");
710 p = new SqlParameter ();
711 p.Value = DateTime.MaxValue;
712 Assert.AreEqual (DbType.DateTime, p.DbType, "#E:DbType1");
713 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#E:SqlDbType1");
716 Assert.AreEqual (DbType.String, p.DbType, "#E:DbType2");
717 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#E:SqlDbType2");
719 p = new SqlParameter ("foo", SqlDbType.VarChar);
720 p.Value = DateTime.MaxValue;
722 Assert.AreEqual (DbType.DateTime, p.DbType, "#F:DbType");
723 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#F:SqlDbType");
724 Assert.AreEqual (DateTime.MaxValue, p.Value, "#F:Value");
726 p = new SqlParameter ("foo", SqlDbType.VarChar);
727 p.Value = DBNull.Value;
729 Assert.AreEqual (DbType.String, p.DbType, "#G:DbType");
730 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#G:SqlDbType");
731 Assert.AreEqual (DBNull.Value, p.Value, "#G:Value");
733 p = new SqlParameter ("foo", SqlDbType.VarChar);
736 Assert.AreEqual (DbType.String, p.DbType, "#G:DbType");
737 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#G:SqlDbType");
738 Assert.IsNull (p.Value, "#G:Value");
742 public void ResetSqlDbType ()
744 //Parameter with an assigned value but no SqlDbType specified
745 SqlParameter p1 = new SqlParameter ("foo", 42);
746 Assert.AreEqual (42, p1.Value, "#1");
747 Assert.AreEqual (DbType.Int32, p1.DbType, "#2");
748 Assert.AreEqual (SqlDbType.Int, p1.SqlDbType, "#3");
750 p1.ResetSqlDbType ();
751 Assert.AreEqual (DbType.Int32, p1.DbType, "#4 The parameter with value 42 must have DbType as Int32");
752 Assert.AreEqual (SqlDbType.Int, p1.SqlDbType, "#5 The parameter with value 42 must have SqlDbType as Int");
754 p1.SqlDbType = SqlDbType.DateTime; //assigning a SqlDbType
755 Assert.AreEqual (DbType.DateTime, p1.DbType, "#6");
756 Assert.AreEqual (SqlDbType.DateTime, p1.SqlDbType, "#7");
757 p1.ResetSqlDbType (); //Resetting SqlDbType
758 Assert.AreEqual (DbType.Int32, p1.DbType, "#8 Resetting SqlDbType must infer the type from the value");
759 Assert.AreEqual (SqlDbType.Int, p1.SqlDbType, "#9 Resetting SqlDbType must infer the type from the value");
761 //Parameter with an assigned SqlDbType but no specified value
762 SqlParameter p2 = new SqlParameter ("foo", SqlDbType.Int);
763 Assert.AreEqual (null, p2.Value, "#10");
764 Assert.AreEqual (DbType.Int32, p2.DbType, "#11");
765 Assert.AreEqual (SqlDbType.Int, p2.SqlDbType, "#12");
767 //Although a SqlDbType is specified, calling ResetSqlDbType resets
768 //the SqlDbType and DbType properties to default values
769 p2.ResetSqlDbType ();
770 Assert.AreEqual (DbType.String, p2.DbType, "#13 Resetting SqlDbType must infer the type from the value");
771 Assert.AreEqual (SqlDbType.NVarChar, p2.SqlDbType, "#14 Resetting SqlDbType must infer the type from the value");
773 p2.SqlDbType = SqlDbType.DateTime; //assigning a SqlDbType
774 Assert.AreEqual (DbType.DateTime, p2.DbType, "#15");
775 Assert.AreEqual (SqlDbType.DateTime, p2.SqlDbType, "#16");
776 p2.ResetSqlDbType (); //Resetting SqlDbType
777 Assert.AreEqual (DbType.String, p2.DbType, "#17 Resetting SqlDbType must infer the type from the value");
778 Assert.AreEqual (SqlDbType.NVarChar, p2.SqlDbType, "#18 Resetting SqlDbType must infer the type from the value");
782 public void SourceColumn ()
784 SqlParameter p = new SqlParameter ();
785 p.SourceColumn = "name";
786 Assert.AreEqual (string.Empty, p.ParameterName, "#A:ParameterName");
787 Assert.AreEqual ("name", p.SourceColumn, "#A:SourceColumn");
789 p.SourceColumn = null;
790 Assert.AreEqual (string.Empty, p.ParameterName, "#B:ParameterName");
791 Assert.AreEqual (string.Empty, p.SourceColumn, "#B:SourceColumn");
793 p.SourceColumn = " ";
794 Assert.AreEqual (string.Empty, p.ParameterName, "#C:ParameterName");
795 Assert.AreEqual (" ", p.SourceColumn, "#C:SourceColumn");
797 p.SourceColumn = " name ";
798 Assert.AreEqual (string.Empty, p.ParameterName, "#D:ParameterName");
799 Assert.AreEqual (" name ", p.SourceColumn, "#D:SourceColumn");
801 p.SourceColumn = string.Empty;
802 Assert.AreEqual (string.Empty, p.ParameterName, "#E:ParameterName");
803 Assert.AreEqual (string.Empty, p.SourceColumn, "#E:SourceColumn");
807 public void SourceColumnNullMapping ()
809 SqlParameter p = new SqlParameter ();
810 Assert.IsFalse (p.SourceColumnNullMapping, "#1");
811 p.SourceColumnNullMapping = true;
812 Assert.IsTrue (p.SourceColumnNullMapping, "#2");
813 p.SourceColumnNullMapping = false;
814 Assert.IsFalse (p.SourceColumnNullMapping, "#3");
818 public void SqlDbTypeTest ()
820 SqlParameter p = new SqlParameter ("zipcode", 3510);
821 p.SqlDbType = SqlDbType.DateTime;
822 Assert.AreEqual (DbType.DateTime, p.DbType, "#A:DbType");
823 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#A:SqlDbType");
824 Assert.AreEqual (3510, p.Value, "#A:Value");
825 p.SqlDbType = SqlDbType.VarChar;
826 Assert.AreEqual (DbType.AnsiString, p.DbType, "#B:DbType");
827 Assert.AreEqual (SqlDbType.VarChar, p.SqlDbType, "#B:SqlDbType");
828 Assert.AreEqual (3510, p.Value, "#B:Value");
832 public void SqlDbTypeTest_Value_Invalid ()
834 SqlParameter p = new SqlParameter ("zipcode", 3510);
836 p.SqlDbType = (SqlDbType) 666;
838 } catch (ArgumentOutOfRangeException ex) {
839 // The SqlDbType enumeration value, 666, is
841 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#2");
842 Assert.IsNull (ex.InnerException, "#3");
843 Assert.IsNotNull (ex.Message, "#4");
844 Assert.IsTrue (ex.Message.IndexOf ("666") != -1, "#5:" + ex.Message);
845 Assert.AreEqual ("SqlDbType", ex.ParamName, "#6");
850 public void SqlValue ()
852 SqlParameter parameter = new SqlParameter ();
853 Assert.IsNull (parameter.SqlValue, "#A1");
858 parameter.SqlValue = value;
859 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "String:SqlDbType");
860 Assert.IsNotNull (parameter.SqlValue, "String:SqlValue1");
861 Assert.AreEqual (typeof (SqlString), parameter.SqlValue.GetType (), "String:SqlValue2");
862 Assert.AreEqual (value, ((SqlString) parameter.SqlValue).Value, "String:SqlValue3");
863 Assert.AreEqual (value, parameter.Value, "String:Value");
866 parameter.SqlValue = value;
867 Assert.AreEqual (SqlDbType.Bit, parameter.SqlDbType, "Boolean:SqlDbType");
868 Assert.IsNotNull (parameter.SqlValue, "Boolean:SqlValue1");
869 Assert.AreEqual (typeof (SqlBoolean), parameter.SqlValue.GetType (), "Boolean:SqlValue2");
870 Assert.AreEqual (value, ((SqlBoolean) parameter.SqlValue).Value, "Boolean:SqlValue3");
871 Assert.AreEqual (value, parameter.Value, "Boolean:Value");
874 parameter.SqlValue = value;
875 Assert.AreEqual (SqlDbType.TinyInt, parameter.SqlDbType, "Boolean:SqlDbType");
876 Assert.IsNotNull (parameter.SqlValue, "Boolean:SqlValue1");
877 Assert.AreEqual (typeof (SqlByte), parameter.SqlValue.GetType (), "Boolean:SqlValue2");
878 Assert.AreEqual (value, ((SqlByte) parameter.SqlValue).Value, "Boolean:SqlValue3");
879 Assert.AreEqual (value, parameter.Value, "Boolean:Value");
881 value = new DateTime (2008, 6, 4);
882 parameter.SqlValue = value;
883 Assert.AreEqual (SqlDbType.DateTime, parameter.SqlDbType, "DateTime:SqlDbType");
884 Assert.IsNotNull (parameter.SqlValue, "DateTime:SqlValue1");
885 Assert.AreEqual (typeof (SqlDateTime), parameter.SqlValue.GetType (), "DateTime:SqlValue2");
886 Assert.AreEqual (value, ((SqlDateTime) parameter.SqlValue).Value, "DateTime:SqlValue3");
887 Assert.AreEqual (value, parameter.Value, "DateTime:Value");
889 value = Guid.NewGuid ();
890 parameter.SqlValue = value;
891 Assert.AreEqual (SqlDbType.UniqueIdentifier, parameter.SqlDbType, "Guid:SqlDbType");
892 Assert.IsNotNull (parameter.SqlValue, "Guid:SqlValue1");
893 Assert.AreEqual (typeof (SqlGuid), parameter.SqlValue.GetType (), "Guid:SqlValue2");
894 Assert.AreEqual (value, ((SqlGuid) parameter.SqlValue).Value, "Guid:SqlValue3");
895 Assert.AreEqual (value, parameter.Value, "Guid:Value");
898 parameter.SqlValue = value;
899 Assert.AreEqual (SqlDbType.SmallInt, parameter.SqlDbType, "Int16:SqlDbType");
900 Assert.IsNotNull (parameter.SqlValue, "Int16:SqlValue1");
901 Assert.AreEqual (typeof (SqlInt16), parameter.SqlValue.GetType (), "Int16:SqlValue2");
902 Assert.AreEqual (value, ((SqlInt16) parameter.SqlValue).Value, "Int16:SqlValue3");
903 Assert.AreEqual (value, parameter.Value, "Int16:Value");
906 parameter.SqlValue = value;
907 Assert.AreEqual (SqlDbType.Int, parameter.SqlDbType, "Int32:SqlDbType");
908 Assert.IsNotNull (parameter.SqlValue, "Int32:SqlValue1");
909 Assert.AreEqual (typeof (SqlInt32), parameter.SqlValue.GetType (), "Int32:SqlValue2");
910 Assert.AreEqual (value, ((SqlInt32) parameter.SqlValue).Value, "Int32:SqlValue3");
911 Assert.AreEqual (value, parameter.Value, "Int32:Value");
914 parameter.SqlValue = value;
915 Assert.AreEqual (SqlDbType.BigInt, parameter.SqlDbType, "Int64:SqlDbType");
916 Assert.IsNotNull (parameter.SqlValue, "Int64:SqlValue1");
917 Assert.AreEqual (typeof (SqlInt64), parameter.SqlValue.GetType (), "Int64:SqlValue2");
918 Assert.AreEqual (value, ((SqlInt64) parameter.SqlValue).Value, "Int64:SqlValue3");
919 Assert.AreEqual (value, parameter.Value, "Int64:Value");
921 parameter.SqlValue = 45.5D;
922 Assert.AreEqual (SqlDbType.Float, parameter.SqlDbType, "Double:SqlDbType");
923 Assert.IsNotNull (parameter.SqlValue, "Double:SqlValue1");
924 Assert.AreEqual (typeof (SqlDouble), parameter.SqlValue.GetType (), "Double:SqlValue2");
925 Assert.AreEqual (45.5D, ((SqlDouble) parameter.SqlValue).Value, "Double:SqlValue3");
926 Assert.AreEqual (45.5D, parameter.Value, "Double:Value");
929 parameter.SqlValue = value;
930 Assert.AreEqual (SqlDbType.Decimal, parameter.SqlDbType, "Decimal:SqlDbType");
931 Assert.IsNotNull (parameter.SqlValue, "Decimal:SqlValue1");
932 Assert.AreEqual (typeof (SqlDecimal), parameter.SqlValue.GetType (), "Decimal:SqlValue2");
933 Assert.AreEqual (value, ((SqlDecimal) parameter.SqlValue).Value, "Decimal:SqlValue3");
934 Assert.AreEqual (value, parameter.Value, "Decimal:Value");
937 parameter.SqlValue = value;
938 Assert.AreEqual (SqlDbType.Real, parameter.SqlDbType, "Decimal:SqlDbType");
939 Assert.IsNotNull (parameter.SqlValue, "Decimal:SqlValue1");
940 Assert.AreEqual (typeof (SqlSingle), parameter.SqlValue.GetType (), "Decimal:SqlValue2");
941 Assert.AreEqual (value, ((SqlSingle) parameter.SqlValue).Value, "Decimal:SqlValue3");
942 Assert.AreEqual (value, parameter.Value, "Decimal:Value");
944 value = new byte [] { 0x0d, 0x0a };
945 parameter.SqlValue = value;
946 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "Bytes:SqlDbType");
947 Assert.IsNotNull (parameter.SqlValue, "Bytes:SqlValue1");
948 Assert.AreEqual (typeof (SqlBinary), parameter.SqlValue.GetType (), "Bytes:SqlValue2");
949 Assert.AreEqual (value, ((SqlBinary) parameter.SqlValue).Value, "Bytes:SqlValue3");
950 Assert.AreEqual (value, parameter.Value, "Bytes:Value");
952 parameter = new SqlParameter ();
954 parameter.SqlValue = value;
955 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "Chars:SqlDbType");
956 Assert.IsNotNull (parameter.SqlValue, "Chars:SqlValue1");
957 Assert.AreEqual (typeof (SqlString), parameter.SqlValue.GetType (), "Chars:SqlValue2");
958 Assert.AreEqual ("X", ((SqlString) parameter.SqlValue).Value, "Chars:SqlValue3");
960 //Assert.AreEqual ("X", parameter.Value, "Chars:Value");
962 value = new char [] { 'X', 'A' };
963 parameter.SqlValue = value;
964 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "Chars:SqlDbType");
965 Assert.IsNotNull (parameter.SqlValue, "Chars:SqlValue1");
966 Assert.AreEqual (typeof (SqlString), parameter.SqlValue.GetType (), "Chars:SqlValue2");
967 Assert.AreEqual ("XA", ((SqlString) parameter.SqlValue).Value, "Chars:SqlValue3");
969 //Assert.AreEqual ("XA", parameter.Value, "Chars:Value");
973 public void SqlTypes_SqlBinary ()
975 SqlParameter parameter;
976 SqlBinary value = new SqlBinary (new byte [] { 0x0d, 0x0a });
978 parameter = new SqlParameter ();
979 parameter.SqlValue = value;
980 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "#A:SqlDbType");
981 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
982 Assert.AreEqual (value, parameter.Value, "#A:Value");
984 parameter = new SqlParameter ();
985 parameter.SqlValue = SqlBinary.Null;
986 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "#B:SqlDbType");
987 Assert.AreEqual (SqlBinary.Null, parameter.SqlValue, "#B:SqlValue");
988 Assert.AreEqual (SqlBinary.Null, parameter.Value, "#B:Value");
990 parameter = new SqlParameter ();
991 parameter.Value = value;
992 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "#C:SqlDbType");
993 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
994 Assert.AreEqual (value, parameter.Value, "#C:Value");
998 public void SqlTypes_SqlBoolean ()
1000 SqlParameter parameter;
1001 SqlBoolean value = new SqlBoolean (false);
1003 parameter = new SqlParameter ();
1004 parameter.SqlValue = value;
1005 Assert.AreEqual (SqlDbType.Bit, parameter.SqlDbType, "#A:SqlDbType");
1006 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1007 Assert.AreEqual (value, parameter.Value, "#A:Value");
1009 parameter = new SqlParameter ();
1010 parameter.SqlValue = SqlBoolean.Null;
1011 Assert.AreEqual (SqlDbType.Bit, parameter.SqlDbType, "#B:SqlDbType");
1012 Assert.AreEqual (SqlBoolean.Null, parameter.SqlValue, "#B:SqlValue");
1013 Assert.AreEqual (SqlBoolean.Null, parameter.Value, "#B:Value");
1015 parameter = new SqlParameter ();
1016 parameter.Value = value;
1017 Assert.AreEqual (SqlDbType.Bit, parameter.SqlDbType, "#C:SqlDbType");
1018 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1019 Assert.AreEqual (value, parameter.Value, "#C:Value");
1023 public void SqlTypes_SqlByte ()
1025 SqlParameter parameter;
1026 SqlByte value = new SqlByte (0x0d);
1028 parameter = new SqlParameter ();
1029 parameter.SqlValue = value;
1030 Assert.AreEqual (SqlDbType.TinyInt, parameter.SqlDbType, "#A:SqlDbType");
1031 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1032 Assert.AreEqual (value, parameter.Value, "#A:Value");
1034 parameter = new SqlParameter ();
1035 parameter.SqlValue = SqlByte.Null;
1036 Assert.AreEqual (SqlDbType.TinyInt, parameter.SqlDbType, "#B:SqlDbType");
1037 Assert.AreEqual (SqlByte.Null, parameter.SqlValue, "#B:SqlValue");
1038 Assert.AreEqual (SqlByte.Null, parameter.Value, "#B:Value");
1040 parameter = new SqlParameter ();
1041 parameter.Value = value;
1042 Assert.AreEqual (SqlDbType.TinyInt, parameter.SqlDbType, "#C:SqlDbType");
1043 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1044 Assert.AreEqual (value, parameter.Value, "#C:Value");
1048 [Category ("NotWorking")]
1049 // This doesn't work as SqlBytes are represented as SqlBinary
1050 public void SqlTypes_SqlBytes ()
1052 SqlParameter parameter;
1053 SqlBytes value = new SqlBytes (new byte [] { 0x0d, 0x0a });
1055 parameter = new SqlParameter ();
1056 parameter.SqlValue = value;
1057 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "#A:SqlDbType");
1058 Assert.AreSame (value, parameter.SqlValue, "#A:SqlValue");
1059 Assert.AreSame (value, parameter.Value, "#A:Value");
1061 parameter = new SqlParameter ();
1062 parameter.SqlValue = SqlBytes.Null;
1063 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "#B:SqlDbType");
1064 Assert.IsNotNull (parameter.SqlValue, "#B:SqlValue1");
1065 Assert.AreEqual (typeof (SqlBytes), parameter.SqlValue.GetType (), "#B:SqlValue2");
1066 Assert.IsTrue (((SqlBytes) parameter.SqlValue).IsNull, "#B:SqlValue3");
1067 Assert.IsNotNull (parameter.Value, "#B:Value1");
1068 Assert.AreEqual (typeof (SqlBytes), parameter.Value.GetType (), "#B:Value2");
1069 Assert.IsTrue (((SqlBytes) parameter.Value).IsNull, "#B:Value3");
1071 parameter = new SqlParameter ();
1072 parameter.Value = value;
1073 Assert.AreEqual (SqlDbType.VarBinary, parameter.SqlDbType, "#C:SqlDbType");
1074 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1075 Assert.AreEqual (value, parameter.Value, "#C:Value");
1079 [Category ("NotWorking")]
1080 // This doesn't work as SqlChars are represented as SqlString
1081 public void SqlTypes_SqlChars ()
1083 SqlParameter parameter;
1084 SqlChars value = new SqlChars (new char [] { 'X', 'A' });
1086 parameter = new SqlParameter ();
1087 parameter.SqlValue = value;
1088 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "#A:SqlDbType");
1089 Assert.AreSame (value, parameter.SqlValue, "#A:SqlValue");
1090 Assert.AreSame (value, parameter.Value, "#A:Value");
1092 parameter = new SqlParameter ();
1093 parameter.SqlValue = SqlChars.Null;
1094 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "#B:SqlDbType");
1095 Assert.IsNotNull (parameter.SqlValue, "#B:SqlValue1");
1096 Assert.AreEqual (typeof (SqlChars), parameter.SqlValue.GetType (), "#B:SqlValue2");
1097 Assert.IsTrue (((SqlChars) parameter.SqlValue).IsNull, "#B:SqlValue3");
1098 Assert.IsNotNull (parameter.Value, "#B:Value1");
1099 Assert.AreEqual (typeof (SqlChars), parameter.Value.GetType (), "#B:Value2");
1100 Assert.IsTrue (((SqlChars) parameter.Value).IsNull, "#B:Value3");
1102 parameter = new SqlParameter ();
1103 parameter.Value = value;
1104 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "#C:SqlDbType");
1105 Assert.AreSame (value, parameter.SqlValue, "#C:SqlValue");
1106 Assert.AreSame (value, parameter.Value, "#C:Value");
1110 public void SqlTypes_SqlDateTime ()
1112 SqlParameter parameter;
1113 SqlDateTime value = new SqlDateTime (DateTime.Now);
1115 parameter = new SqlParameter ();
1116 parameter.SqlValue = value;
1117 Assert.AreEqual (SqlDbType.DateTime, parameter.SqlDbType, "#A:SqlDbType");
1118 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1119 Assert.AreEqual (value, parameter.Value, "#A:Value");
1121 parameter = new SqlParameter ();
1122 parameter.SqlValue = SqlDateTime.Null;
1123 Assert.AreEqual (SqlDbType.DateTime, parameter.SqlDbType, "#B:SqlDbType");
1124 Assert.AreEqual (SqlDateTime.Null, parameter.SqlValue, "#B:SqlValue");
1125 Assert.AreEqual (SqlDateTime.Null, parameter.Value, "#B:Value");
1127 parameter = new SqlParameter ();
1128 parameter.Value = value;
1129 Assert.AreEqual (SqlDbType.DateTime, parameter.SqlDbType, "#C:SqlDbType");
1130 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1131 Assert.AreEqual (value, parameter.Value, "#C:Value");
1135 public void SqlTypes_SqlDecimal ()
1137 SqlParameter parameter;
1138 SqlDecimal value = new SqlDecimal (45m);
1140 parameter = new SqlParameter ();
1141 parameter.SqlValue = value;
1142 Assert.AreEqual (SqlDbType.Decimal, parameter.SqlDbType, "#A:SqlDbType");
1143 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1144 Assert.AreEqual (value, parameter.Value, "#A:Value");
1146 parameter = new SqlParameter ();
1147 parameter.SqlValue = SqlDecimal.Null;
1148 Assert.AreEqual (SqlDbType.Decimal, parameter.SqlDbType, "#B:SqlDbType");
1149 Assert.AreEqual (SqlDecimal.Null, parameter.SqlValue, "#B:SqlValue");
1150 Assert.AreEqual (SqlDecimal.Null, parameter.Value, "#B:Value");
1152 parameter = new SqlParameter ();
1153 parameter.Value = value;
1154 Assert.AreEqual (SqlDbType.Decimal, parameter.SqlDbType, "#C:SqlDbType");
1155 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1156 Assert.AreEqual (value, parameter.Value, "#C:Value");
1160 public void SqlTypes_SqlDouble ()
1162 SqlParameter parameter;
1163 SqlDouble value = new SqlDouble (4.5D);
1165 parameter = new SqlParameter ();
1166 parameter.SqlValue = value;
1167 Assert.AreEqual (SqlDbType.Float, parameter.SqlDbType, "#A:SqlDbType");
1168 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1169 Assert.AreEqual (value, parameter.Value, "#A:Value");
1171 parameter = new SqlParameter ();
1172 parameter.SqlValue = SqlDouble.Null;
1173 Assert.AreEqual (SqlDbType.Float, parameter.SqlDbType, "#B:SqlDbType");
1174 Assert.AreEqual (SqlDouble.Null, parameter.SqlValue, "#B:SqlValue");
1175 Assert.AreEqual (SqlDouble.Null, parameter.Value, "#B:Value");
1177 parameter = new SqlParameter ();
1178 parameter.Value = value;
1179 Assert.AreEqual (SqlDbType.Float, parameter.SqlDbType, "#C:SqlDbType");
1180 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1181 Assert.AreEqual (value, parameter.Value, "#C:Value");
1185 public void SqlTypes_SqlGuid ()
1187 SqlParameter parameter;
1188 SqlGuid value = new SqlGuid (Guid.NewGuid ());
1190 parameter = new SqlParameter ();
1191 parameter.SqlValue = value;
1192 Assert.AreEqual (SqlDbType.UniqueIdentifier, parameter.SqlDbType, "#A:SqlDbType");
1193 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1194 Assert.AreEqual (value, parameter.Value, "#A:Value");
1196 parameter = new SqlParameter ();
1197 parameter.SqlValue = SqlGuid.Null;
1198 Assert.AreEqual (SqlDbType.UniqueIdentifier, parameter.SqlDbType, "#B:SqlDbType");
1199 Assert.AreEqual (SqlGuid.Null, parameter.SqlValue, "#B:SqlValue");
1200 Assert.AreEqual (SqlGuid.Null, parameter.Value, "#B:Value");
1202 parameter = new SqlParameter ();
1203 parameter.Value = value;
1204 Assert.AreEqual (SqlDbType.UniqueIdentifier, parameter.SqlDbType, "#C:SqlDbType");
1205 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1206 Assert.AreEqual (value, parameter.Value, "#C:Value");
1210 public void SqlTypes_SqlInt16 ()
1212 SqlParameter parameter;
1213 SqlInt16 value = new SqlInt16 ((short) 5);
1215 parameter = new SqlParameter ();
1216 parameter.SqlValue = value;
1217 Assert.AreEqual (SqlDbType.SmallInt, parameter.SqlDbType, "#A:SqlDbType");
1218 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1219 Assert.AreEqual (value, parameter.Value, "#A:Value");
1221 parameter = new SqlParameter ();
1222 parameter.SqlValue = SqlInt16.Null;
1223 Assert.AreEqual (SqlDbType.SmallInt, parameter.SqlDbType, "#B:SqlDbType");
1224 Assert.AreEqual (SqlInt16.Null, parameter.SqlValue, "#B:SqlValue");
1225 Assert.AreEqual (SqlInt16.Null, parameter.Value, "#B:Value");
1227 parameter = new SqlParameter ();
1228 parameter.Value = value;
1229 Assert.AreEqual (SqlDbType.SmallInt, parameter.SqlDbType, "#C:SqlDbType");
1230 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1231 Assert.AreEqual (value, parameter.Value, "#C:Value");
1235 public void SqlTypes_SqlInt32 ()
1237 SqlParameter parameter;
1238 SqlInt32 value = new SqlInt32 (5);
1240 parameter = new SqlParameter ();
1241 parameter.SqlValue = value;
1242 Assert.AreEqual (SqlDbType.Int, parameter.SqlDbType, "#A:SqlDbType");
1243 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1244 Assert.AreEqual (value, parameter.Value, "#A:Value");
1246 parameter = new SqlParameter ();
1247 parameter.SqlValue = SqlInt32.Null;
1248 Assert.AreEqual (SqlDbType.Int, parameter.SqlDbType, "#B:SqlDbType");
1249 Assert.AreEqual (SqlInt32.Null, parameter.SqlValue, "#B:SqlValue");
1250 Assert.AreEqual (SqlInt32.Null, parameter.Value, "#B:Value");
1252 parameter = new SqlParameter ();
1253 parameter.Value = value;
1254 Assert.AreEqual (SqlDbType.Int, parameter.SqlDbType, "#C:SqlDbType");
1255 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1256 Assert.AreEqual (value, parameter.Value, "#C:Value");
1260 public void SqlTypes_SqlInt64 ()
1262 SqlParameter parameter;
1263 SqlInt64 value = new SqlInt64 (5L);
1265 parameter = new SqlParameter ();
1266 parameter.SqlValue = value;
1267 Assert.AreEqual (SqlDbType.BigInt, parameter.SqlDbType, "#A:SqlDbType");
1268 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1269 Assert.AreEqual (value, parameter.Value, "#A:Value");
1271 parameter = new SqlParameter ();
1272 parameter.SqlValue = SqlInt64.Null;
1273 Assert.AreEqual (SqlDbType.BigInt, parameter.SqlDbType, "#B:SqlDbType");
1274 Assert.AreEqual (SqlInt64.Null, parameter.SqlValue, "#B:SqlValue");
1275 Assert.AreEqual (SqlInt64.Null, parameter.Value, "#B:Value");
1277 parameter = new SqlParameter ();
1278 parameter.Value = value;
1279 Assert.AreEqual (SqlDbType.BigInt, parameter.SqlDbType, "#C:SqlDbType");
1280 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1281 Assert.AreEqual (value, parameter.Value, "#C:Value");
1285 public void SqlTypes_SqlMoney ()
1287 SqlParameter parameter;
1288 SqlMoney value = new SqlMoney (45m);
1290 parameter = new SqlParameter ();
1291 parameter.SqlValue = value;
1292 Assert.AreEqual (SqlDbType.Money, parameter.SqlDbType, "#A:SqlDbType");
1293 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1294 Assert.AreEqual (value, parameter.Value, "#A:Value");
1296 parameter = new SqlParameter ();
1297 parameter.SqlValue = SqlMoney.Null;
1298 Assert.AreEqual (SqlDbType.Money, parameter.SqlDbType, "#B:SqlDbType");
1299 Assert.AreEqual (SqlMoney.Null, parameter.SqlValue, "#B:SqlValue");
1300 Assert.AreEqual (SqlMoney.Null, parameter.Value, "#B:Value");
1302 parameter = new SqlParameter ();
1303 parameter.Value = value;
1304 Assert.AreEqual (SqlDbType.Money, parameter.SqlDbType, "#C:SqlDbType");
1305 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1306 Assert.AreEqual (value, parameter.Value, "#C:Value");
1310 public void SqlTypes_SqlSingle ()
1312 SqlParameter parameter;
1313 SqlSingle value = new SqlSingle (45f);
1315 parameter = new SqlParameter ();
1316 parameter.SqlValue = value;
1317 Assert.AreEqual (SqlDbType.Real, parameter.SqlDbType, "#A:SqlDbType");
1318 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1319 Assert.AreEqual (value, parameter.Value, "#A:Value");
1321 parameter = new SqlParameter ();
1322 parameter.SqlValue = SqlSingle.Null;
1323 Assert.AreEqual (SqlDbType.Real, parameter.SqlDbType, "#B:SqlDbType");
1324 Assert.AreEqual (SqlSingle.Null, parameter.SqlValue, "#B:SqlValue");
1325 Assert.AreEqual (SqlSingle.Null, parameter.Value, "#B:Value");
1327 parameter = new SqlParameter ();
1328 parameter.Value = value;
1329 Assert.AreEqual (SqlDbType.Real, parameter.SqlDbType, "#C:SqlDbType");
1330 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1331 Assert.AreEqual (value, parameter.Value, "#C:Value");
1335 public void SqlTypes_SqlString ()
1337 SqlParameter parameter;
1338 SqlString value = new SqlString ("XA");
1340 parameter = new SqlParameter ();
1341 parameter.SqlValue = value;
1342 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "#A:SqlDbType");
1343 Assert.AreEqual (value, parameter.SqlValue, "#A:SqlValue");
1344 Assert.AreEqual (value, parameter.Value, "#A:Value");
1346 parameter = new SqlParameter ();
1347 parameter.SqlValue = SqlString.Null;
1348 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "#B:SqlDbType");
1349 Assert.AreEqual (SqlString.Null, parameter.SqlValue, "#B:SqlValue");
1350 Assert.AreEqual (SqlString.Null, parameter.Value, "#B:Value");
1352 parameter = new SqlParameter ();
1353 parameter.Value = value;
1354 Assert.AreEqual (SqlDbType.NVarChar, parameter.SqlDbType, "#C:SqlDbType");
1355 Assert.AreEqual (value, parameter.SqlValue, "#C:SqlValue");
1356 Assert.AreEqual (value, parameter.Value, "#C:Value");
1360 public void SqlTypes_SqlXml ()
1362 SqlParameter parameter;
1363 SqlXml value = new SqlXml (new XmlTextReader (new StringReader ("<test>Mono</test>")));
1365 parameter = new SqlParameter ();
1366 parameter.SqlValue = value;
1367 Assert.AreEqual (SqlDbType.Xml, parameter.SqlDbType, "#A:SqlDbType");
1368 Assert.AreSame (value, parameter.SqlValue, "#A:SqlValue");
1369 Assert.AreSame (value, parameter.Value, "#A:Value");
1371 parameter = new SqlParameter ();
1372 parameter.SqlValue = SqlXml.Null;
1373 Assert.AreEqual (SqlDbType.Xml, parameter.SqlDbType, "#B:SqlDbType");
1374 Assert.IsNotNull (parameter.SqlValue, "#B:SqlValue1");
1375 Assert.AreEqual (typeof (SqlXml), parameter.SqlValue.GetType (), "#B:SqlValue2");
1376 Assert.IsTrue (((SqlXml) parameter.SqlValue).IsNull, "#B:SqlValue3");
1377 Assert.IsNotNull (parameter.Value, "#B:Value1");
1378 Assert.AreEqual (typeof (SqlXml), parameter.Value.GetType (), "#B:Value2");
1379 Assert.IsTrue (((SqlXml) parameter.Value).IsNull, "#B:Value3");
1381 parameter = new SqlParameter ();
1382 parameter.Value = value;
1383 Assert.AreEqual (SqlDbType.Xml, parameter.SqlDbType, "#C:SqlDbType");
1384 Assert.AreSame (value, parameter.SqlValue, "#C:SqlValue");
1385 Assert.AreSame (value, parameter.Value, "#C:Value");
1389 public void Value ()
1393 p = new SqlParameter ("name", (Object) null);
1395 Assert.AreEqual (DbType.Int32, p.DbType, "#A:DbType");
1396 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#A:SqlDbType");
1397 Assert.AreEqual (42, p.Value, "#A:Value");
1399 p.Value = DBNull.Value;
1400 Assert.AreEqual (DbType.String, p.DbType, "#B:DbType");
1401 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#B:SqlDbType");
1402 Assert.AreEqual (DBNull.Value, p.Value, "#B:Value");
1404 p.Value = DateTime.MaxValue;
1405 Assert.AreEqual (DbType.DateTime, p.DbType, "#C:DbType");
1406 Assert.AreEqual (SqlDbType.DateTime, p.SqlDbType, "#C:SqlDbType");
1407 Assert.AreEqual (DateTime.MaxValue, p.Value, "#C:Value");
1410 Assert.AreEqual (DbType.String, p.DbType, "#D:DbType");
1411 Assert.AreEqual (SqlDbType.NVarChar, p.SqlDbType, "#D:SqlDbType");
1412 Assert.IsNull (p.Value, "#D:Value");
1414 p = new SqlParameter ("zipcode", SqlDbType.Int);
1415 p.Value = DateTime.MaxValue;
1416 Assert.AreEqual (DbType.Int32, p.DbType, "#E:DbType");
1417 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#E:SqlDbType");
1418 Assert.AreEqual (DateTime.MaxValue, p.Value, "#E:Value");
1421 Assert.AreEqual (DbType.Int32, p.DbType, "#F:DbType");
1422 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#F:SqlDbType");
1423 Assert.IsNull (p.Value, "#F:Value");
1425 p.Value = DBNull.Value;
1426 Assert.AreEqual (DbType.Int32, p.DbType, "#G:DbType");
1427 Assert.AreEqual (SqlDbType.Int, p.SqlDbType, "#G:SqlDbType");
1428 Assert.AreEqual (DBNull.Value, p.Value, "#G:Value");
1432 public void XmlSchemaTest ()
1434 SqlParameter p1 = new SqlParameter ();
1436 //Testing default values
1437 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionDatabase,
1438 "#1 Default value for XmlSchemaCollectionDatabase is an empty string");
1439 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionName,
1440 "#2 Default value for XmlSchemaCollectionName is an empty string");
1441 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionOwningSchema,
1442 "#3 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1444 //Changing one property should not affect the remaining two properties
1445 p1.XmlSchemaCollectionDatabase = "database";
1446 Assert.AreEqual ("database", p1.XmlSchemaCollectionDatabase,
1447 "#4 Default value for XmlSchemaCollectionDatabase is an empty string");
1448 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionName,
1449 "#5 Default value for XmlSchemaCollectionName is an empty string");
1450 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionOwningSchema,
1451 "#6 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1453 p1.XmlSchemaCollectionName = "name";
1454 Assert.AreEqual ("database", p1.XmlSchemaCollectionDatabase,
1455 "#7 Default value for XmlSchemaCollectionDatabase is an empty string");
1456 Assert.AreEqual ("name", p1.XmlSchemaCollectionName,
1457 "#8 Default value for XmlSchemaCollectionName is an empty string");
1458 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionOwningSchema,
1459 "#9 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1461 p1.XmlSchemaCollectionOwningSchema = "schema";
1462 Assert.AreEqual ("database", p1.XmlSchemaCollectionDatabase,
1463 "#10 Default value for XmlSchemaCollectionDatabase is an empty string");
1464 Assert.AreEqual ("name", p1.XmlSchemaCollectionName,
1465 "#11 Default value for XmlSchemaCollectionName is an empty string");
1466 Assert.AreEqual ("schema", p1.XmlSchemaCollectionOwningSchema,
1467 "#12 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1469 //assigning null value stores default empty string
1470 p1.XmlSchemaCollectionDatabase = null;
1471 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionDatabase,
1472 "#13 Default value for XmlSchemaCollectionDatabase is an empty string");
1473 Assert.AreEqual ("name", p1.XmlSchemaCollectionName,
1474 "#14 Default value for XmlSchemaCollectionName is an empty string");
1475 Assert.AreEqual ("schema", p1.XmlSchemaCollectionOwningSchema,
1476 "#15 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1478 p1.XmlSchemaCollectionName = "";
1479 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionDatabase,
1480 "#16 Default value for XmlSchemaCollectionDatabase is an empty string");
1481 Assert.AreEqual ("", p1.XmlSchemaCollectionName,
1482 "#17 Default value for XmlSchemaCollectionName is an empty string");
1483 Assert.AreEqual ("schema", p1.XmlSchemaCollectionOwningSchema,
1484 "#18 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1486 //values are not trimmed
1487 p1.XmlSchemaCollectionOwningSchema = " a ";
1488 Assert.AreEqual (String.Empty, p1.XmlSchemaCollectionDatabase,
1489 "#19 Default value for XmlSchemaCollectionDatabase is an empty string");
1490 Assert.AreEqual ("", p1.XmlSchemaCollectionName,
1491 "#20 Default value for XmlSchemaCollectionName is an empty string");
1492 Assert.AreEqual (" a ", p1.XmlSchemaCollectionOwningSchema,
1493 "#21 Default value for XmlSchemaCollectionOwningSchema is an empty string");
1496 private enum ByteEnum : byte
1502 private enum Int64Enum : long