1 // DataReaderTest.cs - NUnit Test Cases for testing the
2 // DataReader family of classes
5 // Sureshkumar T (tsureshkumar@novell.com)
6 // Gert Driesen (drieseng@users.sourceforge.net)
7 // Veerapuram Varadhan (vvaradhan@novell.com)
9 // Copyright (c) 2004 Novell Inc., and the individuals listed on the
12 // Permission is hereby granted, free of charge, to any person
13 // obtaining a copy of this software and associated documentation
14 // files (the "Software"), to deal in the Software without
15 // restriction, including without limitation the rights to use, copy,
16 // modify, merge, publish, distribute, sublicense, and/or sell copies
17 // of the Software, and to permit persons to whom the Software is
18 // furnished to do so, subject to 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
27 // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34 using System.Data.Common;
35 using System.Data.SqlClient;
36 using System.Data.SqlTypes;
37 using System.Globalization;
39 using NUnit.Framework;
41 namespace MonoTests.System.Data.Connected
44 [Category ("sqlserver")]
45 public class DataReaderTest
47 static byte [] long_bytes = new byte [] {
48 0x00, 0x66, 0x06, 0x66, 0x97, 0x00, 0x66, 0x06, 0x66,
49 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
50 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
51 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
52 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
53 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
54 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
55 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
56 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
57 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
58 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
59 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
60 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
61 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
62 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
63 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
64 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
65 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
66 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
67 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
68 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
69 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
70 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
71 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
72 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
73 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
74 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
75 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
76 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
77 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
78 0x06, 0x66, 0x06, 0x66, 0x98};
86 conn = ConnectionManager.Instance.Sql.Connection;
87 cmd = conn.CreateCommand ();
91 public void TearDown ()
94 ConnectionManager.Instance.Close();
98 public void FieldCount ()
100 IDataReader reader = null;
103 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
104 reader = cmd.ExecuteReader ();
105 Assert.AreEqual (6, reader.FieldCount);
113 public void FieldCount_Command_Disposed ()
115 IDataReader reader = null;
118 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
119 reader = cmd.ExecuteReader ();
121 Assert.AreEqual (6, reader.FieldCount);
129 public void FieldCount_Reader_Closed ()
131 IDataReader reader = null;
134 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
135 reader = cmd.ExecuteReader ();
138 int fieldcount = reader.FieldCount;
139 Assert.Fail ("#1:" + fieldcount);
140 } catch (InvalidOperationException ex) {
141 // Invalid attempt to FieldCount when
143 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
144 Assert.IsNull (ex.InnerException, "#3");
145 Assert.IsNotNull (ex.Message, "#4");
154 public void GetChars_Index_Invalid ()
156 //Console.WriteLine ("In GetChars_Index_Invalid - first_executereader");
157 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
159 using (IDataReader rdr = cmd.ExecuteReader ()) {
160 Assert.IsTrue (rdr.Read ());
163 rdr.GetChars (-1, 0, (char []) null, 0, 0);
165 } catch (IndexOutOfRangeException ex) {
166 // Index was outside the bounds of the array
167 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
168 Assert.IsNull (ex.InnerException, "#A3");
169 Assert.IsNotNull (ex.Message, "#A4");
173 rdr.GetChars (1, 0, (char []) null, 0, 0);
175 } catch (IndexOutOfRangeException ex) {
176 // Index was outside the bounds of the array
177 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
178 Assert.IsNull (ex.InnerException, "#B3");
179 Assert.IsNotNull (ex.Message, "#B4");
183 //Console.WriteLine ("In GetChars_Index_Invalid - second_executereader");
184 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
185 Assert.IsTrue (rdr.Read ());
188 rdr.GetChars (-1, 0, (char []) null, 0, 0);
190 } catch (IndexOutOfRangeException ex) {
191 // Index was outside the bounds of the array
192 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#C2");
193 Assert.IsNull (ex.InnerException, "#C3");
194 Assert.IsNotNull (ex.Message, "#C4");
198 rdr.GetChars (1, 0, (char []) null, 0, 0);
200 } catch (IndexOutOfRangeException ex) {
201 // Index was outside the bounds of the array
202 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#D2");
203 Assert.IsNull (ex.InnerException, "#D3");
204 Assert.IsNotNull (ex.Message, "#D4");
210 public void GetChars_Reader_Closed ()
212 //Console.WriteLine ("GetChars_Reader_Closed - first_executereader");
213 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
215 using (IDataReader rdr = cmd.ExecuteReader ()) {
216 Assert.IsTrue (rdr.Read ());
220 rdr.GetChars (-1, 0, (char []) null, 0, 0);
222 } catch (InvalidOperationException ex) {
223 // No data exists for the row/column
224 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
225 Assert.IsNull (ex.InnerException, "#A3");
226 Assert.IsNotNull (ex.Message, "#A4");
230 //Console.WriteLine ("GetChars_Reader_Closed - second_executereader");
231 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
232 Assert.IsTrue (rdr.Read ());
236 rdr.GetChars (-1, 0, (char []) null, 0, 0);
238 } catch (InvalidOperationException ex) {
239 // No data exists for the row/column
240 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
241 Assert.IsNull (ex.InnerException, "#B3");
242 Assert.IsNotNull (ex.Message, "#B4");
248 [Category("NotWorking")]
249 public void GetChars_Reader_NoData ()
251 //Console.WriteLine ("GetChars_Reader_NoData - first_executereader");
252 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
254 using (IDataReader rdr = cmd.ExecuteReader ()) {
256 rdr.GetChars (-1, 0, (char []) null, 0, 0);
258 } catch (IndexOutOfRangeException ex) {
259 // No data exists for the row/column
260 Assert.IsNull (ex.InnerException, "#A3");
261 Assert.IsNotNull (ex.Message, "#A4");
264 Assert.IsFalse (rdr.Read (), "#B");
267 rdr.GetChars (-1, 0, (char []) null, 0, 0);
269 } catch (IndexOutOfRangeException ex) {
270 // No data exists for the row/column
271 Assert.IsNull (ex.InnerException, "#C3");
272 Assert.IsNotNull (ex.Message, "#C4");
278 public void GetDataTypeName ()
280 IDataReader reader = null;
283 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
284 reader = cmd.ExecuteReader ();
286 switch (ConnectionManager.Instance.Sql.EngineConfig.Type) {
287 case EngineType.SQLServer:
288 Assert.AreEqual ("int", reader.GetDataTypeName (0), "#1");
290 case EngineType.MySQL:
291 Assert.AreEqual ("integer", reader.GetDataTypeName (0), "#1");
294 Assert.Fail ("Engine type not supported.");
297 Assert.AreEqual ("varchar", reader.GetDataTypeName (1), "#2");
298 Assert.AreEqual ("varchar", reader.GetDataTypeName (2), "#3");
299 Assert.AreEqual ("datetime", reader.GetDataTypeName (3), "#4");
300 Assert.AreEqual ("datetime", reader.GetDataTypeName (4), "#5");
301 Assert.AreEqual ("varchar", reader.GetDataTypeName (5), "#6");
309 public void GetDataTypeName_Index_Invalid ()
311 IDataReader reader = null;
314 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
315 reader = cmd.ExecuteReader ();
318 reader.GetDataTypeName (-1);
320 } catch (IndexOutOfRangeException ex) {
321 // Index was outside the bounds of the array
322 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
323 Assert.IsNull (ex.InnerException, "#A3");
324 Assert.IsNotNull (ex.Message, "#A4");
328 reader.GetDataTypeName (6);
330 } catch (IndexOutOfRangeException ex) {
331 // Index was outside the bounds of the array
332 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
333 Assert.IsNull (ex.InnerException, "#B3");
334 Assert.IsNotNull (ex.Message, "#B4");
343 public void GetDataTypeName_Reader_Closed ()
345 IDataReader reader = null;
348 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
349 reader = cmd.ExecuteReader ();
353 reader.GetDataTypeName (0);
355 } catch (InvalidOperationException ex) {
356 // No data exists for the row/column
357 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
358 Assert.IsNull (ex.InnerException, "#3");
359 Assert.IsNotNull (ex.Message, "#4");
368 public void GetFieldType ()
370 IDataReader reader = null;
373 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
374 reader = cmd.ExecuteReader ();
375 Assert.AreEqual (typeof (int), reader.GetFieldType (0), "#1");
376 Assert.AreEqual (typeof (string), reader.GetFieldType (2), "#2");
377 Assert.AreEqual (typeof (DateTime), reader.GetFieldType (4), "#3");
385 public void GetFieldType_Index_Invalid ()
387 IDataReader reader = null;
390 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
391 reader = cmd.ExecuteReader ();
393 reader.GetFieldType (-1);
395 } catch (IndexOutOfRangeException ex) {
396 // Index was outside the bounds of the array
397 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
398 Assert.IsNull (ex.InnerException, "#A3");
399 Assert.IsNotNull (ex.Message, "#A4");
403 reader.GetFieldType (6);
405 } catch (IndexOutOfRangeException ex) {
406 // Index was outside the bounds of the array
407 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
408 Assert.IsNull (ex.InnerException, "#B3");
409 Assert.IsNotNull (ex.Message, "#B4");
418 public void GetFieldType_Reader_Closed ()
420 IDataReader reader = null;
423 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
424 reader = cmd.ExecuteReader ();
427 reader.GetFieldType (0);
429 } catch (InvalidOperationException ex) {
430 // No data exists for the row/column
431 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
432 Assert.IsNull (ex.InnerException, "#3");
433 Assert.IsNotNull (ex.Message, "#4");
442 public void GetName ()
444 IDataReader reader = null;
447 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
448 reader = cmd.ExecuteReader ();
449 Assert.AreEqual ("id", reader.GetName (0), "#1");
450 Assert.AreEqual ("fname", reader.GetName (1), "#2");
451 Assert.AreEqual ("lname", reader.GetName (2), "#3");
452 Assert.AreEqual ("dob", reader.GetName (3), "#4");
453 Assert.AreEqual ("doj", reader.GetName (4), "#5");
454 Assert.AreEqual ("email", reader.GetName (5), "#6");
462 public void GetName_Index_Invalid ()
464 IDataReader reader = null;
467 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
468 reader = cmd.ExecuteReader ();
472 } catch (IndexOutOfRangeException ex) {
473 // Index was outside the bounds of the array
474 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
475 Assert.IsNull (ex.InnerException, "#A3");
476 Assert.IsNotNull (ex.Message, "#A4");
482 } catch (IndexOutOfRangeException ex) {
483 // Index was outside the bounds of the array
484 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
485 Assert.IsNull (ex.InnerException, "#B3");
486 Assert.IsNotNull (ex.Message, "#B4");
495 public void GetName_Reader_Closed ()
497 IDataReader reader = null;
500 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
501 reader = cmd.ExecuteReader ();
506 } catch (InvalidOperationException ex) {
507 // No data exists for the row/column
508 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
509 Assert.IsNull (ex.InnerException, "#3");
510 Assert.IsNotNull (ex.Message, "#4");
519 public void GetOrdinal ()
521 IDataReader reader = null;
524 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
525 reader = cmd.ExecuteReader ();
526 Assert.AreEqual (0, reader.GetOrdinal ("id"), "#1");
527 Assert.AreEqual (1, reader.GetOrdinal ("fname"), "#2");
528 Assert.AreEqual (2, reader.GetOrdinal ("lname"), "#3");
529 Assert.AreEqual (3, reader.GetOrdinal ("doB"), "#4");
530 Assert.AreEqual (4, reader.GetOrdinal ("doj"), "#5");
531 Assert.AreEqual (5, reader.GetOrdinal ("EmaiL"), "#6");
532 Assert.AreEqual (0, reader.GetOrdinal ("iD"), "#7");
533 Assert.AreEqual (5, reader.GetOrdinal ("eMail"), "#8");
541 public void GetOrdinal_Name_NotFound ()
543 IDataReader reader = null;
546 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
547 reader = cmd.ExecuteReader ();
549 reader.GetOrdinal ("non_existing_column");
551 } catch (IndexOutOfRangeException ex) {
552 // Index was outside the bounds of the array
553 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
554 Assert.IsNull (ex.InnerException, "#A3");
555 Assert.IsNotNull (ex.Message, "#A4");
559 reader.GetOrdinal (string.Empty);
561 } catch (IndexOutOfRangeException ex) {
562 // Index was outside the bounds of the array
563 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
564 Assert.IsNull (ex.InnerException, "#B3");
565 Assert.IsNotNull (ex.Message, "#B4");
574 public void GetOrdinal_Name_Null ()
576 IDataReader reader = null;
579 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
580 reader = cmd.ExecuteReader ();
582 reader.GetOrdinal (null);
584 } catch (ArgumentNullException ex) {
585 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
586 Assert.IsNull (ex.InnerException, "#3");
587 Assert.IsNotNull (ex.Message, "#4");
588 Assert.AreEqual ("fieldName", ex.ParamName, "#5");
597 public void GetOrdinal_Reader_Closed ()
599 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
601 using (IDataReader rdr = cmd.ExecuteReader ()) {
605 rdr.GetOrdinal (null);
607 } catch (InvalidOperationException ex) {
608 // No data exists for the row/column
609 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
610 Assert.IsNull (ex.InnerException, "#A3");
611 Assert.IsNotNull (ex.Message, "#A4");
617 public void GetOrdinal_Reader_NoData ()
619 cmd.CommandText = "SELECT * FROM employee WHERE id = 666";
621 using (IDataReader rdr = cmd.ExecuteReader ()) {
622 Assert.AreEqual (0, rdr.GetOrdinal ("id"), "#A1");
623 Assert.AreEqual (5, rdr.GetOrdinal ("eMail"), "#A2");
625 Assert.IsFalse (rdr.Read (), "#B");
627 Assert.AreEqual (2, rdr.GetOrdinal ("lname"), "#C1");
628 Assert.AreEqual (3, rdr.GetOrdinal ("dob"), "#C2");
633 public void GetSchemaTable_Command_Disposed ()
636 Assert.Ignore ("Our statement handle is closed when we dispose the (Odbc)Command");
638 IDataReader reader = null;
641 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
642 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly);
644 DataTable schema = reader.GetSchemaTable ();
645 Assert.AreEqual (3, schema.Rows.Count, "RowCount");
653 public void GetSchemaTable_Reader_Closed ()
655 IDataReader reader = null;
658 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
659 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
663 reader.GetSchemaTable ();
665 } catch (InvalidOperationException ex) {
666 // Invalid attempt to call GetSchemaTable
667 // when reader is closed
668 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
669 Assert.IsNull (ex.InnerException, "#3");
670 Assert.IsNotNull (ex.Message, "#4");
679 public void GetNameTest ()
681 cmd.CommandText = "SELECT type_tinyint from numeric_family"; ;
682 using (IDataReader reader = cmd.ExecuteReader ()) {
683 Assert.AreEqual ("type_tinyint", reader.GetName (0), "#1");
687 [Test] // this [Int32]
688 public void Indexer1 ()
690 IDataReader reader = null;
693 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
694 reader = cmd.ExecuteReader ();
695 Assert.IsTrue (reader.Read ());
696 Assert.AreEqual (1, reader [0], "#0");
697 Assert.AreEqual ("suresh", reader [1], "#1");
698 Assert.AreEqual ("kumar", reader [2], "#2");
699 Assert.AreEqual (new DateTime (1978, 8, 22), reader [3], "#3");
700 Assert.AreEqual (new DateTime (2001, 3, 12), reader [4], "#4");
701 Assert.AreEqual ("suresh@gmail.com", reader [5], "#5");
708 [Test] // this [Int32]
709 public void Indexer1_Reader_Closed ()
711 IDataReader reader = null;
714 cmd.CommandText = "select fname from employee";
715 reader = cmd.ExecuteReader ();
720 object value = reader [0];
721 Assert.Fail ("#A1:" + value);
722 } catch (InvalidOperationException ex) {
723 // No data exists for the row/column
724 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
725 Assert.IsNull (ex.InnerException, "#A3");
726 Assert.IsNotNull (ex.Message, "#A4");
729 reader = cmd.ExecuteReader ();
733 object value = reader [0];
734 Assert.Fail ("#B1:" + value);
735 } catch (InvalidOperationException ex) {
736 // No data exists for the row/column
737 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
738 Assert.IsNull (ex.InnerException, "#B3");
739 Assert.IsNotNull (ex.Message, "#B4");
747 [Test] // this [Int32]
748 public void Indexer1_Reader_NoData ()
750 IDataReader reader = null;
753 cmd.CommandText = "select fname from employee WHERE lname='kumar'";
754 reader = cmd.ExecuteReader ();
756 object value = reader [0];
757 Assert.Fail ("#A1:" + value);
758 } catch (InvalidOperationException ex) {
759 // No data exists for the row/column
760 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
761 Assert.IsNull (ex.InnerException, "#A3");
762 Assert.IsNotNull (ex.Message, "#A4");
765 Assert.IsTrue (reader.Read ());
766 Assert.IsFalse (reader.Read ());
769 object value = reader [0];
770 Assert.Fail ("#B1:" + value);
771 } catch (InvalidOperationException ex) {
772 // No data exists for the row/column
773 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
774 Assert.IsNull (ex.InnerException, "#B3");
775 Assert.IsNotNull (ex.Message, "#B4");
783 [Test] // this [Int32]
784 public void Indexer1_Value_Invalid ()
786 IDataReader reader = null;
789 cmd.CommandText = "select fname from employee";
790 reader = cmd.ExecuteReader ();
791 Assert.IsTrue (reader.Read ());
793 object value = reader [-1];
794 Assert.Fail ("#A1:" + value);
795 } catch (IndexOutOfRangeException ex) {
796 // Index was outside the bounds of the array
797 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
798 Assert.IsNull (ex.InnerException, "#A3");
799 Assert.IsNotNull (ex.Message, "#A4");
803 object value = reader [1];
804 Assert.Fail ("#B1:" + value);
805 } catch (IndexOutOfRangeException ex) {
806 // Index was outside the bounds of the array
807 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
808 Assert.IsNull (ex.InnerException, "#B3");
809 Assert.IsNotNull (ex.Message, "#B4");
817 [Test] // this [String]
818 public void Indexer2 ()
820 IDataReader reader = null;
823 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
824 reader = cmd.ExecuteReader ();
825 Assert.IsTrue (reader.Read ());
826 Assert.AreEqual (1, reader ["id"], "id");
827 Assert.AreEqual ("suresh", reader ["fname"], "fname");
828 Assert.AreEqual ("kumar", reader ["lname"], "lname");
829 Assert.AreEqual (new DateTime (1978, 8, 22), reader ["doB"], "doB");
830 Assert.AreEqual (new DateTime (2001, 3, 12), reader ["doj"], "doj");
831 Assert.AreEqual ("suresh@gmail.com", reader ["EmaiL"], "EmaiL");
832 Assert.AreEqual (1, reader ["iD"], "iD");
833 Assert.AreEqual ("suresh@gmail.com", reader ["eMail"], "eMail");
840 [Test] // this [String]
841 public void Indexer2_Reader_Closed ()
843 IDataReader reader = null;
846 cmd.CommandText = "select fname from employee";
847 reader = cmd.ExecuteReader ();
852 object value = reader ["fname"];
853 Assert.Fail ("#A1:" + value);
854 } catch (InvalidOperationException ex) {
855 // No data exists for the row/column
856 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
857 Assert.IsNull (ex.InnerException, "#A3");
858 Assert.IsNotNull (ex.Message, "#A4");
861 reader = cmd.ExecuteReader ();
865 object value = reader ["fname"];
866 Assert.Fail ("#B1:" + value);
867 } catch (InvalidOperationException ex) {
868 // No data exists for the row/column
869 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
870 Assert.IsNull (ex.InnerException, "#B3");
871 Assert.IsNotNull (ex.Message, "#B4");
879 [Test] // this [String]
880 public void Indexer2_Reader_NoData ()
882 IDataReader reader = null;
885 cmd.CommandText = "select fname from employee WHERE lname='kumar'";
886 reader = cmd.ExecuteReader ();
889 object value = reader ["fname"];
890 Assert.Fail ("#A1:" + value);
891 } catch (InvalidOperationException ex) {
892 // No data exists for the row/column
893 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
894 Assert.IsNull (ex.InnerException, "#A3");
895 Assert.IsNotNull (ex.Message, "#A4");
898 Assert.IsTrue (reader.Read ());
899 Assert.IsFalse (reader.Read ());
902 object value = reader ["fname"];
903 Assert.Fail ("#B1:" + value);
904 } catch (InvalidOperationException ex) {
905 // No data exists for the row/column
906 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
907 Assert.IsNull (ex.InnerException, "#B3");
908 Assert.IsNotNull (ex.Message, "#B4");
916 [Test] // this [String]
917 public void Indexer2_Value_NotFound ()
919 IDataReader reader = null;
922 cmd.CommandText = "select fname from employee";
923 reader = cmd.ExecuteReader ();
924 Assert.IsTrue (reader.Read ());
926 object value = reader ["address"];
927 Assert.Fail ("#A1:" + value);
928 } catch (IndexOutOfRangeException ex) {
929 // Index was outside the bounds of the array
930 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
931 Assert.IsNull (ex.InnerException, "#A3");
932 Assert.IsNotNull (ex.Message, "#A4");
936 object value = reader [string.Empty];
937 Assert.Fail ("#B1:" + value);
938 } catch (IndexOutOfRangeException ex) {
939 // Index was outside the bounds of the array
940 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
941 Assert.IsNull (ex.InnerException, "#B3");
942 Assert.IsNotNull (ex.Message, "#B4");
950 [Test] // this [String]
951 public void Indexer2_Value_Null ()
953 IDataReader reader = null;
956 cmd.CommandText = "select fname from employee";
957 reader = cmd.ExecuteReader ();
959 object value = reader [(string) null];
960 Assert.Fail ("#1:" + value);
961 } catch (ArgumentNullException ex) {
962 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
963 Assert.IsNull (ex.InnerException, "#3");
964 Assert.IsNotNull (ex.Message, "#4");
965 Assert.AreEqual ("fieldName", ex.ParamName, "#5");
974 public void IsClosed_Command_Disposed ()
976 IDataReader reader = null;
979 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
980 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
981 Assert.IsFalse (reader.IsClosed, "#1");
983 Assert.IsFalse (reader.IsClosed, "#2");
991 public void IsClosed_Connection_Closed ()
994 Assert.Ignore ("We do not mark the corresponding Reader closed when we close a Connection.");
996 IDataReader reader = null;
999 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
1000 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
1001 Assert.IsFalse (reader.IsClosed, "#1");
1002 ConnectionManager.Instance.Sql.CloseConnection ();
1003 Assert.IsTrue (reader.IsClosed, "#2");
1011 public void IsClosed_Reader_Closed ()
1013 IDataReader reader = null;
1016 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
1017 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
1018 Assert.IsFalse (reader.IsClosed, "#1");
1020 Assert.IsTrue (reader.IsClosed, "#2");
1028 public void NumericTest()
1030 cmd.CommandText = "select type_numeric1 from numeric_family where id = 1;";
1032 using (IDataReader reader = cmd.ExecuteReader ()) {
1033 Assert.IsTrue (reader.Read(), "#1");
1034 object value = reader.GetValue (0);
1035 Assert.AreEqual (typeof (decimal), value.GetType (), "#2");
1036 Assert.AreEqual (1000m, value, "#3");
1041 public void TinyIntTest ()
1043 cmd.CommandText = "select type_tinyint from numeric_family where id = 1;";
1044 using (IDataReader reader = cmd.ExecuteReader ()) {
1045 Assert.IsTrue (reader.Read (), "#1");
1046 object value = reader.GetValue (0);
1047 Assert.AreEqual (typeof (byte), value.GetType (), "#2");
1048 Assert.AreEqual (255, value, "#3");
1053 public void GetByteTest ()
1055 cmd.CommandText = "select type_tinyint from numeric_family where id = 1";
1056 using (IDataReader reader = cmd.ExecuteReader ()) {
1057 Assert.IsTrue (reader.Read (), "#1");
1058 byte b = reader.GetByte (0);
1059 Assert.AreEqual (255, b, "#2");
1064 public void GetValue_Reader_Closed ()
1066 //Console.WriteLine ("GetValue_Reader_Closed - first_executereader");
1067 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
1069 using (IDataReader reader = cmd.ExecuteReader ()) {
1070 Assert.IsTrue (reader.Read ());
1074 reader.GetValue (-1);
1076 } catch (InvalidOperationException ex) {
1077 // No data exists for the row/column
1078 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1079 Assert.IsNull (ex.InnerException, "#3");
1080 Assert.IsNotNull (ex.Message, "#4");
1086 public void GetValue_Reader_NoData ()
1088 //Console.WriteLine ("GetValue_Reader_NoData - first_executereader");
1089 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
1091 using (IDataReader rdr = cmd.ExecuteReader ()) {
1094 Assert.Fail ("#A1");
1095 } catch (InvalidOperationException ex) {
1096 // No data exists for the row/column
1097 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
1098 Assert.IsNull (ex.InnerException, "#A3");
1099 Assert.IsNotNull (ex.Message, "#A4");
1102 Assert.IsFalse (rdr.Read (), "#B");
1106 Assert.Fail ("#C1");
1107 } catch (InvalidOperationException ex) {
1108 // No data exists for the row/column
1109 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
1110 Assert.IsNull (ex.InnerException, "#C3");
1111 Assert.IsNotNull (ex.Message, "#C4");
1117 public void GetValue_Type_Binary ()
1122 cmd.CommandText = "select type_binary from binary_family order by id asc";
1123 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1124 expected = new byte [] { 0x35, 0x00, 0x00, 0x00,
1125 0x00, 0x00, 0x00, 0x00 };
1127 Assert.IsTrue (rdr.Read (), "#A1");
1128 value = rdr.GetValue (0);
1129 Assert.IsNotNull (value, "#A2");
1130 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1131 Assert.AreEqual (expected, value, "#A4");
1132 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1134 expected = new byte [] { 0x00, 0x33, 0x34, 0x00,
1135 0x33, 0x30, 0x35, 0x31 };
1137 Assert.IsTrue (rdr.Read (), "#B1");
1138 value = rdr.GetValue (0);
1139 Assert.IsNotNull (value, "#B2");
1140 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1141 Assert.AreEqual (expected, value, "#B4");
1142 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1144 expected = new byte [8];
1146 Assert.IsTrue (rdr.Read (), "#C1");
1147 value = rdr.GetValue (0);
1148 Assert.IsNotNull (value, "#C2");
1149 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1150 Assert.AreEqual (expected, value, "#C4");
1151 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1153 expected = DBNull.Value;
1155 Assert.IsTrue (rdr.Read (), "#D1");
1156 value = rdr.GetValue (0);
1157 Assert.IsNotNull (value, "#D2");
1158 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1159 Assert.AreEqual (DBNull.Value, value, "#D4");
1160 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1163 using (IDataReader rdr = cmd.ExecuteReader ()) {
1164 expected = new byte [] { 0x35, 0x00, 0x00, 0x00,
1165 0x00, 0x00, 0x00, 0x00 };
1167 Assert.IsTrue (rdr.Read (), "#E1");
1168 value = rdr.GetValue (0);
1169 Assert.IsNotNull (value, "#E2");
1170 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1171 Assert.AreEqual (expected, value, "#E4");
1172 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
1174 expected = new byte [] { 0x00, 0x33, 0x34, 0x00,
1175 0x33, 0x30, 0x35, 0x31 };
1177 Assert.IsTrue (rdr.Read (), "#F1");
1178 value = rdr.GetValue (0);
1179 Assert.IsNotNull (value, "#F2");
1180 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1181 Assert.AreEqual (expected, value, "#F4");
1182 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
1184 expected = new byte [8];
1186 Assert.IsTrue (rdr.Read (), "#G1");
1187 value = rdr.GetValue (0);
1188 Assert.IsNotNull (value, "#G2");
1189 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1190 Assert.AreEqual (expected, value, "#G4");
1191 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
1193 expected = DBNull.Value;
1195 Assert.IsTrue (rdr.Read (), "#H1");
1196 value = rdr.GetValue (0);
1197 Assert.IsNotNull (value, "#H2");
1198 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1199 Assert.AreEqual (expected, value, "#H4");
1200 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
1205 public void GetValue_Type_Image ()
1210 //Console.WriteLine ("GetValue_Type_Image - first_executereader");
1211 cmd.CommandText = "select type_blob from binary_family order by id asc";
1212 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1213 expected = new byte [] { 0x32, 0x56, 0x00,
1216 Assert.IsTrue (rdr.Read (), "#A1");
1217 value = rdr.GetValue (0);
1218 Assert.IsNotNull (value, "#A2");
1219 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1220 Assert.AreEqual (expected, value, "#A4");
1221 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1223 expected = long_bytes;
1225 Assert.IsTrue (rdr.Read (), "#B1");
1226 value = rdr.GetValue (0);
1227 Assert.IsNotNull (value, "#B2");
1228 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1229 Assert.AreEqual (expected, value, "#B4");
1230 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1232 expected = new byte [0];
1234 Assert.IsTrue (rdr.Read (), "#C1");
1235 value = rdr.GetValue (0);
1236 Assert.IsNotNull (value, "#C2");
1237 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1238 Assert.AreEqual (expected, value, "#C4");
1239 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1241 expected = DBNull.Value;
1243 Assert.IsTrue (rdr.Read (), "#D1");
1244 value = rdr.GetValue (0);
1245 Assert.IsNotNull (value, "#D2");
1246 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1247 Assert.AreEqual (DBNull.Value, value, "#D4");
1248 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1251 //Console.WriteLine ("GetChars_Reader_Closed - second_executereader");
1252 using (IDataReader rdr = cmd.ExecuteReader ()) {
1253 expected = new byte [] { 0x32, 0x56, 0x00,
1256 Assert.IsTrue (rdr.Read (), "#E1");
1257 value = rdr.GetValue (0);
1258 Assert.IsNotNull (value, "#E2");
1259 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1260 Assert.AreEqual (expected, value, "#E4");
1261 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
1263 expected = long_bytes;
1265 Assert.IsTrue (rdr.Read (), "#F1");
1266 value = rdr.GetValue (0);
1267 Assert.IsNotNull (value, "#F2");
1268 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1269 Assert.AreEqual (expected, value, "#F4");
1270 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
1272 expected = new byte [0];
1274 Assert.IsTrue (rdr.Read (), "#G1");
1275 value = rdr.GetValue (0);
1276 Assert.IsNotNull (value, "#G2");
1277 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1278 Assert.AreEqual (expected, value, "#G4");
1279 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
1281 expected = DBNull.Value;
1283 Assert.IsTrue (rdr.Read (), "#H1");
1284 value = rdr.GetValue (0);
1285 Assert.IsNotNull (value, "#H2");
1286 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1287 Assert.AreEqual (expected, value, "#H4");
1288 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
1293 public void GetValue_Type_Integer ()
1298 cmd.CommandText = "select type_int from numeric_family order by id asc";
1299 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1300 expected = int.MaxValue;
1302 Assert.IsTrue (rdr.Read (), "#A1");
1303 value = rdr.GetValue (0);
1304 Assert.IsNotNull (value, "#A2");
1305 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1306 Assert.AreEqual (expected, value, "#A4");
1307 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#A5");
1309 expected = int.MinValue;
1311 Assert.IsTrue (rdr.Read (), "#B1");
1312 value = rdr.GetValue (0);
1313 Assert.IsNotNull (value, "#B2");
1314 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1315 Assert.AreEqual (expected, value, "#B4");
1316 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#B5");
1320 Assert.IsTrue (rdr.Read (), "#C1");
1321 value = rdr.GetValue (0);
1322 Assert.IsNotNull (value, "#C2");
1323 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1324 Assert.AreEqual (expected, value, "#C4");
1325 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#C5");
1327 expected = DBNull.Value;
1329 Assert.IsTrue (rdr.Read (), "#D1");
1330 value = rdr.GetValue (0);
1331 Assert.IsNotNull (value, "#D2");
1332 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1333 Assert.AreEqual (DBNull.Value, value, "#D4");
1334 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#D5");
1337 using (IDataReader rdr = cmd.ExecuteReader ()) {
1338 expected = int.MaxValue;
1340 Assert.IsTrue (rdr.Read (), "#E1");
1341 value = rdr.GetValue (0);
1342 Assert.IsNotNull (value, "#E2");
1343 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1344 Assert.AreEqual (expected, value, "#E4");
1345 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#E5");
1347 expected = int.MinValue;
1349 Assert.IsTrue (rdr.Read (), "#F1");
1350 value = rdr.GetValue (0);
1351 Assert.IsNotNull (value, "#F2");
1352 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1353 Assert.AreEqual (expected, value, "#F4");
1354 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#F5");
1358 Assert.IsTrue (rdr.Read (), "#G1");
1359 value = rdr.GetValue (0);
1360 Assert.IsNotNull (value, "#G2");
1361 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1362 Assert.AreEqual (expected, value, "#G4");
1363 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#G5");
1365 expected = DBNull.Value;
1367 Assert.IsTrue (rdr.Read (), "#H1");
1368 value = rdr.GetValue (0);
1369 Assert.IsNotNull (value, "#H2");
1370 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1371 Assert.AreEqual (expected, value, "#H4");
1372 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#H5");
1377 public void GetValue_Type_NText ()
1382 cmd.CommandText = "select type_ntext from string_family order by id asc";
1383 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1384 expected = "nt\u092d\u093ext";
1386 Assert.IsTrue (rdr.Read (), "#A1");
1387 value = rdr.GetValue (0);
1388 Assert.IsNotNull (value, "#A2");
1389 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1390 Assert.AreEqual (expected, value, "#A4");
1391 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1393 expected = "nt\u092d\u093ext ";
1395 Assert.IsTrue (rdr.Read (), "#B1");
1396 value = rdr.GetValue (0);
1397 Assert.IsNotNull (value, "#B2");
1398 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1399 Assert.AreEqual (expected, value, "#B4");
1400 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1402 expected = string.Empty;
1404 Assert.IsTrue (rdr.Read (), "#C1");
1405 value = rdr.GetValue (0);
1406 Assert.IsNotNull (value, "#C2");
1407 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1408 Assert.AreEqual (expected, value, "#C4");
1409 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1411 expected = DBNull.Value;
1413 Assert.IsTrue (rdr.Read (), "#D1");
1414 value = rdr.GetValue (0);
1415 Assert.IsNotNull (value, "#D2");
1416 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1417 Assert.AreEqual (expected, value, "#D4");
1418 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1421 using (IDataReader rdr = cmd.ExecuteReader ()) {
1422 expected = "nt\u092d\u093ext";
1424 Assert.IsTrue (rdr.Read (), "#E1");
1425 value = rdr.GetValue (0);
1426 Assert.IsNotNull (value, "#E2");
1427 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1428 Assert.AreEqual (expected, value, "#E4");
1429 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1431 expected = "nt\u092d\u093ext ";
1433 Assert.IsTrue (rdr.Read (), "#F1");
1434 value = rdr.GetValue (0);
1435 Assert.IsNotNull (value, "#F2");
1436 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1437 Assert.AreEqual (expected, value, "#F4");
1438 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1440 expected = string.Empty;
1442 Assert.IsTrue (rdr.Read (), "#G1");
1443 value = rdr.GetValue (0);
1444 Assert.IsNotNull (value, "#G2");
1445 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1446 Assert.AreEqual (expected, value, "#G4");
1447 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1449 expected = DBNull.Value;
1451 Assert.IsTrue (rdr.Read (), "#H1");
1452 value = rdr.GetValue (0);
1453 Assert.IsNotNull (value, "#H2");
1454 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1455 Assert.AreEqual (expected, value, "#H4");
1456 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1461 public void GetValue_Type_NVarChar ()
1466 cmd.CommandText = "select type_nvarchar from string_family order by id asc";
1467 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1468 expected = "nv\u092d\u093e\u0930\u0924r";
1470 Assert.IsTrue (rdr.Read (), "#A1");
1471 value = rdr.GetValue (0);
1472 Assert.IsNotNull (value, "#A2");
1473 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1474 Assert.AreEqual (expected, value, "#A4");
1475 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1477 expected = "nv\u092d\u093e\u0930\u0924r ";
1479 Assert.IsTrue (rdr.Read (), "#B1");
1480 value = rdr.GetValue (0);
1481 Assert.IsNotNull (value, "#B2");
1482 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1483 Assert.AreEqual (expected, value, "#B4");
1484 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1486 expected = string.Empty;
1488 Assert.IsTrue (rdr.Read (), "#C1");
1489 value = rdr.GetValue (0);
1490 Assert.IsNotNull (value, "#C2");
1491 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1492 Assert.AreEqual (expected, value, "#C4");
1493 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1495 expected = DBNull.Value;
1497 Assert.IsTrue (rdr.Read (), "#D1");
1498 value = rdr.GetValue (0);
1499 Assert.IsNotNull (value, "#D2");
1500 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1501 Assert.AreEqual (expected, value, "#D4");
1502 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1505 using (IDataReader rdr = cmd.ExecuteReader ()) {
1506 expected = "nv\u092d\u093e\u0930\u0924r";
1508 Assert.IsTrue (rdr.Read (), "#E1");
1509 value = rdr.GetValue (0);
1510 Assert.IsNotNull (value, "#E2");
1511 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1512 Assert.AreEqual (expected, value, "#E4");
1513 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1515 expected = "nv\u092d\u093e\u0930\u0924r ";
1517 Assert.IsTrue (rdr.Read (), "#F1");
1518 value = rdr.GetValue (0);
1519 Assert.IsNotNull (value, "#F2");
1520 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1521 Assert.AreEqual (expected, value, "#F4");
1522 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1524 expected = string.Empty;
1526 Assert.IsTrue (rdr.Read (), "#G1");
1527 value = rdr.GetValue (0);
1528 Assert.IsNotNull (value, "#G2");
1529 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1530 Assert.AreEqual (expected, value, "#G4");
1531 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1533 expected = DBNull.Value;
1535 Assert.IsTrue (rdr.Read (), "#H1");
1536 value = rdr.GetValue (0);
1537 Assert.IsNotNull (value, "#H2");
1538 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1539 Assert.AreEqual (expected, value, "#H4");
1540 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1545 public void GetValue_Type_Real ()
1550 cmd.CommandText = "select type_float from numeric_family order by id asc";
1551 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1552 expected = 3.40E+38F;
1554 Assert.IsTrue (rdr.Read (), "#A1");
1555 value = rdr.GetValue (0);
1556 Assert.IsNotNull (value, "#A2");
1557 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1558 Assert.AreEqual (expected, value, "#A4");
1559 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#A5");
1561 expected = -3.40E+38F;
1563 Assert.IsTrue (rdr.Read (), "#B1");
1564 value = rdr.GetValue (0);
1565 Assert.IsNotNull (value, "#B2");
1566 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1567 Assert.AreEqual (expected, value, "#B4");
1568 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#B5");
1572 Assert.IsTrue (rdr.Read (), "#C1");
1573 value = rdr.GetValue (0);
1574 Assert.IsNotNull (value, "#C2");
1575 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1576 Assert.AreEqual (expected, value, "#C4");
1577 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#C5");
1579 expected = DBNull.Value;
1581 Assert.IsTrue (rdr.Read (), "#D1");
1582 value = rdr.GetValue (0);
1583 Assert.IsNotNull (value, "#D2");
1584 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1585 Assert.AreEqual (expected, value, "#D4");
1586 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#D5");
1589 using (IDataReader rdr = cmd.ExecuteReader ()) {
1590 expected = 3.40E+38F;
1592 Assert.IsTrue (rdr.Read (), "#E1");
1593 value = rdr.GetValue (0);
1594 Assert.IsNotNull (value, "#E2");
1595 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1596 Assert.AreEqual (expected, value, "#E4");
1597 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#E5");
1599 expected = -3.40E+38F;
1601 Assert.IsTrue (rdr.Read (), "#F1");
1602 value = rdr.GetValue (0);
1603 Assert.IsNotNull (value, "#F2");
1604 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1605 Assert.AreEqual (expected, value, "#F4");
1606 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#F5");
1610 Assert.IsTrue (rdr.Read (), "#G1");
1611 value = rdr.GetValue (0);
1612 Assert.IsNotNull (value, "#G2");
1613 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1614 Assert.AreEqual (expected, value, "#G4");
1615 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#G5");
1617 expected = DBNull.Value;
1619 Assert.IsTrue (rdr.Read (), "#H1");
1620 value = rdr.GetValue (0);
1621 Assert.IsNotNull (value, "#H2");
1622 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1623 Assert.AreEqual (expected, value, "#H4");
1624 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#H5");
1629 public void GetValue_Type_SmallDateTime ()
1634 cmd.CommandText = "select type_smalldatetime from datetime_family order by id asc";
1635 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1636 expected = DateTime.Parse ("2037-12-31 23:59:00");
1638 Assert.IsTrue (rdr.Read (), "#A1");
1639 value = rdr.GetValue (0);
1640 Assert.IsNotNull (value, "#A2");
1641 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1642 Assert.AreEqual (expected, value, "#A4");
1643 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#A5");
1645 expected = DBNull.Value;
1647 Assert.IsTrue (rdr.Read (), "#B1");
1648 value = rdr.GetValue (0);
1649 Assert.IsNotNull (value, "#B2");
1650 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1651 Assert.AreEqual (expected, value, "#B4");
1652 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#B5");
1655 using (IDataReader rdr = cmd.ExecuteReader ()) {
1656 expected = DateTime.Parse ("2037-12-31 23:59:00");
1658 Assert.IsTrue (rdr.Read (), "#C1");
1659 value = rdr.GetValue (0);
1660 Assert.IsNotNull (value, "#C2");
1661 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1662 Assert.AreEqual (expected, value, "#C4");
1663 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#C5");
1665 expected = DBNull.Value;
1667 Assert.IsTrue (rdr.Read (), "#D1");
1668 value = rdr.GetValue (0);
1669 Assert.IsNotNull (value, "#D2");
1670 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1671 Assert.AreEqual (expected, value, "#D4");
1672 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#D5");
1677 public void GetValue_Type_SmallInt ()
1682 cmd.CommandText = "select type_smallint from numeric_family order by id asc";
1683 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1684 expected = short.MaxValue;
1686 Assert.IsTrue (rdr.Read (), "#A1");
1687 value = rdr.GetValue (0);
1688 Assert.IsNotNull (value, "#A2");
1689 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1690 Assert.AreEqual (expected, value, "#A4");
1691 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#A5");
1693 expected = short.MinValue;
1695 Assert.IsTrue (rdr.Read (), "#B1");
1696 value = rdr.GetValue (0);
1697 Assert.IsNotNull (value, "#B2");
1698 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1699 Assert.AreEqual (expected, value, "#B4");
1700 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#B5");
1702 expected = (short) 0;
1704 Assert.IsTrue (rdr.Read (), "#C1");
1705 value = rdr.GetValue (0);
1706 Assert.IsNotNull (value, "#C2");
1707 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1708 Assert.AreEqual (expected, value, "#C4");
1709 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#C5");
1711 expected = DBNull.Value;
1713 Assert.IsTrue (rdr.Read (), "#D1");
1714 value = rdr.GetValue (0);
1715 Assert.IsNotNull (value, "#D2");
1716 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1717 Assert.AreEqual (expected, value, "#D4");
1718 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#D5");
1721 using (IDataReader rdr = cmd.ExecuteReader ()) {
1722 expected = short.MaxValue;
1724 Assert.IsTrue (rdr.Read (), "#E1");
1725 value = rdr.GetValue (0);
1726 Assert.IsNotNull (value, "#E2");
1727 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1728 Assert.AreEqual (expected, value, "#E4");
1729 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#E5");
1731 expected = short.MinValue;
1733 Assert.IsTrue (rdr.Read (), "#F1");
1734 value = rdr.GetValue (0);
1735 Assert.IsNotNull (value, "#F2");
1736 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1737 Assert.AreEqual (expected, value, "#F4");
1738 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#F5");
1740 expected = (short) 0;
1742 Assert.IsTrue (rdr.Read (), "#G1");
1743 value = rdr.GetValue (0);
1744 Assert.IsNotNull (value, "#G2");
1745 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1746 Assert.AreEqual (expected, value, "#G4");
1747 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#G5");
1749 expected = DBNull.Value;
1751 Assert.IsTrue (rdr.Read (), "#H1");
1752 value = rdr.GetValue (0);
1753 Assert.IsNotNull (value, "#H2");
1754 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1755 Assert.AreEqual (expected, value, "#H4");
1756 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#H5");
1761 public void GetValue_Type_Text ()
1766 cmd.CommandText = "select type_text from string_family order by id asc";
1767 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1770 Assert.IsTrue (rdr.Read (), "#A1");
1771 value = rdr.GetValue (0);
1772 Assert.IsNotNull (value, "#A2");
1773 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1774 Assert.AreEqual (expected, value, "#A4");
1775 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1777 StringBuilder sb = new StringBuilder ();
1778 for (int i = 0; i < 30; i++)
1779 sb.Append ("longtext ");
1780 expected = sb.ToString ();
1782 Assert.IsTrue (rdr.Read (), "#B1");
1783 value = rdr.GetValue (0);
1784 Assert.IsNotNull (value, "#B2");
1785 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1786 Assert.AreEqual (expected, value, "#B4");
1787 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1789 expected = string.Empty;
1791 Assert.IsTrue (rdr.Read (), "#C1");
1792 value = rdr.GetValue (0);
1793 Assert.IsNotNull (value, "#C2");
1794 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1795 Assert.AreEqual (expected, value, "#C4");
1796 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1798 expected = DBNull.Value;
1800 Assert.IsTrue (rdr.Read (), "#D1");
1801 value = rdr.GetValue (0);
1802 Assert.IsNotNull (value, "#D2");
1803 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1804 Assert.AreEqual (expected, value, "#D4");
1805 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1808 using (IDataReader rdr = cmd.ExecuteReader ()) {
1811 Assert.IsTrue (rdr.Read (), "#E1");
1812 value = rdr.GetValue (0);
1813 Assert.IsNotNull (value, "#E2");
1814 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1815 Assert.AreEqual (expected, value, "#E4");
1816 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1818 StringBuilder sb = new StringBuilder ();
1819 for (int i = 0; i < 30; i++)
1820 sb.Append ("longtext ");
1821 expected = sb.ToString ();
1823 Assert.IsTrue (rdr.Read (), "#F1");
1824 value = rdr.GetValue (0);
1825 Assert.IsNotNull (value, "#F2");
1826 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1827 Assert.AreEqual (expected, value, "#F4");
1828 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1830 expected = string.Empty;
1832 Assert.IsTrue (rdr.Read (), "#G1");
1833 value = rdr.GetValue (0);
1834 Assert.IsNotNull (value, "#G2");
1835 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1836 Assert.AreEqual (expected, value, "#G4");
1837 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1839 expected = DBNull.Value;
1841 Assert.IsTrue (rdr.Read (), "#H1");
1842 value = rdr.GetValue (0);
1843 Assert.IsNotNull (value, "#H2");
1844 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1845 Assert.AreEqual (expected, value, "#H4");
1846 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1851 public void GetValue_Type_TinyInt ()
1856 cmd.CommandText = "select type_tinyint from numeric_family order by id asc";
1857 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1858 expected = byte.MaxValue;
1860 Assert.IsTrue (rdr.Read (), "#A1");
1861 value = rdr.GetValue (0);
1862 Assert.IsNotNull (value, "#A2");
1863 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1864 Assert.AreEqual (expected, value, "#A4");
1865 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#A5");
1867 expected = byte.MinValue;
1869 Assert.IsTrue (rdr.Read (), "#B1");
1870 value = rdr.GetValue (0);
1871 Assert.IsNotNull (value, "#B2");
1872 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1873 Assert.AreEqual (expected, value, "#B4");
1874 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#B5");
1876 expected = (byte) 0x00;
1878 Assert.IsTrue (rdr.Read (), "#C1");
1879 value = rdr.GetValue (0);
1880 Assert.IsNotNull (value, "#C2");
1881 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1882 Assert.AreEqual (expected, value, "#C4");
1883 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#C5");
1885 expected = DBNull.Value;
1887 Assert.IsTrue (rdr.Read (), "#D1");
1888 value = rdr.GetValue (0);
1889 Assert.IsNotNull (value, "#D2");
1890 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1891 Assert.AreEqual (expected, value, "#D4");
1892 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#D5");
1895 using (IDataReader rdr = cmd.ExecuteReader ()) {
1896 expected = byte.MaxValue;
1898 Assert.IsTrue (rdr.Read (), "#E1");
1899 value = rdr.GetValue (0);
1900 Assert.IsNotNull (value, "#E2");
1901 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1902 Assert.AreEqual (expected, value, "#E4");
1903 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#E5");
1905 expected = byte.MinValue;
1907 Assert.IsTrue (rdr.Read (), "#F1");
1908 value = rdr.GetValue (0);
1909 Assert.IsNotNull (value, "#F2");
1910 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1911 Assert.AreEqual (expected, value, "#F4");
1912 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#F5");
1914 expected = (byte) 0x00;
1916 Assert.IsTrue (rdr.Read (), "#G1");
1917 value = rdr.GetValue (0);
1918 Assert.IsNotNull (value, "#G2");
1919 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1920 Assert.AreEqual (expected, value, "#G4");
1921 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#G5");
1923 expected = DBNull.Value;
1925 Assert.IsTrue (rdr.Read (), "#H1");
1926 value = rdr.GetValue (0);
1927 Assert.IsNotNull (value, "#H2");
1928 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1929 Assert.AreEqual (expected, value, "#H4");
1930 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#H5");
1935 public void GetValue_Type_VarBinary ()
1940 cmd.CommandText = "select type_varbinary from binary_family order by id asc";
1941 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1942 expected = new byte [] { 0x30, 0x31, 0x32, 0x33,
1943 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
1944 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1945 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34,
1946 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x44,
1949 Assert.IsTrue (rdr.Read (), "#A1");
1950 value = rdr.GetValue (0);
1951 Assert.IsNotNull (value, "#A2");
1952 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1953 Assert.AreEqual (expected, value, "#A4");
1954 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1956 expected = new byte [] { 0x00, 0x39, 0x38, 0x37,
1957 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
1958 0x31, 0x32, 0x33, 0x34 };
1960 Assert.IsTrue (rdr.Read (), "#B1");
1961 value = rdr.GetValue (0);
1962 Assert.IsNotNull (value, "#B2");
1963 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1964 Assert.AreEqual (expected, value, "#B4");
1965 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1967 expected = new byte [0];
1969 Assert.IsTrue (rdr.Read (), "#C1");
1970 value = rdr.GetValue (0);
1971 Assert.IsNotNull (value, "#C2");
1972 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1973 Assert.AreEqual (expected, value, "#C4");
1974 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1976 expected = DBNull.Value;
1978 Assert.IsTrue (rdr.Read (), "#D1");
1979 value = rdr.GetValue (0);
1980 Assert.IsNotNull (value, "#D2");
1981 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1982 Assert.AreEqual (DBNull.Value, value, "#D4");
1983 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1986 using (IDataReader rdr = cmd.ExecuteReader ()) {
1987 expected = new byte [] { 0x30, 0x31, 0x32, 0x33,
1988 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
1989 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1990 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34,
1991 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x44,
1994 Assert.IsTrue (rdr.Read (), "#E1");
1995 value = rdr.GetValue (0);
1996 Assert.IsNotNull (value, "#E2");
1997 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1998 Assert.AreEqual (expected, value, "#E4");
1999 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
2001 expected = new byte [] { 0x00, 0x39, 0x38, 0x37,
2002 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
2003 0x31, 0x32, 0x33, 0x34 };
2005 Assert.IsTrue (rdr.Read (), "#F1");
2006 value = rdr.GetValue (0);
2007 Assert.IsNotNull (value, "#F2");
2008 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
2009 Assert.AreEqual (expected, value, "#F4");
2010 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
2012 expected = new byte [0];
2014 Assert.IsTrue (rdr.Read (), "#G1");
2015 value = rdr.GetValue (0);
2016 Assert.IsNotNull (value, "#G2");
2017 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
2018 Assert.AreEqual (expected, value, "#G4");
2019 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
2021 expected = DBNull.Value;
2023 Assert.IsTrue (rdr.Read (), "#H1");
2024 value = rdr.GetValue (0);
2025 Assert.IsNotNull (value, "#H2");
2026 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
2027 Assert.AreEqual (expected, value, "#H4");
2028 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
2033 public void GetValue_Type_VarChar ()
2038 cmd.CommandText = "select type_varchar from string_family order by id asc";
2039 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2040 expected = "varchar";
2042 Assert.IsTrue (rdr.Read (), "#A1");
2043 value = rdr.GetValue (0);
2044 Assert.IsNotNull (value, "#A2");
2045 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
2046 Assert.AreEqual (expected, value, "#A4");
2047 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
2049 expected = "varchar ";
2051 Assert.IsTrue (rdr.Read (), "#B1");
2052 value = rdr.GetValue (0);
2053 Assert.IsNotNull (value, "#B2");
2054 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
2055 Assert.AreEqual (expected, value, "#B4");
2056 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
2058 expected = string.Empty;
2060 Assert.IsTrue (rdr.Read (), "#C1");
2061 value = rdr.GetValue (0);
2062 Assert.IsNotNull (value, "#C2");
2063 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
2064 Assert.AreEqual (expected, value, "#C4");
2065 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
2067 expected = DBNull.Value;
2069 Assert.IsTrue (rdr.Read (), "#D1");
2070 value = rdr.GetValue (0);
2071 Assert.IsNotNull (value, "#D2");
2072 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
2073 Assert.AreEqual (expected, value, "#D4");
2074 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
2077 using (IDataReader rdr = cmd.ExecuteReader ()) {
2078 expected = "varchar";
2080 Assert.IsTrue (rdr.Read (), "#E1");
2081 value = rdr.GetValue (0);
2082 Assert.IsNotNull (value, "#E2");
2083 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
2084 Assert.AreEqual (expected, value, "#E4");
2085 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
2087 expected = "varchar ";
2089 Assert.IsTrue (rdr.Read (), "#F1");
2090 value = rdr.GetValue (0);
2091 Assert.IsNotNull (value, "#F2");
2092 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
2093 Assert.AreEqual (expected, value, "#F4");
2094 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
2096 expected = string.Empty;
2098 Assert.IsTrue (rdr.Read (), "#G1");
2099 value = rdr.GetValue (0);
2100 Assert.IsNotNull (value, "#G2");
2101 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
2102 Assert.AreEqual (expected, value, "#G4");
2103 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
2105 expected = DBNull.Value;
2107 Assert.IsTrue (rdr.Read (), "#H1");
2108 value = rdr.GetValue (0);
2109 Assert.IsNotNull (value, "#H2");
2110 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
2111 Assert.AreEqual (expected, value, "#H4");
2112 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
2117 public void GetBytes ()
2119 //Console.WriteLine ("GetBytes - first_executereader");
2120 byte [] expected = new byte [] { 0x32, 0x56, 0x00, 0x44, 0x22 };
2121 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2123 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2124 Assert.IsTrue (reader.Read (), "#A1");
2126 // Get By Parts for the column blob
2127 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2132 byte [] val = new byte [totalsize];
2133 //Console.WriteLine ("GetBytes:: totalsize={0}", totalsize);
2135 ret = reader.GetBytes (0, offset, val, offset,
2136 (int) Math.Min (buffsize, totalsize - count));
2137 offset += (int) ret;
2139 } while (count < totalsize);
2141 Assert.AreEqual (expected.Length, count, "#A2");
2142 Assert.AreEqual (expected, val, "#A3");
2145 //Console.WriteLine ("GetBytes - second_executereader");
2146 using (IDataReader reader = cmd.ExecuteReader ()) {
2147 Assert.IsTrue (reader.Read (), "#B1");
2149 // Get By Parts for the column blob
2150 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2155 byte [] val = new byte [totalsize];
2158 ret = reader.GetBytes (0, offset, val, offset,
2159 (int) Math.Min (buffsize, totalsize - count));
2160 offset += (int) ret;
2162 } while (count < totalsize);
2164 Assert.AreEqual (expected.Length, count, "#B2");
2165 Assert.AreEqual (expected, val, "#B3");
2168 //Console.WriteLine ("GetBytes - third_executereader");
2169 // buffer size > (buffer offset + length) > remaining data
2170 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2171 Assert.IsTrue (reader.Read ());
2173 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2174 byte [] val = new byte [totalsize + 5];
2175 int buffer_offset = 3;
2177 long ret = reader.GetBytes (0, 0, val, buffer_offset, (int) totalsize);
2178 Assert.AreEqual (expected.Length, ret, "#C1");
2179 for (int i = 0; i < buffer_offset; i++)
2180 Assert.AreEqual (0x00, val [i], "#C2:" + i);
2181 for (int i = 0; i < totalsize; i++)
2182 Assert.AreEqual (expected [i], val [buffer_offset + i], "#C3:" + i);
2185 //Console.WriteLine ("GetBytes - fourth_executereader");
2186 // buffer size > (buffer offset + length) > remaining data
2187 using (IDataReader reader = cmd.ExecuteReader ()) {
2188 Assert.IsTrue (reader.Read ());
2190 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2191 byte [] val = new byte [totalsize + 5];
2192 int buffer_offset = 3;
2194 long ret = reader.GetBytes (0, 0, val, buffer_offset, (int) totalsize);
2195 Assert.AreEqual (expected.Length, ret, "#D1");
2196 for (int i = 0; i < buffer_offset; i++)
2197 Assert.AreEqual (0x00, val [i], "#D2:" + i);
2198 for (int i = 0; i < totalsize; i++)
2199 Assert.AreEqual (expected [i], val [buffer_offset + i], "#D3:" + i);
2202 /* FIXME: dataIndex is currently ignored */
2204 behavior = CommandBehavior.SingleResult | CommandBehavior.SequentialAccess;
2205 using (IDataReader reader = cmd.ExecuteReader (behavior)) {
2206 Assert.IsTrue (reader.Read (), "#E1");
2208 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2210 int bufferIndex = 3;
2212 byte [] val = new byte [totalsize + bufferIndex];
2213 for (int i = 0; i < val.Length; i++)
2215 ret = reader.GetBytes (0, 1L, val, bufferIndex, (int) (totalsize - 2));
2216 Assert.AreEqual (3, ret, "#E2");
2217 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#E3");
2219 reader.GetBytes (0, 3L, val, 1, 2);
2220 Assert.Fail ("#E4");
2221 } catch (InvalidOperationException ex) {
2222 // Invalid GetBytes attempt at dataIndex '3'.
2223 // With CommandBehavior.SequentialAccess, you
2224 // may only read from dataIndex '4' or greater
2225 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E5");
2226 Assert.IsNull (ex.InnerException, "#E6");
2227 Assert.IsNotNull (ex.Message, "#E7");
2228 Assert.IsTrue (ex.Message.IndexOf ("CommandBehavior.SequentialAccess") != -1, "#E8:" + ex.Message);
2229 Assert.IsTrue (ex.Message.IndexOf ("'" + 3L.ToString (CultureInfo.InvariantCulture) + "'") != -1, "#E9:" + ex.Message);
2230 Assert.IsTrue (ex.Message.IndexOf ("'" + 4L.ToString (CultureInfo.InvariantCulture) + "'") != -1, "#E10:" + ex.Message);
2233 ret = reader.GetBytes (0, 4L, val, bufferIndex + 4, 2);
2234 Assert.AreEqual (1, ret, "#E11");
2235 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x22 }, val, "#E12");
2238 //Console.WriteLine ("GetBytes - fifth_executereader");
2239 behavior = CommandBehavior.SingleResult;
2240 using (IDataReader reader = cmd.ExecuteReader (behavior)) {
2241 Assert.IsTrue (reader.Read (), "#F1");
2243 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2245 int bufferIndex = 3;
2247 byte [] val = new byte [totalsize + bufferIndex];
2248 for (int i = 0; i < val.Length; i++)
2250 ret = reader.GetBytes (0, 1L, val, bufferIndex, (int) (totalsize - 2));
2251 Assert.AreEqual (3, ret, "#F2");
2252 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#F3");
2253 ret = reader.GetBytes (0, 3L, val, 1, 2);
2254 Assert.AreEqual (2, ret, "#F4");
2255 Assert.AreEqual (new byte [] { 0x0a, 0x44, 0x22, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#F5");
2261 public void GetBytes_Buffer_Null ()
2263 //Console.WriteLine ("GetBytes_Buffer_Null- first_executereader");
2264 cmd.CommandText = "SELECT type_blob FROM binary_family where id in (1,2,3,4) order by id";
2266 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2267 Assert.IsTrue (reader.Read (), "#A1");
2268 Assert.AreEqual (5, reader.GetBytes (0, 0, null, 0, 0), "#A2");
2270 Assert.IsTrue (reader.Read (), "#B1");
2271 Assert.AreEqual (275, reader.GetBytes (0, 0, null, 0, 0), "#B2");
2273 Assert.IsTrue (reader.Read (), "#C1");
2274 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#C2");
2276 Assert.IsTrue (reader.Read (), "#D1");
2277 if (conn is SqlConnection) {
2279 reader.GetBytes (0, 0, null, 0, 0);
2280 Assert.Fail ("#D2");
2281 } catch (SqlNullValueException ex) {
2282 // Data is Null. This method or
2283 // property cannot be called on
2285 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#D3");
2286 Assert.IsNull (ex.InnerException, "#D4");
2287 Assert.IsNotNull (ex.Message, "#D5");
2290 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#D2");
2294 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2295 Assert.IsTrue (reader.Read (), "#E1");
2296 Assert.AreEqual (5, reader.GetBytes (0, 5, null, 3, 8), "#E2");
2298 Assert.IsTrue (reader.Read (), "#F1");
2299 Assert.AreEqual (275, reader.GetBytes (0, 5, null, 3, 4), "#F2");
2301 Assert.IsTrue (reader.Read (), "#G1");
2302 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#G2");
2304 Assert.IsTrue (reader.Read (), "#H1");
2305 if (conn is SqlConnection) {
2307 reader.GetBytes (0, 5, null, 3, 4);
2308 Assert.Fail ("#H2");
2309 } catch (SqlNullValueException ex) {
2310 // Data is Null. This method or
2311 // property cannot be called on
2313 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#H3");
2314 Assert.IsNull (ex.InnerException, "#H4");
2315 Assert.IsNotNull (ex.Message, "#H5");
2318 Assert.AreEqual (-1, reader.GetBytes (0, 5, null, 3, 4), "#H2");
2322 using (IDataReader reader = cmd.ExecuteReader ()) {
2323 Assert.IsTrue (reader.Read (), "#I1");
2324 Assert.AreEqual (5, reader.GetBytes (0, 0, null, 0, 0), "#I2");
2326 Assert.IsTrue (reader.Read (), "#J1");
2327 Assert.AreEqual (275, reader.GetBytes (0, 0, null, 0, 0), "#J2");
2329 Assert.IsTrue (reader.Read (), "#K1");
2330 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#K2");
2332 Assert.IsTrue (reader.Read (), "#L1");
2333 if (conn is SqlConnection) {
2335 reader.GetBytes (0, 0, null, 0, 0);
2336 Assert.Fail ("#L2");
2337 } catch (SqlNullValueException ex) {
2338 // Data is Null. This method or
2339 // property cannot be called on
2341 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#L3");
2342 Assert.IsNull (ex.InnerException, "#L4");
2343 Assert.IsNotNull (ex.Message, "#L5");
2347 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#L2");
2350 reader.GetBytes (0, 0, null, 0, 0);
2351 Assert.Fail ("#L2");
2352 } catch (InvalidCastException) {
2353 // Unable to cast object of type
2354 // 'System.DBNull' to type 'System.Byte[]'
2360 using (IDataReader reader = cmd.ExecuteReader ()) {
2361 Assert.IsTrue (reader.Read (), "#M1");
2362 Assert.AreEqual (5, reader.GetBytes (0, 5, null, 3, 8), "#M2");
2364 Assert.IsTrue (reader.Read (), "#N1");
2365 Assert.AreEqual (275, reader.GetBytes (0, 5, null, 3, 4), "#N2");
2367 Assert.IsTrue (reader.Read (), "#O1");
2368 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#O2");
2370 Assert.IsTrue (reader.Read (), "#P1");
2371 if (conn is SqlConnection) {
2373 reader.GetBytes (0, 5, null, 3, 4);
2374 Assert.Fail ("#P2");
2375 } catch (SqlNullValueException ex) {
2376 // Data is Null. This method or
2377 // property cannot be called on
2379 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#P3");
2380 Assert.IsNull (ex.InnerException, "#P4");
2381 Assert.IsNotNull (ex.Message, "#P5");
2385 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#L2");
2388 reader.GetBytes (0, 0, null, 0, 0);
2389 Assert.Fail ("#L2");
2390 } catch (InvalidCastException) {
2391 // Unable to cast object of type
2392 // 'System.DBNull' to type 'System.Byte[]'
2400 [Category("NotWorking")]
2401 public void GetBytes_DataIndex_Overflow ()
2403 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 2";
2405 //Console.WriteLine ("GetBytes_DataIndex_Overflow - first_executereader");
2406 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2407 Assert.IsTrue (reader.Read ());
2409 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2410 byte [] val = new byte [totalsize * 2];
2413 // dataIndex > total size, length = 0
2414 ret = reader.GetBytes (0, totalsize + 5, val, 0, 0);
2415 Assert.AreEqual (0, ret, "#C1");
2416 // dataIndex > total size, length < total size
2417 ret = reader.GetBytes (0, totalsize + 5, val, 0, 5);
2418 Assert.AreEqual (0, ret, "#C2");
2419 // dataIndex > total size, length > total size
2420 ret = reader.GetBytes (0, totalsize + 5, val, 0, (int) (totalsize + 5));
2421 Assert.AreEqual (0, ret, "#C3");
2424 //Console.WriteLine ("GetBytes_DataIndex_Overflow - second_executereader");
2425 using (IDataReader reader = cmd.ExecuteReader ()) {
2426 Assert.IsTrue (reader.Read ());
2428 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2429 byte [] val = new byte [totalsize * 2];
2432 // dataIndex > total size, length = 0
2433 ret = reader.GetBytes (0, totalsize + 5, val, 0, 0);
2434 Assert.AreEqual (0, ret, "#B1");
2435 // dataIndex > total size, length < total size
2436 ret = reader.GetBytes (0, totalsize + 5, val, 0, 5);
2437 Assert.AreEqual (0, ret, "#B2");
2438 // dataIndex > total size, length > total size
2439 ret = reader.GetBytes (0, totalsize + 5, val, 0, (int) (totalsize + 5));
2440 Assert.AreEqual (0, ret, "#B3");
2445 public void GetBytes_DataIndex_OffSet ()
2447 //Console.WriteLine ("GetBytes_DataIndex_Offset - first_executereader");
2448 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 2";
2450 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleResult | CommandBehavior.SequentialAccess)) {
2451 Assert.IsTrue (reader.Read ());
2453 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2454 byte [] val = new byte [totalsize];
2457 // start reading at index 0
2458 ret = reader.GetBytes (0, 0, val, 0, 5);
2459 Assert.AreEqual (5, ret, "#A1");
2460 for (int i = 0; i < ret; i++)
2461 Assert.AreEqual (long_bytes [i], val [i], "#A2:" + i);
2462 Assert.AreEqual (0x00, val [5], "#A3");
2464 // attempt to read data prior to current pointer
2466 reader.GetBytes (0, 4, val, 0, 5);
2467 Assert.Fail ("#B1");
2468 } catch (InvalidOperationException ex) {
2469 // Invalid GetBytes attempt at dataIndex '4'
2470 // With CommandBehavior.SequentialAccess,
2471 // you may only read from dataIndex '5'
2473 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2474 Assert.IsNull (ex.InnerException, "#B3");
2475 Assert.IsNotNull (ex.Message, "#B4");
2476 Assert.IsTrue (ex.Message.IndexOf ("'4'") != -1, "#B5:" + ex.Message);
2477 Assert.IsTrue (ex.Message.IndexOf ("'5'") != -1, "#B6:" + ex.Message);
2480 // continue reading at current pointer
2481 ret = reader.GetBytes (0, 5, val, 5, 6);
2482 Assert.AreEqual (6, ret, "#C1");
2483 for (int i = 0; i < 11; i++)
2484 Assert.AreEqual (long_bytes [i], val [i], "#C2:" + i);
2485 Assert.AreEqual (0x00, val [11], "#C3");
2487 // skip 4 characters
2488 ret = reader.GetBytes (0, 15, val, 13, (val.Length - 13));
2489 Assert.AreEqual (260, ret, "#D1");
2490 for (int i = 0; i < 11; i++)
2491 Assert.AreEqual (long_bytes [i], val [i], "#D2:" + i);
2492 for (int i = 11; i < 13; i++)
2493 Assert.AreEqual (0x00, val [i], "#D3:" + i);
2494 for (int i = 13; i < (totalsize - 4); i++)
2495 Assert.AreEqual (long_bytes [i + 2], val [i], "#D4:" + i);
2498 //Console.WriteLine ("GetBytes_DataIndex_Offset - second_executereader");
2499 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleResult | CommandBehavior.SequentialAccess)) {
2500 Assert.IsTrue (reader.Read ());
2502 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2503 byte [] val = new byte [totalsize];
2506 int offset = (int) totalsize - 5;
2507 int buffer_offset = 7;
2509 // start reading at a specific position
2510 ret = reader.GetBytes (0, offset, val, buffer_offset,
2511 val.Length - buffer_offset);
2512 Assert.AreEqual (5, ret, "#E1");
2513 for (int i = 0; i < buffer_offset; i++)
2514 Assert.AreEqual (0x00, val [i], "#E2:" + i);
2515 for (int i = 0; i < ret; i++)
2516 Assert.AreEqual (long_bytes [offset + i], val [buffer_offset + i], "#E3:" + i);
2517 for (int i = (buffer_offset + (int) ret); i < val.Length; i++)
2518 Assert.AreEqual (0x00, val [i], "#E4:" + i);
2523 public void GetBytes_Reader_Closed ()
2525 //Console.WriteLine ("GetBytes_Reader_Closed - first_executereader");
2526 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2528 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2529 Assert.IsTrue (reader.Read (), "#1");
2533 reader.GetBytes (0, 0, null, -1, 0);
2535 } catch (InvalidOperationException ex) {
2536 // No data exists for the row/column
2537 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
2538 Assert.IsNull (ex.InnerException, "#4");
2539 Assert.IsNotNull (ex.Message, "#5");
2546 public void GetBytes_Reader_NoData ()
2548 //Console.WriteLine ("GetBytes_Reader_NoData - first_executereader");
2549 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2551 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2553 reader.GetBytes (0, 0, null, -1, 0);
2555 } catch (InvalidOperationException ex) {
2556 // No data exists for the row/column
2557 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
2558 Assert.IsNull (ex.InnerException, "#4");
2559 Assert.IsNotNull (ex.Message, "#5");
2565 public void GetSchemaTableTest_AutoIncrement ()
2567 cmd.CommandText = "select type_autoincrement from numeric_family";
2568 cmd.ExecuteNonQuery ();
2569 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly)) {
2570 DataTable schemaTable = reader.GetSchemaTable ();
2571 Assert.IsTrue ((bool) schemaTable.Rows [0]["IsAutoIncrement"], "#1");
2573 if (!RunningOnMono) {
2574 /* FIXME: we always set it to false */
2575 if (schemaTable.Columns.Contains ("IsIdentity"))
2576 Assert.IsTrue ((bool) schemaTable.Rows [0] ["IsIdentity"], "#2");
2582 [Category("NotWorking")]
2583 public void GetValues_Reader_Closed ()
2585 //Console.WriteLine ("GetValues_Reader_Closed - first_executereader");
2586 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2588 using (IDataReader rdr = cmd.ExecuteReader ()) {
2589 Assert.IsTrue (rdr.Read ());
2593 rdr.GetValues ((object []) null);
2595 } catch (ArgumentNullException ex) {
2596 // No data exists for the row/column
2597 Assert.IsNull (ex.InnerException, "#3");
2598 Assert.IsNotNull (ex.Message, "#4");
2604 [Category("NotWorking")]
2605 public void GetValues_Reader_NoData ()
2607 //Console.WriteLine ("GetValues_Reader_NoData - first_executereader");
2608 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
2610 using (IDataReader rdr = cmd.ExecuteReader ()) {
2612 rdr.GetValues ((object []) null);
2613 Assert.Fail ("#A1");
2614 } catch (ArgumentNullException ex) {
2615 // No data exists for the row/column
2616 Assert.IsNull (ex.InnerException, "#A3");
2617 Assert.IsNotNull (ex.Message, "#A4");
2620 Assert.IsFalse (rdr.Read (), "#B");
2623 rdr.GetValues ((object []) null);
2624 Assert.Fail ("#C1");
2625 } catch (ArgumentNullException ex) {
2626 // No data exists for the row/column
2627 Assert.IsNull (ex.InnerException, "#C3");
2628 Assert.IsNotNull (ex.Message, "#C4");
2633 static bool RunningOnMono {
2635 return (Type.GetType ("System.MonoType", false) != null);