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)
8 // Copyright (c) 2004 Novell Inc., and the individuals listed on the
11 // Permission is hereby granted, free of charge, to any person
12 // obtaining a copy of this software and associated documentation
13 // files (the "Software"), to deal in the Software without
14 // restriction, including without limitation the rights to use, copy,
15 // modify, merge, publish, distribute, sublicense, and/or sell copies
16 // of the Software, and to permit persons to whom the Software is
17 // furnished to do so, subject to the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
26 // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
28 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33 using System.Data.Common;
34 using System.Data.Odbc;
35 using System.Data.SqlClient;
36 using System.Data.SqlTypes;
37 using System.Globalization;
42 using NUnit.Framework;
44 namespace MonoTests.System.Data
48 [Category ("sqlserver")]
49 public class DataReaderTest
51 static byte [] long_bytes = new byte [] {
52 0x00, 0x66, 0x06, 0x66, 0x97, 0x00, 0x66, 0x06, 0x66,
53 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
54 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
55 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
56 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
57 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
58 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
59 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
60 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
61 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
62 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
63 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
64 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
65 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
66 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
67 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
68 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
69 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
70 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
71 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
72 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
73 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
74 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
75 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
76 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
77 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66,
78 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
79 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
80 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
81 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
82 0x06, 0x66, 0x06, 0x66, 0x98};
90 conn = ConnectionManager.Singleton.Connection;
91 ConnectionManager.Singleton.OpenConnection ();
92 cmd = conn.CreateCommand ();
96 public void TearDown ()
100 ConnectionManager.Singleton.CloseConnection ();
104 public void FieldCount ()
106 IDataReader reader = null;
109 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
110 reader = cmd.ExecuteReader ();
111 Assert.AreEqual (6, reader.FieldCount);
119 public void FieldCount_Command_Disposed ()
121 IDataReader reader = null;
124 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
125 reader = cmd.ExecuteReader ();
127 Assert.AreEqual (6, reader.FieldCount);
135 public void FieldCount_Reader_Closed ()
137 IDataReader reader = null;
140 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
141 reader = cmd.ExecuteReader ();
144 int fieldcount = reader.FieldCount;
145 Assert.Fail ("#1:" + fieldcount);
146 } catch (InvalidOperationException ex) {
147 // Invalid attempt to FieldCount when
149 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
150 Assert.IsNull (ex.InnerException, "#3");
151 Assert.IsNotNull (ex.Message, "#4");
160 public void GetChars_Index_Invalid ()
162 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
164 using (IDataReader rdr = cmd.ExecuteReader ()) {
165 Assert.IsTrue (rdr.Read ());
168 rdr.GetChars (-1, 0, (char []) null, 0, 0);
170 } catch (IndexOutOfRangeException ex) {
171 // Index was outside the bounds of the array
172 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
173 Assert.IsNull (ex.InnerException, "#A3");
174 Assert.IsNotNull (ex.Message, "#A4");
178 rdr.GetChars (1, 0, (char []) null, 0, 0);
180 } catch (IndexOutOfRangeException ex) {
181 // Index was outside the bounds of the array
182 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
183 Assert.IsNull (ex.InnerException, "#B3");
184 Assert.IsNotNull (ex.Message, "#B4");
188 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
189 Assert.IsTrue (rdr.Read ());
192 rdr.GetChars (-1, 0, (char []) null, 0, 0);
194 } catch (IndexOutOfRangeException ex) {
195 // Index was outside the bounds of the array
196 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#C2");
197 Assert.IsNull (ex.InnerException, "#C3");
198 Assert.IsNotNull (ex.Message, "#C4");
202 rdr.GetChars (1, 0, (char []) null, 0, 0);
204 } catch (IndexOutOfRangeException ex) {
205 // Index was outside the bounds of the array
206 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#D2");
207 Assert.IsNull (ex.InnerException, "#D3");
208 Assert.IsNotNull (ex.Message, "#D4");
214 public void GetChars_Reader_Closed ()
216 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
218 using (IDataReader rdr = cmd.ExecuteReader ()) {
219 Assert.IsTrue (rdr.Read ());
223 rdr.GetChars (-1, 0, (char []) null, 0, 0);
225 } catch (InvalidOperationException ex) {
226 // No data exists for the row/column
227 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
228 Assert.IsNull (ex.InnerException, "#A3");
229 Assert.IsNotNull (ex.Message, "#A4");
233 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
234 Assert.IsTrue (rdr.Read ());
238 rdr.GetChars (-1, 0, (char []) null, 0, 0);
240 } catch (InvalidOperationException ex) {
241 // No data exists for the row/column
242 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
243 Assert.IsNull (ex.InnerException, "#B3");
244 Assert.IsNotNull (ex.Message, "#B4");
250 public void GetChars_Reader_NoData ()
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 (InvalidOperationException ex) {
259 // No data exists for the row/column
260 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
261 Assert.IsNull (ex.InnerException, "#A3");
262 Assert.IsNotNull (ex.Message, "#A4");
265 Assert.IsFalse (rdr.Read (), "#B");
268 rdr.GetChars (-1, 0, (char []) null, 0, 0);
270 } catch (InvalidOperationException ex) {
271 // No data exists for the row/column
272 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
273 Assert.IsNull (ex.InnerException, "#C3");
274 Assert.IsNotNull (ex.Message, "#C4");
280 public void GetDataTypeName ()
282 IDataReader reader = null;
285 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
286 reader = cmd.ExecuteReader ();
288 switch (ConnectionManager.Singleton.Engine.Type) {
289 case EngineType.SQLServer:
290 Assert.AreEqual ("int", reader.GetDataTypeName (0), "#1");
292 case EngineType.MySQL:
293 Assert.AreEqual ("integer", reader.GetDataTypeName (0), "#1");
296 Assert.Fail ("Engine type not supported.");
299 Assert.AreEqual ("varchar", reader.GetDataTypeName (1), "#2");
300 Assert.AreEqual ("varchar", reader.GetDataTypeName (2), "#3");
301 Assert.AreEqual ("datetime", reader.GetDataTypeName (3), "#4");
302 Assert.AreEqual ("datetime", reader.GetDataTypeName (4), "#5");
303 Assert.AreEqual ("varchar", reader.GetDataTypeName (5), "#6");
311 public void GetDataTypeName_Index_Invalid ()
313 IDataReader reader = null;
316 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
317 reader = cmd.ExecuteReader ();
320 reader.GetDataTypeName (-1);
322 } catch (IndexOutOfRangeException ex) {
323 // Index was outside the bounds of the array
324 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
325 Assert.IsNull (ex.InnerException, "#A3");
326 Assert.IsNotNull (ex.Message, "#A4");
330 reader.GetDataTypeName (6);
332 } catch (IndexOutOfRangeException ex) {
333 // Index was outside the bounds of the array
334 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
335 Assert.IsNull (ex.InnerException, "#B3");
336 Assert.IsNotNull (ex.Message, "#B4");
345 public void GetDataTypeName_Reader_Closed ()
347 IDataReader reader = null;
350 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
351 reader = cmd.ExecuteReader ();
355 reader.GetDataTypeName (0);
357 } catch (InvalidOperationException ex) {
358 // No data exists for the row/column
359 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
360 Assert.IsNull (ex.InnerException, "#3");
361 Assert.IsNotNull (ex.Message, "#4");
370 public void GetFieldType ()
372 IDataReader reader = null;
375 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
376 reader = cmd.ExecuteReader ();
377 Assert.AreEqual (typeof (int), reader.GetFieldType (0), "#1");
378 Assert.AreEqual (typeof (string), reader.GetFieldType (2), "#2");
379 Assert.AreEqual (typeof (DateTime), reader.GetFieldType (4), "#3");
387 public void GetFieldType_Index_Invalid ()
389 IDataReader reader = null;
392 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
393 reader = cmd.ExecuteReader ();
395 reader.GetFieldType (-1);
397 } catch (IndexOutOfRangeException ex) {
398 // Index was outside the bounds of the array
399 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
400 Assert.IsNull (ex.InnerException, "#A3");
401 Assert.IsNotNull (ex.Message, "#A4");
405 reader.GetFieldType (6);
407 } catch (IndexOutOfRangeException ex) {
408 // Index was outside the bounds of the array
409 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
410 Assert.IsNull (ex.InnerException, "#B3");
411 Assert.IsNotNull (ex.Message, "#B4");
420 public void GetFieldType_Reader_Closed ()
422 IDataReader reader = null;
425 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
426 reader = cmd.ExecuteReader ();
429 reader.GetFieldType (0);
431 } catch (InvalidOperationException ex) {
432 // No data exists for the row/column
433 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
434 Assert.IsNull (ex.InnerException, "#3");
435 Assert.IsNotNull (ex.Message, "#4");
444 public void GetName ()
446 IDataReader reader = null;
449 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
450 reader = cmd.ExecuteReader ();
451 Assert.AreEqual ("id", reader.GetName (0), "#1");
452 Assert.AreEqual ("fname", reader.GetName (1), "#2");
453 Assert.AreEqual ("lname", reader.GetName (2), "#3");
454 Assert.AreEqual ("dob", reader.GetName (3), "#4");
455 Assert.AreEqual ("doj", reader.GetName (4), "#5");
456 Assert.AreEqual ("email", reader.GetName (5), "#6");
464 public void GetName_Index_Invalid ()
466 IDataReader reader = null;
469 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
470 reader = cmd.ExecuteReader ();
474 } catch (IndexOutOfRangeException ex) {
475 // Index was outside the bounds of the array
476 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
477 Assert.IsNull (ex.InnerException, "#A3");
478 Assert.IsNotNull (ex.Message, "#A4");
484 } catch (IndexOutOfRangeException ex) {
485 // Index was outside the bounds of the array
486 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
487 Assert.IsNull (ex.InnerException, "#B3");
488 Assert.IsNotNull (ex.Message, "#B4");
497 public void GetName_Reader_Closed ()
499 IDataReader reader = null;
502 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
503 reader = cmd.ExecuteReader ();
508 } catch (InvalidOperationException ex) {
509 // No data exists for the row/column
510 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
511 Assert.IsNull (ex.InnerException, "#3");
512 Assert.IsNotNull (ex.Message, "#4");
521 public void GetOrdinal ()
523 IDataReader reader = null;
526 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
527 reader = cmd.ExecuteReader ();
528 Assert.AreEqual (0, reader.GetOrdinal ("id"), "#1");
529 Assert.AreEqual (1, reader.GetOrdinal ("fname"), "#2");
530 Assert.AreEqual (2, reader.GetOrdinal ("lname"), "#3");
531 Assert.AreEqual (3, reader.GetOrdinal ("doB"), "#4");
532 Assert.AreEqual (4, reader.GetOrdinal ("doj"), "#5");
533 Assert.AreEqual (5, reader.GetOrdinal ("EmaiL"), "#6");
534 Assert.AreEqual (0, reader.GetOrdinal ("iD"), "#7");
535 Assert.AreEqual (5, reader.GetOrdinal ("eMail"), "#8");
543 public void GetOrdinal_Name_NotFound ()
545 IDataReader reader = null;
548 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
549 reader = cmd.ExecuteReader ();
551 reader.GetOrdinal ("non_existing_column");
553 } catch (IndexOutOfRangeException ex) {
554 // Index was outside the bounds of the array
555 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
556 Assert.IsNull (ex.InnerException, "#A3");
557 Assert.IsNotNull (ex.Message, "#A4");
561 reader.GetOrdinal (string.Empty);
563 } catch (IndexOutOfRangeException ex) {
564 // Index was outside the bounds of the array
565 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
566 Assert.IsNull (ex.InnerException, "#B3");
567 Assert.IsNotNull (ex.Message, "#B4");
576 public void GetOrdinal_Name_Null ()
578 IDataReader reader = null;
581 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
582 reader = cmd.ExecuteReader ();
584 reader.GetOrdinal (null);
586 } catch (ArgumentNullException ex) {
587 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
588 Assert.IsNull (ex.InnerException, "#3");
589 Assert.IsNotNull (ex.Message, "#4");
590 Assert.AreEqual ("fieldName", ex.ParamName, "#5");
599 public void GetOrdinal_Reader_Closed ()
601 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
603 using (IDataReader rdr = cmd.ExecuteReader ()) {
607 rdr.GetOrdinal (null);
609 } catch (InvalidOperationException ex) {
610 // No data exists for the row/column
611 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
612 Assert.IsNull (ex.InnerException, "#A3");
613 Assert.IsNotNull (ex.Message, "#A4");
619 public void GetOrdinal_Reader_NoData ()
621 cmd.CommandText = "SELECT * FROM employee WHERE id = 666";
623 using (IDataReader rdr = cmd.ExecuteReader ()) {
624 Assert.AreEqual (0, rdr.GetOrdinal ("id"), "#A1");
625 Assert.AreEqual (5, rdr.GetOrdinal ("eMail"), "#A2");
627 Assert.IsFalse (rdr.Read (), "#B");
629 Assert.AreEqual (2, rdr.GetOrdinal ("lname"), "#C1");
630 Assert.AreEqual (3, rdr.GetOrdinal ("dob"), "#C2");
635 public void GetSchemaTable_Command_Disposed ()
637 if (RunningOnMono && (conn is OdbcConnection))
638 Assert.Ignore ("Our statement handle is closed when we dispose the (Odbc)Command");
640 IDataReader reader = null;
643 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
644 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly);
646 DataTable schema = reader.GetSchemaTable ();
647 Assert.AreEqual (3, schema.Rows.Count, "RowCount");
655 public void GetSchemaTable_Reader_Closed ()
657 IDataReader reader = null;
660 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
661 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
665 reader.GetSchemaTable ();
667 } catch (InvalidOperationException ex) {
668 // Invalid attempt to call GetSchemaTable
669 // when reader is closed
670 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
671 Assert.IsNull (ex.InnerException, "#3");
672 Assert.IsNotNull (ex.Message, "#4");
681 public void GetNameTest ()
683 cmd.CommandText = "SELECT type_tinyint from numeric_family"; ;
684 using (IDataReader reader = cmd.ExecuteReader ()) {
685 Assert.AreEqual ("type_tinyint", reader.GetName (0), "#1");
689 [Test] // this [Int32]
690 public void Indexer1 ()
692 IDataReader reader = null;
695 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
696 reader = cmd.ExecuteReader ();
697 Assert.IsTrue (reader.Read ());
698 Assert.AreEqual (1, reader [0], "#0");
699 Assert.AreEqual ("suresh", reader [1], "#1");
700 Assert.AreEqual ("kumar", reader [2], "#2");
701 Assert.AreEqual (new DateTime (1978, 8, 22), reader [3], "#3");
702 Assert.AreEqual (new DateTime (2001, 3, 12), reader [4], "#4");
703 Assert.AreEqual ("suresh@gmail.com", reader [5], "#5");
710 [Test] // this [Int32]
711 public void Indexer1_Reader_Closed ()
713 IDataReader reader = null;
716 cmd.CommandText = "select fname from employee";
717 reader = cmd.ExecuteReader ();
722 object value = reader [0];
723 Assert.Fail ("#A1:" + value);
724 } catch (InvalidOperationException ex) {
725 // No data exists for the row/column
726 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
727 Assert.IsNull (ex.InnerException, "#A3");
728 Assert.IsNotNull (ex.Message, "#A4");
731 reader = cmd.ExecuteReader ();
735 object value = reader [0];
736 Assert.Fail ("#B1:" + value);
737 } catch (InvalidOperationException ex) {
738 // No data exists for the row/column
739 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
740 Assert.IsNull (ex.InnerException, "#B3");
741 Assert.IsNotNull (ex.Message, "#B4");
749 [Test] // this [Int32]
750 public void Indexer1_Reader_NoData ()
752 IDataReader reader = null;
755 cmd.CommandText = "select fname from employee WHERE lname='kumar'";
756 reader = cmd.ExecuteReader ();
758 object value = reader [0];
759 Assert.Fail ("#A1:" + value);
760 } catch (InvalidOperationException ex) {
761 // No data exists for the row/column
762 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
763 Assert.IsNull (ex.InnerException, "#A3");
764 Assert.IsNotNull (ex.Message, "#A4");
767 Assert.IsTrue (reader.Read ());
768 Assert.IsFalse (reader.Read ());
771 object value = reader [0];
772 Assert.Fail ("#B1:" + value);
773 } catch (InvalidOperationException ex) {
774 // No data exists for the row/column
775 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
776 Assert.IsNull (ex.InnerException, "#B3");
777 Assert.IsNotNull (ex.Message, "#B4");
785 [Test] // this [Int32]
786 public void Indexer1_Value_Invalid ()
788 IDataReader reader = null;
791 cmd.CommandText = "select fname from employee";
792 reader = cmd.ExecuteReader ();
793 Assert.IsTrue (reader.Read ());
795 object value = reader [-1];
796 Assert.Fail ("#A1:" + value);
797 } catch (IndexOutOfRangeException ex) {
798 // Index was outside the bounds of the array
799 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
800 Assert.IsNull (ex.InnerException, "#A3");
801 Assert.IsNotNull (ex.Message, "#A4");
805 object value = reader [1];
806 Assert.Fail ("#B1:" + value);
807 } catch (IndexOutOfRangeException ex) {
808 // Index was outside the bounds of the array
809 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
810 Assert.IsNull (ex.InnerException, "#B3");
811 Assert.IsNotNull (ex.Message, "#B4");
819 [Test] // this [String]
820 public void Indexer2 ()
822 IDataReader reader = null;
825 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
826 reader = cmd.ExecuteReader ();
827 Assert.IsTrue (reader.Read ());
828 Assert.AreEqual (1, reader ["id"], "id");
829 Assert.AreEqual ("suresh", reader ["fname"], "fname");
830 Assert.AreEqual ("kumar", reader ["lname"], "lname");
831 Assert.AreEqual (new DateTime (1978, 8, 22), reader ["doB"], "doB");
832 Assert.AreEqual (new DateTime (2001, 3, 12), reader ["doj"], "doj");
833 Assert.AreEqual ("suresh@gmail.com", reader ["EmaiL"], "EmaiL");
834 Assert.AreEqual (1, reader ["iD"], "iD");
835 Assert.AreEqual ("suresh@gmail.com", reader ["eMail"], "eMail");
842 [Test] // this [String]
843 public void Indexer2_Reader_Closed ()
845 IDataReader reader = null;
848 cmd.CommandText = "select fname from employee";
849 reader = cmd.ExecuteReader ();
854 object value = reader ["fname"];
855 Assert.Fail ("#A1:" + value);
856 } catch (InvalidOperationException ex) {
857 // No data exists for the row/column
858 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
859 Assert.IsNull (ex.InnerException, "#A3");
860 Assert.IsNotNull (ex.Message, "#A4");
863 reader = cmd.ExecuteReader ();
867 object value = reader ["fname"];
868 Assert.Fail ("#B1:" + value);
869 } catch (InvalidOperationException ex) {
870 // No data exists for the row/column
871 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
872 Assert.IsNull (ex.InnerException, "#B3");
873 Assert.IsNotNull (ex.Message, "#B4");
881 [Test] // this [String]
882 public void Indexer2_Reader_NoData ()
884 IDataReader reader = null;
887 cmd.CommandText = "select fname from employee WHERE lname='kumar'";
888 reader = cmd.ExecuteReader ();
891 object value = reader ["fname"];
892 Assert.Fail ("#A1:" + value);
893 } catch (InvalidOperationException ex) {
894 // No data exists for the row/column
895 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
896 Assert.IsNull (ex.InnerException, "#A3");
897 Assert.IsNotNull (ex.Message, "#A4");
900 Assert.IsTrue (reader.Read ());
901 Assert.IsFalse (reader.Read ());
904 object value = reader ["fname"];
905 Assert.Fail ("#B1:" + value);
906 } catch (InvalidOperationException ex) {
907 // No data exists for the row/column
908 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
909 Assert.IsNull (ex.InnerException, "#B3");
910 Assert.IsNotNull (ex.Message, "#B4");
918 [Test] // this [String]
919 public void Indexer2_Value_NotFound ()
921 IDataReader reader = null;
924 cmd.CommandText = "select fname from employee";
925 reader = cmd.ExecuteReader ();
926 Assert.IsTrue (reader.Read ());
928 object value = reader ["address"];
929 Assert.Fail ("#A1:" + value);
930 } catch (IndexOutOfRangeException ex) {
931 // Index was outside the bounds of the array
932 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
933 Assert.IsNull (ex.InnerException, "#A3");
934 Assert.IsNotNull (ex.Message, "#A4");
938 object value = reader [string.Empty];
939 Assert.Fail ("#B1:" + value);
940 } catch (IndexOutOfRangeException ex) {
941 // Index was outside the bounds of the array
942 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
943 Assert.IsNull (ex.InnerException, "#B3");
944 Assert.IsNotNull (ex.Message, "#B4");
952 [Test] // this [String]
953 public void Indexer2_Value_Null ()
955 IDataReader reader = null;
958 cmd.CommandText = "select fname from employee";
959 reader = cmd.ExecuteReader ();
961 object value = reader [(string) null];
962 Assert.Fail ("#1:" + value);
963 } catch (ArgumentNullException ex) {
964 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
965 Assert.IsNull (ex.InnerException, "#3");
966 Assert.IsNotNull (ex.Message, "#4");
967 Assert.AreEqual ("fieldName", ex.ParamName, "#5");
976 public void IsClosed_Command_Disposed ()
978 IDataReader reader = null;
981 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
982 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
983 Assert.IsFalse (reader.IsClosed, "#1");
985 Assert.IsFalse (reader.IsClosed, "#2");
993 public void IsClosed_Connection_Closed ()
996 Assert.Ignore ("We do not mark the corresponding Reader closed when we close a Connection.");
998 IDataReader reader = null;
1001 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
1002 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
1003 Assert.IsFalse (reader.IsClosed, "#1");
1004 ConnectionManager.Singleton.CloseConnection ();
1005 Assert.IsTrue (reader.IsClosed, "#2");
1013 public void IsClosed_Reader_Closed ()
1015 IDataReader reader = null;
1018 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
1019 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
1020 Assert.IsFalse (reader.IsClosed, "#1");
1022 Assert.IsTrue (reader.IsClosed, "#2");
1030 public void NumericTest()
1032 cmd.CommandText = "select type_numeric1 from numeric_family where id = 1;";
1034 using (IDataReader reader = cmd.ExecuteReader ()) {
1035 Assert.IsTrue (reader.Read(), "#1");
1036 object value = reader.GetValue (0);
1037 Assert.AreEqual (typeof (decimal), value.GetType (), "#2");
1038 Assert.AreEqual (1000m, value, "#3");
1043 public void TinyIntTest ()
1045 cmd.CommandText = "select type_tinyint from numeric_family where id = 1;";
1046 using (IDataReader reader = cmd.ExecuteReader ()) {
1047 Assert.IsTrue (reader.Read (), "#1");
1048 object value = reader.GetValue (0);
1049 Assert.AreEqual (typeof (byte), value.GetType (), "#2");
1050 Assert.AreEqual (255, value, "#3");
1055 public void GetByteTest ()
1057 cmd.CommandText = "select type_tinyint from numeric_family where id = 1";
1058 using (IDataReader reader = cmd.ExecuteReader ()) {
1059 Assert.IsTrue (reader.Read (), "#1");
1060 byte b = reader.GetByte (0);
1061 Assert.AreEqual (255, b, "#2");
1066 public void GetValue_Reader_Closed ()
1068 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
1070 using (IDataReader reader = cmd.ExecuteReader ()) {
1071 Assert.IsTrue (reader.Read ());
1075 reader.GetValue (-1);
1077 } catch (InvalidOperationException ex) {
1078 // No data exists for the row/column
1079 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1080 Assert.IsNull (ex.InnerException, "#3");
1081 Assert.IsNotNull (ex.Message, "#4");
1087 public void GetValue_Reader_NoData ()
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 cmd.CommandText = "select type_blob from binary_family order by id asc";
1211 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1212 expected = new byte [] { 0x32, 0x56, 0x00,
1215 Assert.IsTrue (rdr.Read (), "#A1");
1216 value = rdr.GetValue (0);
1217 Assert.IsNotNull (value, "#A2");
1218 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1219 Assert.AreEqual (expected, value, "#A4");
1220 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1222 expected = long_bytes;
1224 Assert.IsTrue (rdr.Read (), "#B1");
1225 value = rdr.GetValue (0);
1226 Assert.IsNotNull (value, "#B2");
1227 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1228 Assert.AreEqual (expected, value, "#B4");
1229 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1231 expected = new byte [0];
1233 Assert.IsTrue (rdr.Read (), "#C1");
1234 value = rdr.GetValue (0);
1235 Assert.IsNotNull (value, "#C2");
1236 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1237 Assert.AreEqual (expected, value, "#C4");
1238 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1240 expected = DBNull.Value;
1242 Assert.IsTrue (rdr.Read (), "#D1");
1243 value = rdr.GetValue (0);
1244 Assert.IsNotNull (value, "#D2");
1245 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1246 Assert.AreEqual (DBNull.Value, value, "#D4");
1247 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1250 using (IDataReader rdr = cmd.ExecuteReader ()) {
1251 expected = new byte [] { 0x32, 0x56, 0x00,
1254 Assert.IsTrue (rdr.Read (), "#E1");
1255 value = rdr.GetValue (0);
1256 Assert.IsNotNull (value, "#E2");
1257 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1258 Assert.AreEqual (expected, value, "#E4");
1259 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
1261 expected = long_bytes;
1263 Assert.IsTrue (rdr.Read (), "#F1");
1264 value = rdr.GetValue (0);
1265 Assert.IsNotNull (value, "#F2");
1266 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1267 Assert.AreEqual (expected, value, "#F4");
1268 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
1270 expected = new byte [0];
1272 Assert.IsTrue (rdr.Read (), "#G1");
1273 value = rdr.GetValue (0);
1274 Assert.IsNotNull (value, "#G2");
1275 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1276 Assert.AreEqual (expected, value, "#G4");
1277 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
1279 expected = DBNull.Value;
1281 Assert.IsTrue (rdr.Read (), "#H1");
1282 value = rdr.GetValue (0);
1283 Assert.IsNotNull (value, "#H2");
1284 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1285 Assert.AreEqual (expected, value, "#H4");
1286 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
1291 public void GetValue_Type_Integer ()
1296 cmd.CommandText = "select type_int from numeric_family order by id asc";
1297 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1298 expected = int.MaxValue;
1300 Assert.IsTrue (rdr.Read (), "#A1");
1301 value = rdr.GetValue (0);
1302 Assert.IsNotNull (value, "#A2");
1303 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1304 Assert.AreEqual (expected, value, "#A4");
1305 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#A5");
1307 expected = int.MinValue;
1309 Assert.IsTrue (rdr.Read (), "#B1");
1310 value = rdr.GetValue (0);
1311 Assert.IsNotNull (value, "#B2");
1312 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1313 Assert.AreEqual (expected, value, "#B4");
1314 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#B5");
1318 Assert.IsTrue (rdr.Read (), "#C1");
1319 value = rdr.GetValue (0);
1320 Assert.IsNotNull (value, "#C2");
1321 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1322 Assert.AreEqual (expected, value, "#C4");
1323 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#C5");
1325 expected = DBNull.Value;
1327 Assert.IsTrue (rdr.Read (), "#D1");
1328 value = rdr.GetValue (0);
1329 Assert.IsNotNull (value, "#D2");
1330 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1331 Assert.AreEqual (DBNull.Value, value, "#D4");
1332 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#D5");
1335 using (IDataReader rdr = cmd.ExecuteReader ()) {
1336 expected = int.MaxValue;
1338 Assert.IsTrue (rdr.Read (), "#E1");
1339 value = rdr.GetValue (0);
1340 Assert.IsNotNull (value, "#E2");
1341 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1342 Assert.AreEqual (expected, value, "#E4");
1343 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#E5");
1345 expected = int.MinValue;
1347 Assert.IsTrue (rdr.Read (), "#F1");
1348 value = rdr.GetValue (0);
1349 Assert.IsNotNull (value, "#F2");
1350 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1351 Assert.AreEqual (expected, value, "#F4");
1352 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#F5");
1356 Assert.IsTrue (rdr.Read (), "#G1");
1357 value = rdr.GetValue (0);
1358 Assert.IsNotNull (value, "#G2");
1359 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1360 Assert.AreEqual (expected, value, "#G4");
1361 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#G5");
1363 expected = DBNull.Value;
1365 Assert.IsTrue (rdr.Read (), "#H1");
1366 value = rdr.GetValue (0);
1367 Assert.IsNotNull (value, "#H2");
1368 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1369 Assert.AreEqual (expected, value, "#H4");
1370 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#H5");
1375 public void GetValue_Type_NText ()
1380 cmd.CommandText = "select type_ntext from string_family order by id asc";
1381 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1382 expected = "nt\u092d\u093ext";
1384 Assert.IsTrue (rdr.Read (), "#A1");
1385 value = rdr.GetValue (0);
1386 Assert.IsNotNull (value, "#A2");
1387 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1388 Assert.AreEqual (expected, value, "#A4");
1389 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1391 expected = "nt\u092d\u093ext ";
1393 Assert.IsTrue (rdr.Read (), "#B1");
1394 value = rdr.GetValue (0);
1395 Assert.IsNotNull (value, "#B2");
1396 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1397 Assert.AreEqual (expected, value, "#B4");
1398 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1400 expected = string.Empty;
1402 Assert.IsTrue (rdr.Read (), "#C1");
1403 value = rdr.GetValue (0);
1404 Assert.IsNotNull (value, "#C2");
1405 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1406 Assert.AreEqual (expected, value, "#C4");
1407 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1409 expected = DBNull.Value;
1411 Assert.IsTrue (rdr.Read (), "#D1");
1412 value = rdr.GetValue (0);
1413 Assert.IsNotNull (value, "#D2");
1414 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1415 Assert.AreEqual (expected, value, "#D4");
1416 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1419 using (IDataReader rdr = cmd.ExecuteReader ()) {
1420 expected = "nt\u092d\u093ext";
1422 Assert.IsTrue (rdr.Read (), "#E1");
1423 value = rdr.GetValue (0);
1424 Assert.IsNotNull (value, "#E2");
1425 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1426 Assert.AreEqual (expected, value, "#E4");
1427 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1429 expected = "nt\u092d\u093ext ";
1431 Assert.IsTrue (rdr.Read (), "#F1");
1432 value = rdr.GetValue (0);
1433 Assert.IsNotNull (value, "#F2");
1434 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1435 Assert.AreEqual (expected, value, "#F4");
1436 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1438 expected = string.Empty;
1440 Assert.IsTrue (rdr.Read (), "#G1");
1441 value = rdr.GetValue (0);
1442 Assert.IsNotNull (value, "#G2");
1443 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1444 Assert.AreEqual (expected, value, "#G4");
1445 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1447 expected = DBNull.Value;
1449 Assert.IsTrue (rdr.Read (), "#H1");
1450 value = rdr.GetValue (0);
1451 Assert.IsNotNull (value, "#H2");
1452 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1453 Assert.AreEqual (expected, value, "#H4");
1454 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1459 public void GetValue_Type_NVarChar ()
1464 cmd.CommandText = "select type_nvarchar from string_family order by id asc";
1465 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1466 expected = "nv\u092d\u093e\u0930\u0924r";
1468 Assert.IsTrue (rdr.Read (), "#A1");
1469 value = rdr.GetValue (0);
1470 Assert.IsNotNull (value, "#A2");
1471 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1472 Assert.AreEqual (expected, value, "#A4");
1473 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1475 expected = "nv\u092d\u093e\u0930\u0924r ";
1477 Assert.IsTrue (rdr.Read (), "#B1");
1478 value = rdr.GetValue (0);
1479 Assert.IsNotNull (value, "#B2");
1480 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1481 Assert.AreEqual (expected, value, "#B4");
1482 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1484 expected = string.Empty;
1486 Assert.IsTrue (rdr.Read (), "#C1");
1487 value = rdr.GetValue (0);
1488 Assert.IsNotNull (value, "#C2");
1489 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1490 Assert.AreEqual (expected, value, "#C4");
1491 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1493 expected = DBNull.Value;
1495 Assert.IsTrue (rdr.Read (), "#D1");
1496 value = rdr.GetValue (0);
1497 Assert.IsNotNull (value, "#D2");
1498 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1499 Assert.AreEqual (expected, value, "#D4");
1500 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1503 using (IDataReader rdr = cmd.ExecuteReader ()) {
1504 expected = "nv\u092d\u093e\u0930\u0924r";
1506 Assert.IsTrue (rdr.Read (), "#E1");
1507 value = rdr.GetValue (0);
1508 Assert.IsNotNull (value, "#E2");
1509 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1510 Assert.AreEqual (expected, value, "#E4");
1511 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1513 expected = "nv\u092d\u093e\u0930\u0924r ";
1515 Assert.IsTrue (rdr.Read (), "#F1");
1516 value = rdr.GetValue (0);
1517 Assert.IsNotNull (value, "#F2");
1518 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1519 Assert.AreEqual (expected, value, "#F4");
1520 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1522 expected = string.Empty;
1524 Assert.IsTrue (rdr.Read (), "#G1");
1525 value = rdr.GetValue (0);
1526 Assert.IsNotNull (value, "#G2");
1527 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1528 Assert.AreEqual (expected, value, "#G4");
1529 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1531 expected = DBNull.Value;
1533 Assert.IsTrue (rdr.Read (), "#H1");
1534 value = rdr.GetValue (0);
1535 Assert.IsNotNull (value, "#H2");
1536 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1537 Assert.AreEqual (expected, value, "#H4");
1538 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1543 public void GetValue_Type_Real ()
1548 cmd.CommandText = "select type_float from numeric_family order by id asc";
1549 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1550 expected = 3.40E+38F;
1552 Assert.IsTrue (rdr.Read (), "#A1");
1553 value = rdr.GetValue (0);
1554 Assert.IsNotNull (value, "#A2");
1555 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1556 Assert.AreEqual (expected, value, "#A4");
1557 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#A5");
1559 expected = -3.40E+38F;
1561 Assert.IsTrue (rdr.Read (), "#B1");
1562 value = rdr.GetValue (0);
1563 Assert.IsNotNull (value, "#B2");
1564 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1565 Assert.AreEqual (expected, value, "#B4");
1566 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#B5");
1570 Assert.IsTrue (rdr.Read (), "#C1");
1571 value = rdr.GetValue (0);
1572 Assert.IsNotNull (value, "#C2");
1573 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1574 Assert.AreEqual (expected, value, "#C4");
1575 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#C5");
1577 expected = DBNull.Value;
1579 Assert.IsTrue (rdr.Read (), "#D1");
1580 value = rdr.GetValue (0);
1581 Assert.IsNotNull (value, "#D2");
1582 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1583 Assert.AreEqual (expected, value, "#D4");
1584 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#D5");
1587 using (IDataReader rdr = cmd.ExecuteReader ()) {
1588 expected = 3.40E+38F;
1590 Assert.IsTrue (rdr.Read (), "#E1");
1591 value = rdr.GetValue (0);
1592 Assert.IsNotNull (value, "#E2");
1593 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1594 Assert.AreEqual (expected, value, "#E4");
1595 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#E5");
1597 expected = -3.40E+38F;
1599 Assert.IsTrue (rdr.Read (), "#F1");
1600 value = rdr.GetValue (0);
1601 Assert.IsNotNull (value, "#F2");
1602 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1603 Assert.AreEqual (expected, value, "#F4");
1604 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#F5");
1608 Assert.IsTrue (rdr.Read (), "#G1");
1609 value = rdr.GetValue (0);
1610 Assert.IsNotNull (value, "#G2");
1611 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1612 Assert.AreEqual (expected, value, "#G4");
1613 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#G5");
1615 expected = DBNull.Value;
1617 Assert.IsTrue (rdr.Read (), "#H1");
1618 value = rdr.GetValue (0);
1619 Assert.IsNotNull (value, "#H2");
1620 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1621 Assert.AreEqual (expected, value, "#H4");
1622 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#H5");
1627 public void GetValue_Type_SmallDateTime ()
1632 cmd.CommandText = "select type_smalldatetime from datetime_family order by id asc";
1633 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1634 expected = DateTime.Parse ("2037-12-31 23:59:00");
1636 Assert.IsTrue (rdr.Read (), "#A1");
1637 value = rdr.GetValue (0);
1638 Assert.IsNotNull (value, "#A2");
1639 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1640 Assert.AreEqual (expected, value, "#A4");
1641 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#A5");
1643 expected = DBNull.Value;
1645 Assert.IsTrue (rdr.Read (), "#B1");
1646 value = rdr.GetValue (0);
1647 Assert.IsNotNull (value, "#B2");
1648 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1649 Assert.AreEqual (expected, value, "#B4");
1650 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#B5");
1653 using (IDataReader rdr = cmd.ExecuteReader ()) {
1654 expected = DateTime.Parse ("2037-12-31 23:59:00");
1656 Assert.IsTrue (rdr.Read (), "#C1");
1657 value = rdr.GetValue (0);
1658 Assert.IsNotNull (value, "#C2");
1659 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1660 Assert.AreEqual (expected, value, "#C4");
1661 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#C5");
1663 expected = DBNull.Value;
1665 Assert.IsTrue (rdr.Read (), "#D1");
1666 value = rdr.GetValue (0);
1667 Assert.IsNotNull (value, "#D2");
1668 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1669 Assert.AreEqual (expected, value, "#D4");
1670 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#D5");
1675 public void GetValue_Type_SmallInt ()
1680 cmd.CommandText = "select type_smallint from numeric_family order by id asc";
1681 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1682 expected = short.MaxValue;
1684 Assert.IsTrue (rdr.Read (), "#A1");
1685 value = rdr.GetValue (0);
1686 Assert.IsNotNull (value, "#A2");
1687 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1688 Assert.AreEqual (expected, value, "#A4");
1689 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#A5");
1691 expected = short.MinValue;
1693 Assert.IsTrue (rdr.Read (), "#B1");
1694 value = rdr.GetValue (0);
1695 Assert.IsNotNull (value, "#B2");
1696 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1697 Assert.AreEqual (expected, value, "#B4");
1698 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#B5");
1700 expected = (short) 0;
1702 Assert.IsTrue (rdr.Read (), "#C1");
1703 value = rdr.GetValue (0);
1704 Assert.IsNotNull (value, "#C2");
1705 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1706 Assert.AreEqual (expected, value, "#C4");
1707 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#C5");
1709 expected = DBNull.Value;
1711 Assert.IsTrue (rdr.Read (), "#D1");
1712 value = rdr.GetValue (0);
1713 Assert.IsNotNull (value, "#D2");
1714 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1715 Assert.AreEqual (expected, value, "#D4");
1716 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#D5");
1719 using (IDataReader rdr = cmd.ExecuteReader ()) {
1720 expected = short.MaxValue;
1722 Assert.IsTrue (rdr.Read (), "#E1");
1723 value = rdr.GetValue (0);
1724 Assert.IsNotNull (value, "#E2");
1725 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1726 Assert.AreEqual (expected, value, "#E4");
1727 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#E5");
1729 expected = short.MinValue;
1731 Assert.IsTrue (rdr.Read (), "#F1");
1732 value = rdr.GetValue (0);
1733 Assert.IsNotNull (value, "#F2");
1734 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1735 Assert.AreEqual (expected, value, "#F4");
1736 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#F5");
1738 expected = (short) 0;
1740 Assert.IsTrue (rdr.Read (), "#G1");
1741 value = rdr.GetValue (0);
1742 Assert.IsNotNull (value, "#G2");
1743 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1744 Assert.AreEqual (expected, value, "#G4");
1745 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#G5");
1747 expected = DBNull.Value;
1749 Assert.IsTrue (rdr.Read (), "#H1");
1750 value = rdr.GetValue (0);
1751 Assert.IsNotNull (value, "#H2");
1752 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1753 Assert.AreEqual (expected, value, "#H4");
1754 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#H5");
1759 public void GetValue_Type_Text ()
1764 cmd.CommandText = "select type_text from string_family order by id asc";
1765 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1768 Assert.IsTrue (rdr.Read (), "#A1");
1769 value = rdr.GetValue (0);
1770 Assert.IsNotNull (value, "#A2");
1771 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1772 Assert.AreEqual (expected, value, "#A4");
1773 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1775 StringBuilder sb = new StringBuilder ();
1776 for (int i = 0; i < 30; i++)
1777 sb.Append ("longtext ");
1778 expected = sb.ToString ();
1780 Assert.IsTrue (rdr.Read (), "#B1");
1781 value = rdr.GetValue (0);
1782 Assert.IsNotNull (value, "#B2");
1783 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1784 Assert.AreEqual (expected, value, "#B4");
1785 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1787 expected = string.Empty;
1789 Assert.IsTrue (rdr.Read (), "#C1");
1790 value = rdr.GetValue (0);
1791 Assert.IsNotNull (value, "#C2");
1792 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1793 Assert.AreEqual (expected, value, "#C4");
1794 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1796 expected = DBNull.Value;
1798 Assert.IsTrue (rdr.Read (), "#D1");
1799 value = rdr.GetValue (0);
1800 Assert.IsNotNull (value, "#D2");
1801 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1802 Assert.AreEqual (expected, value, "#D4");
1803 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1806 using (IDataReader rdr = cmd.ExecuteReader ()) {
1809 Assert.IsTrue (rdr.Read (), "#E1");
1810 value = rdr.GetValue (0);
1811 Assert.IsNotNull (value, "#E2");
1812 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1813 Assert.AreEqual (expected, value, "#E4");
1814 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1816 StringBuilder sb = new StringBuilder ();
1817 for (int i = 0; i < 30; i++)
1818 sb.Append ("longtext ");
1819 expected = sb.ToString ();
1821 Assert.IsTrue (rdr.Read (), "#F1");
1822 value = rdr.GetValue (0);
1823 Assert.IsNotNull (value, "#F2");
1824 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1825 Assert.AreEqual (expected, value, "#F4");
1826 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1828 expected = string.Empty;
1830 Assert.IsTrue (rdr.Read (), "#G1");
1831 value = rdr.GetValue (0);
1832 Assert.IsNotNull (value, "#G2");
1833 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1834 Assert.AreEqual (expected, value, "#G4");
1835 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1837 expected = DBNull.Value;
1839 Assert.IsTrue (rdr.Read (), "#H1");
1840 value = rdr.GetValue (0);
1841 Assert.IsNotNull (value, "#H2");
1842 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1843 Assert.AreEqual (expected, value, "#H4");
1844 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1849 public void GetValue_Type_TinyInt ()
1854 cmd.CommandText = "select type_tinyint from numeric_family order by id asc";
1855 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1856 expected = byte.MaxValue;
1858 Assert.IsTrue (rdr.Read (), "#A1");
1859 value = rdr.GetValue (0);
1860 Assert.IsNotNull (value, "#A2");
1861 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1862 Assert.AreEqual (expected, value, "#A4");
1863 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#A5");
1865 expected = byte.MinValue;
1867 Assert.IsTrue (rdr.Read (), "#B1");
1868 value = rdr.GetValue (0);
1869 Assert.IsNotNull (value, "#B2");
1870 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1871 Assert.AreEqual (expected, value, "#B4");
1872 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#B5");
1874 expected = (byte) 0x00;
1876 Assert.IsTrue (rdr.Read (), "#C1");
1877 value = rdr.GetValue (0);
1878 Assert.IsNotNull (value, "#C2");
1879 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1880 Assert.AreEqual (expected, value, "#C4");
1881 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#C5");
1883 expected = DBNull.Value;
1885 Assert.IsTrue (rdr.Read (), "#D1");
1886 value = rdr.GetValue (0);
1887 Assert.IsNotNull (value, "#D2");
1888 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1889 Assert.AreEqual (expected, value, "#D4");
1890 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#D5");
1893 using (IDataReader rdr = cmd.ExecuteReader ()) {
1894 expected = byte.MaxValue;
1896 Assert.IsTrue (rdr.Read (), "#E1");
1897 value = rdr.GetValue (0);
1898 Assert.IsNotNull (value, "#E2");
1899 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1900 Assert.AreEqual (expected, value, "#E4");
1901 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#E5");
1903 expected = byte.MinValue;
1905 Assert.IsTrue (rdr.Read (), "#F1");
1906 value = rdr.GetValue (0);
1907 Assert.IsNotNull (value, "#F2");
1908 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1909 Assert.AreEqual (expected, value, "#F4");
1910 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#F5");
1912 expected = (byte) 0x00;
1914 Assert.IsTrue (rdr.Read (), "#G1");
1915 value = rdr.GetValue (0);
1916 Assert.IsNotNull (value, "#G2");
1917 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1918 Assert.AreEqual (expected, value, "#G4");
1919 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#G5");
1921 expected = DBNull.Value;
1923 Assert.IsTrue (rdr.Read (), "#H1");
1924 value = rdr.GetValue (0);
1925 Assert.IsNotNull (value, "#H2");
1926 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1927 Assert.AreEqual (expected, value, "#H4");
1928 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#H5");
1933 public void GetValue_Type_VarBinary ()
1938 cmd.CommandText = "select type_varbinary from binary_family order by id asc";
1939 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1940 expected = new byte [] { 0x30, 0x31, 0x32, 0x33,
1941 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
1942 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1943 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34,
1944 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x44,
1947 Assert.IsTrue (rdr.Read (), "#A1");
1948 value = rdr.GetValue (0);
1949 Assert.IsNotNull (value, "#A2");
1950 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1951 Assert.AreEqual (expected, value, "#A4");
1952 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1954 expected = new byte [] { 0x00, 0x39, 0x38, 0x37,
1955 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
1956 0x31, 0x32, 0x33, 0x34 };
1958 Assert.IsTrue (rdr.Read (), "#B1");
1959 value = rdr.GetValue (0);
1960 Assert.IsNotNull (value, "#B2");
1961 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1962 Assert.AreEqual (expected, value, "#B4");
1963 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1965 expected = new byte [0];
1967 Assert.IsTrue (rdr.Read (), "#C1");
1968 value = rdr.GetValue (0);
1969 Assert.IsNotNull (value, "#C2");
1970 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1971 Assert.AreEqual (expected, value, "#C4");
1972 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1974 expected = DBNull.Value;
1976 Assert.IsTrue (rdr.Read (), "#D1");
1977 value = rdr.GetValue (0);
1978 Assert.IsNotNull (value, "#D2");
1979 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1980 Assert.AreEqual (DBNull.Value, value, "#D4");
1981 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1984 using (IDataReader rdr = cmd.ExecuteReader ()) {
1985 expected = new byte [] { 0x30, 0x31, 0x32, 0x33,
1986 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
1987 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1988 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34,
1989 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x44,
1992 Assert.IsTrue (rdr.Read (), "#E1");
1993 value = rdr.GetValue (0);
1994 Assert.IsNotNull (value, "#E2");
1995 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1996 Assert.AreEqual (expected, value, "#E4");
1997 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
1999 expected = new byte [] { 0x00, 0x39, 0x38, 0x37,
2000 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
2001 0x31, 0x32, 0x33, 0x34 };
2003 Assert.IsTrue (rdr.Read (), "#F1");
2004 value = rdr.GetValue (0);
2005 Assert.IsNotNull (value, "#F2");
2006 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
2007 Assert.AreEqual (expected, value, "#F4");
2008 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
2010 expected = new byte [0];
2012 Assert.IsTrue (rdr.Read (), "#G1");
2013 value = rdr.GetValue (0);
2014 Assert.IsNotNull (value, "#G2");
2015 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
2016 Assert.AreEqual (expected, value, "#G4");
2017 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
2019 expected = DBNull.Value;
2021 Assert.IsTrue (rdr.Read (), "#H1");
2022 value = rdr.GetValue (0);
2023 Assert.IsNotNull (value, "#H2");
2024 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
2025 Assert.AreEqual (expected, value, "#H4");
2026 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
2031 public void GetValue_Type_VarChar ()
2036 cmd.CommandText = "select type_varchar from string_family order by id asc";
2037 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2038 expected = "varchar";
2040 Assert.IsTrue (rdr.Read (), "#A1");
2041 value = rdr.GetValue (0);
2042 Assert.IsNotNull (value, "#A2");
2043 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
2044 Assert.AreEqual (expected, value, "#A4");
2045 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
2047 expected = "varchar ";
2049 Assert.IsTrue (rdr.Read (), "#B1");
2050 value = rdr.GetValue (0);
2051 Assert.IsNotNull (value, "#B2");
2052 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
2053 Assert.AreEqual (expected, value, "#B4");
2054 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
2056 expected = string.Empty;
2058 Assert.IsTrue (rdr.Read (), "#C1");
2059 value = rdr.GetValue (0);
2060 Assert.IsNotNull (value, "#C2");
2061 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
2062 Assert.AreEqual (expected, value, "#C4");
2063 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
2065 expected = DBNull.Value;
2067 Assert.IsTrue (rdr.Read (), "#D1");
2068 value = rdr.GetValue (0);
2069 Assert.IsNotNull (value, "#D2");
2070 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
2071 Assert.AreEqual (expected, value, "#D4");
2072 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
2075 using (IDataReader rdr = cmd.ExecuteReader ()) {
2076 expected = "varchar";
2078 Assert.IsTrue (rdr.Read (), "#E1");
2079 value = rdr.GetValue (0);
2080 Assert.IsNotNull (value, "#E2");
2081 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
2082 Assert.AreEqual (expected, value, "#E4");
2083 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
2085 expected = "varchar ";
2087 Assert.IsTrue (rdr.Read (), "#F1");
2088 value = rdr.GetValue (0);
2089 Assert.IsNotNull (value, "#F2");
2090 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
2091 Assert.AreEqual (expected, value, "#F4");
2092 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
2094 expected = string.Empty;
2096 Assert.IsTrue (rdr.Read (), "#G1");
2097 value = rdr.GetValue (0);
2098 Assert.IsNotNull (value, "#G2");
2099 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
2100 Assert.AreEqual (expected, value, "#G4");
2101 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
2103 expected = DBNull.Value;
2105 Assert.IsTrue (rdr.Read (), "#H1");
2106 value = rdr.GetValue (0);
2107 Assert.IsNotNull (value, "#H2");
2108 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
2109 Assert.AreEqual (expected, value, "#H4");
2110 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
2115 public void GetBytes ()
2117 byte [] expected = new byte [] { 0x32, 0x56, 0x00, 0x44, 0x22 };
2118 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2120 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2121 Assert.IsTrue (reader.Read (), "#A1");
2123 // Get By Parts for the column blob
2124 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2129 byte [] val = new byte [totalsize];
2131 ret = reader.GetBytes (0, offset, val, offset,
2132 (int) Math.Min (buffsize, totalsize - count));
2133 offset += (int) ret;
2135 } while (count < totalsize);
2137 Assert.AreEqual (expected.Length, count, "#A2");
2138 Assert.AreEqual (expected, val, "#A3");
2141 using (IDataReader reader = cmd.ExecuteReader ()) {
2142 Assert.IsTrue (reader.Read (), "#B1");
2144 // Get By Parts for the column blob
2145 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2150 byte [] val = new byte [totalsize];
2153 ret = reader.GetBytes (0, offset, val, offset,
2154 (int) Math.Min (buffsize, totalsize - count));
2155 offset += (int) ret;
2157 } while (count < totalsize);
2159 Assert.AreEqual (expected.Length, count, "#B2");
2160 Assert.AreEqual (expected, val, "#B3");
2163 // buffer size > (buffer offset + length) > remaining data
2164 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2165 Assert.IsTrue (reader.Read ());
2167 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2168 byte [] val = new byte [totalsize + 5];
2169 int buffer_offset = 3;
2171 long ret = reader.GetBytes (0, 0, val, buffer_offset, (int) totalsize);
2172 Assert.AreEqual (expected.Length, ret, "#C1");
2173 for (int i = 0; i < buffer_offset; i++)
2174 Assert.AreEqual (0x00, val [i], "#C2:" + i);
2175 for (int i = 0; i < totalsize; i++)
2176 Assert.AreEqual (expected [i], val [buffer_offset + i], "#C3:" + i);
2179 // buffer size > (buffer offset + length) > remaining data
2180 using (IDataReader reader = cmd.ExecuteReader ()) {
2181 Assert.IsTrue (reader.Read ());
2183 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2184 byte [] val = new byte [totalsize + 5];
2185 int buffer_offset = 3;
2187 long ret = reader.GetBytes (0, 0, val, buffer_offset, (int) totalsize);
2188 Assert.AreEqual (expected.Length, ret, "#D1");
2189 for (int i = 0; i < buffer_offset; i++)
2190 Assert.AreEqual (0x00, val [i], "#D2:" + i);
2191 for (int i = 0; i < totalsize; i++)
2192 Assert.AreEqual (expected [i], val [buffer_offset + i], "#D3:" + i);
2195 /* FIXME: dataIndex is currently ignored */
2197 behavior = CommandBehavior.SingleResult | CommandBehavior.SequentialAccess;
2198 using (IDataReader reader = cmd.ExecuteReader (behavior)) {
2199 Assert.IsTrue (reader.Read (), "#E1");
2201 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2203 int bufferIndex = 3;
2205 byte [] val = new byte [totalsize + bufferIndex];
2206 for (int i = 0; i < val.Length; i++)
2208 ret = reader.GetBytes (0, 1L, val, bufferIndex, (int) (totalsize - 2));
2209 Assert.AreEqual (3, ret, "#E2");
2210 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#E3");
2212 reader.GetBytes (0, 3L, val, 1, 2);
2213 Assert.Fail ("#E4");
2214 } catch (InvalidOperationException ex) {
2215 // Invalid GetBytes attempt at dataIndex '3'.
2216 // With CommandBehavior.SequentialAccess, you
2217 // may only read from dataIndex '4' or greater
2218 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E5");
2219 Assert.IsNull (ex.InnerException, "#E6");
2220 Assert.IsNotNull (ex.Message, "#E7");
2221 Assert.IsTrue (ex.Message.IndexOf ("CommandBehavior.SequentialAccess") != -1, "#E8:" + ex.Message);
2222 Assert.IsTrue (ex.Message.IndexOf ("'" + 3L.ToString (CultureInfo.InvariantCulture) + "'") != -1, "#E9:" + ex.Message);
2223 Assert.IsTrue (ex.Message.IndexOf ("'" + 4L.ToString (CultureInfo.InvariantCulture) + "'") != -1, "#E10:" + ex.Message);
2226 ret = reader.GetBytes (0, 4L, val, bufferIndex + 4, 2);
2227 Assert.AreEqual (1, ret, "#E11");
2228 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x22 }, val, "#E12");
2231 behavior = CommandBehavior.SingleResult;
2232 using (IDataReader reader = cmd.ExecuteReader (behavior)) {
2233 Assert.IsTrue (reader.Read (), "#F1");
2235 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2237 int bufferIndex = 3;
2239 byte [] val = new byte [totalsize + bufferIndex];
2240 for (int i = 0; i < val.Length; i++)
2242 ret = reader.GetBytes (0, 1L, val, bufferIndex, (int) (totalsize - 2));
2243 Assert.AreEqual (3, ret, "#F2");
2244 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#F3");
2245 ret = reader.GetBytes (0, 3L, val, 1, 2);
2246 Assert.AreEqual (2, ret, "#F4");
2247 Assert.AreEqual (new byte [] { 0x0a, 0x44, 0x22, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#F5");
2253 public void GetBytes_Buffer_Null ()
2255 cmd.CommandText = "SELECT type_blob FROM binary_family where id in (1,2,3,4) order by id";
2257 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2258 Assert.IsTrue (reader.Read (), "#A1");
2259 Assert.AreEqual (5, reader.GetBytes (0, 0, null, 0, 0), "#A2");
2261 Assert.IsTrue (reader.Read (), "#B1");
2262 Assert.AreEqual (275, reader.GetBytes (0, 0, null, 0, 0), "#B2");
2264 Assert.IsTrue (reader.Read (), "#C1");
2265 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#C2");
2267 Assert.IsTrue (reader.Read (), "#D1");
2268 if (conn is SqlConnection) {
2271 reader.GetBytes (0, 0, null, 0, 0);
2272 Assert.Fail ("#D2");
2273 } catch (SqlNullValueException ex) {
2274 // Data is Null. This method or
2275 // property cannot be called on
2277 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#D3");
2278 Assert.IsNull (ex.InnerException, "#D4");
2279 Assert.IsNotNull (ex.Message, "#D5");
2282 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#D2");
2285 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#D2");
2289 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2290 Assert.IsTrue (reader.Read (), "#E1");
2291 Assert.AreEqual (5, reader.GetBytes (0, 5, null, 3, 8), "#E2");
2293 Assert.IsTrue (reader.Read (), "#F1");
2294 Assert.AreEqual (275, reader.GetBytes (0, 5, null, 3, 4), "#F2");
2296 Assert.IsTrue (reader.Read (), "#G1");
2297 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#G2");
2299 Assert.IsTrue (reader.Read (), "#H1");
2300 if (conn is SqlConnection) {
2303 reader.GetBytes (0, 5, null, 3, 4);
2304 Assert.Fail ("#H2");
2305 } catch (SqlNullValueException ex) {
2306 // Data is Null. This method or
2307 // property cannot be called on
2309 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#H3");
2310 Assert.IsNull (ex.InnerException, "#H4");
2311 Assert.IsNotNull (ex.Message, "#H5");
2314 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#H2");
2317 Assert.AreEqual (-1, reader.GetBytes (0, 5, null, 3, 4), "#H2");
2321 using (IDataReader reader = cmd.ExecuteReader ()) {
2322 Assert.IsTrue (reader.Read (), "#I1");
2323 Assert.AreEqual (5, reader.GetBytes (0, 0, null, 0, 0), "#I2");
2325 Assert.IsTrue (reader.Read (), "#J1");
2326 Assert.AreEqual (275, reader.GetBytes (0, 0, null, 0, 0), "#J2");
2328 Assert.IsTrue (reader.Read (), "#K1");
2329 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#K2");
2331 Assert.IsTrue (reader.Read (), "#L1");
2332 if (conn is SqlConnection) {
2334 reader.GetBytes (0, 0, null, 0, 0);
2335 Assert.Fail ("#L2");
2336 } catch (SqlNullValueException ex) {
2337 // Data is Null. This method or
2338 // property cannot be called on
2340 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#L3");
2341 Assert.IsNull (ex.InnerException, "#L4");
2342 Assert.IsNotNull (ex.Message, "#L5");
2346 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#L2");
2349 reader.GetBytes (0, 0, null, 0, 0);
2350 Assert.Fail ("#L2");
2351 } catch (InvalidCastException) {
2352 // Unable to cast object of type
2353 // 'System.DBNull' to type 'System.Byte[]'
2359 using (IDataReader reader = cmd.ExecuteReader ()) {
2360 Assert.IsTrue (reader.Read (), "#M1");
2361 Assert.AreEqual (5, reader.GetBytes (0, 5, null, 3, 8), "#M2");
2363 Assert.IsTrue (reader.Read (), "#N1");
2364 Assert.AreEqual (275, reader.GetBytes (0, 5, null, 3, 4), "#N2");
2366 Assert.IsTrue (reader.Read (), "#O1");
2367 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#O2");
2369 Assert.IsTrue (reader.Read (), "#P1");
2370 if (conn is SqlConnection) {
2372 reader.GetBytes (0, 5, null, 3, 4);
2373 Assert.Fail ("#P2");
2374 } catch (SqlNullValueException ex) {
2375 // Data is Null. This method or
2376 // property cannot be called on
2378 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#P3");
2379 Assert.IsNull (ex.InnerException, "#P4");
2380 Assert.IsNotNull (ex.Message, "#P5");
2384 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#L2");
2387 reader.GetBytes (0, 0, null, 0, 0);
2388 Assert.Fail ("#L2");
2389 } catch (InvalidCastException) {
2390 // Unable to cast object of type
2391 // 'System.DBNull' to type 'System.Byte[]'
2399 public void GetBytes_DataIndex_Overflow ()
2401 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 2";
2403 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2404 Assert.IsTrue (reader.Read ());
2406 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2407 byte [] val = new byte [totalsize * 2];
2410 // dataIndex > total size, length = 0
2411 ret = reader.GetBytes (0, totalsize + 5, val, 0, 0);
2412 Assert.AreEqual (0, ret, "#C1");
2413 // dataIndex > total size, length < total size
2414 ret = reader.GetBytes (0, totalsize + 5, val, 0, 5);
2415 Assert.AreEqual (0, ret, "#C2");
2416 // dataIndex > total size, length > total size
2417 ret = reader.GetBytes (0, totalsize + 5, val, 0, (int) (totalsize + 5));
2418 Assert.AreEqual (0, ret, "#C3");
2421 using (IDataReader reader = cmd.ExecuteReader ()) {
2422 Assert.IsTrue (reader.Read ());
2424 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2425 byte [] val = new byte [totalsize * 2];
2428 // dataIndex > total size, length = 0
2429 ret = reader.GetBytes (0, totalsize + 5, val, 0, 0);
2430 Assert.AreEqual (0, ret, "#B1");
2431 // dataIndex > total size, length < total size
2432 ret = reader.GetBytes (0, totalsize + 5, val, 0, 5);
2433 Assert.AreEqual (0, ret, "#B2");
2434 // dataIndex > total size, length > total size
2435 ret = reader.GetBytes (0, totalsize + 5, val, 0, (int) (totalsize + 5));
2436 Assert.AreEqual (0, ret, "#B3");
2441 public void GetBytes_DataIndex_OffSet ()
2443 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 2";
2445 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleResult | CommandBehavior.SequentialAccess)) {
2446 Assert.IsTrue (reader.Read ());
2448 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2449 byte [] val = new byte [totalsize];
2452 // start reading at index 0
2453 ret = reader.GetBytes (0, 0, val, 0, 5);
2454 Assert.AreEqual (5, ret, "#A1");
2455 for (int i = 0; i < ret; i++)
2456 Assert.AreEqual (long_bytes [i], val [i], "#A2:" + i);
2457 Assert.AreEqual (0x00, val [5], "#A3");
2459 // attempt to read data prior to current pointer
2461 reader.GetBytes (0, 4, val, 0, 5);
2462 Assert.Fail ("#B1");
2463 } catch (InvalidOperationException ex) {
2464 // Invalid GetBytes attempt at dataIndex '4'
2465 // With CommandBehavior.SequentialAccess,
2466 // you may only read from dataIndex '5'
2468 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2469 Assert.IsNull (ex.InnerException, "#B3");
2470 Assert.IsNotNull (ex.Message, "#B4");
2471 Assert.IsTrue (ex.Message.IndexOf ("'4'") != -1, "#B5:" + ex.Message);
2472 Assert.IsTrue (ex.Message.IndexOf ("'5'") != -1, "#B6:" + ex.Message);
2475 // continue reading at current pointer
2476 ret = reader.GetBytes (0, 5, val, 5, 6);
2477 Assert.AreEqual (6, ret, "#C1");
2478 for (int i = 0; i < 11; i++)
2479 Assert.AreEqual (long_bytes [i], val [i], "#C2:" + i);
2480 Assert.AreEqual (0x00, val [11], "#C3");
2482 // skip 4 characters
2483 ret = reader.GetBytes (0, 15, val, 13, (val.Length - 13));
2484 Assert.AreEqual (260, ret, "#D1");
2485 for (int i = 0; i < 11; i++)
2486 Assert.AreEqual (long_bytes [i], val [i], "#D2:" + i);
2487 for (int i = 11; i < 13; i++)
2488 Assert.AreEqual (0x00, val [i], "#D3:" + i);
2489 for (int i = 13; i < (totalsize - 4); i++)
2490 Assert.AreEqual (long_bytes [i + 2], val [i], "#D4:" + i);
2493 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleResult | CommandBehavior.SequentialAccess)) {
2494 Assert.IsTrue (reader.Read ());
2496 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2497 byte [] val = new byte [totalsize];
2500 int offset = (int) totalsize - 5;
2501 int buffer_offset = 7;
2503 // start reading at a specific position
2504 ret = reader.GetBytes (0, offset, val, buffer_offset,
2505 val.Length - buffer_offset);
2506 Assert.AreEqual (5, ret, "#E1");
2507 for (int i = 0; i < buffer_offset; i++)
2508 Assert.AreEqual (0x00, val [i], "#E2:" + i);
2509 for (int i = 0; i < ret; i++)
2510 Assert.AreEqual (long_bytes [offset + i], val [buffer_offset + i], "#E3:" + i);
2511 for (int i = (buffer_offset + (int) ret); i < val.Length; i++)
2512 Assert.AreEqual (0x00, val [i], "#E4:" + i);
2517 public void GetBytes_Reader_Closed ()
2519 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2521 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2522 Assert.IsTrue (reader.Read (), "#1");
2526 reader.GetBytes (0, 0, null, -1, 0);
2528 } catch (InvalidOperationException ex) {
2529 // No data exists for the row/column
2530 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
2531 Assert.IsNull (ex.InnerException, "#4");
2532 Assert.IsNotNull (ex.Message, "#5");
2538 public void GetBytes_Reader_NoData ()
2540 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2542 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2544 reader.GetBytes (0, 0, null, -1, 0);
2546 } catch (InvalidOperationException ex) {
2547 // No data exists for the row/column
2548 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
2549 Assert.IsNull (ex.InnerException, "#4");
2550 Assert.IsNotNull (ex.Message, "#5");
2556 public void GetSchemaTableTest_AutoIncrement ()
2558 cmd.CommandText = "select type_autoincrement from numeric_family";
2559 cmd.ExecuteNonQuery ();
2560 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly)) {
2561 DataTable schemaTable = reader.GetSchemaTable ();
2562 Assert.IsTrue ((bool) schemaTable.Rows [0]["IsAutoIncrement"], "#1");
2564 if (!RunningOnMono) {
2565 /* FIXME: we always set it to false */
2566 if (schemaTable.Columns.Contains ("IsIdentity"))
2567 Assert.IsTrue ((bool) schemaTable.Rows [0] ["IsIdentity"], "#2");
2573 public void GetValues_Reader_Closed ()
2575 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2577 using (IDataReader rdr = cmd.ExecuteReader ()) {
2578 Assert.IsTrue (rdr.Read ());
2582 rdr.GetValues ((object []) null);
2584 } catch (InvalidOperationException ex) {
2585 // No data exists for the row/column
2586 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
2587 Assert.IsNull (ex.InnerException, "#3");
2588 Assert.IsNotNull (ex.Message, "#4");
2594 public void GetValues_Reader_NoData ()
2596 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
2598 using (IDataReader rdr = cmd.ExecuteReader ()) {
2600 rdr.GetValues ((object []) null);
2601 Assert.Fail ("#A1");
2602 } catch (InvalidOperationException ex) {
2603 // No data exists for the row/column
2604 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
2605 Assert.IsNull (ex.InnerException, "#A3");
2606 Assert.IsNotNull (ex.Message, "#A4");
2609 Assert.IsFalse (rdr.Read (), "#B");
2612 rdr.GetValues ((object []) null);
2613 Assert.Fail ("#C1");
2614 } catch (InvalidOperationException ex) {
2615 // No data exists for the row/column
2616 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2617 Assert.IsNull (ex.InnerException, "#C3");
2618 Assert.IsNotNull (ex.Message, "#C4");
2623 static bool RunningOnMono {
2625 return (Type.GetType ("System.MonoType", false) != null);