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.Odbc;
36 using System.Data.SqlClient;
37 using System.Data.SqlTypes;
38 using System.Globalization;
43 using NUnit.Framework;
45 namespace MonoTests.System.Data
49 [Category ("sqlserver")]
50 public class DataReaderTest
52 static byte [] long_bytes = new byte [] {
53 0x00, 0x66, 0x06, 0x66, 0x97, 0x00, 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, 0x97, 0x06, 0x66, 0x06, 0x66,
79 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06,
80 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06, 0x66,
81 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97, 0x06,
82 0x66, 0x06, 0x66, 0x97, 0x06, 0x66, 0x06, 0x66, 0x97,
83 0x06, 0x66, 0x06, 0x66, 0x98};
91 conn = ConnectionManager.Singleton.Connection;
92 ConnectionManager.Singleton.OpenConnection ();
93 cmd = conn.CreateCommand ();
97 public void TearDown ()
101 ConnectionManager.Singleton.CloseConnection ();
105 public void FieldCount ()
107 IDataReader reader = null;
110 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
111 reader = cmd.ExecuteReader ();
112 Assert.AreEqual (6, reader.FieldCount);
120 public void FieldCount_Command_Disposed ()
122 IDataReader reader = null;
125 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
126 reader = cmd.ExecuteReader ();
128 Assert.AreEqual (6, reader.FieldCount);
136 public void FieldCount_Reader_Closed ()
138 IDataReader reader = null;
141 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
142 reader = cmd.ExecuteReader ();
145 int fieldcount = reader.FieldCount;
146 Assert.Fail ("#1:" + fieldcount);
147 } catch (InvalidOperationException ex) {
148 // Invalid attempt to FieldCount when
150 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
151 Assert.IsNull (ex.InnerException, "#3");
152 Assert.IsNotNull (ex.Message, "#4");
161 public void GetChars_Index_Invalid ()
163 //Console.WriteLine ("In GetChars_Index_Invalid - first_executereader");
164 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
166 using (IDataReader rdr = cmd.ExecuteReader ()) {
167 Assert.IsTrue (rdr.Read ());
170 rdr.GetChars (-1, 0, (char []) null, 0, 0);
172 } catch (IndexOutOfRangeException ex) {
173 // Index was outside the bounds of the array
174 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
175 Assert.IsNull (ex.InnerException, "#A3");
176 Assert.IsNotNull (ex.Message, "#A4");
180 rdr.GetChars (1, 0, (char []) null, 0, 0);
182 } catch (IndexOutOfRangeException ex) {
183 // Index was outside the bounds of the array
184 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
185 Assert.IsNull (ex.InnerException, "#B3");
186 Assert.IsNotNull (ex.Message, "#B4");
190 //Console.WriteLine ("In GetChars_Index_Invalid - second_executereader");
191 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
192 Assert.IsTrue (rdr.Read ());
195 rdr.GetChars (-1, 0, (char []) null, 0, 0);
197 } catch (IndexOutOfRangeException ex) {
198 // Index was outside the bounds of the array
199 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#C2");
200 Assert.IsNull (ex.InnerException, "#C3");
201 Assert.IsNotNull (ex.Message, "#C4");
205 rdr.GetChars (1, 0, (char []) null, 0, 0);
207 } catch (IndexOutOfRangeException ex) {
208 // Index was outside the bounds of the array
209 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#D2");
210 Assert.IsNull (ex.InnerException, "#D3");
211 Assert.IsNotNull (ex.Message, "#D4");
217 public void GetChars_Reader_Closed ()
219 //Console.WriteLine ("GetChars_Reader_Closed - first_executereader");
220 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
222 using (IDataReader rdr = cmd.ExecuteReader ()) {
223 Assert.IsTrue (rdr.Read ());
227 rdr.GetChars (-1, 0, (char []) null, 0, 0);
229 } catch (InvalidOperationException ex) {
230 // No data exists for the row/column
231 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
232 Assert.IsNull (ex.InnerException, "#A3");
233 Assert.IsNotNull (ex.Message, "#A4");
237 //Console.WriteLine ("GetChars_Reader_Closed - second_executereader");
238 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
239 Assert.IsTrue (rdr.Read ());
243 rdr.GetChars (-1, 0, (char []) null, 0, 0);
245 } catch (InvalidOperationException ex) {
246 // No data exists for the row/column
247 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
248 Assert.IsNull (ex.InnerException, "#B3");
249 Assert.IsNotNull (ex.Message, "#B4");
255 public void GetChars_Reader_NoData ()
257 //Console.WriteLine ("GetChars_Reader_NoData - first_executereader");
258 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
260 using (IDataReader rdr = cmd.ExecuteReader ()) {
262 rdr.GetChars (-1, 0, (char []) null, 0, 0);
264 } catch (InvalidOperationException ex) {
265 // No data exists for the row/column
266 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
267 Assert.IsNull (ex.InnerException, "#A3");
268 Assert.IsNotNull (ex.Message, "#A4");
271 Assert.IsFalse (rdr.Read (), "#B");
274 rdr.GetChars (-1, 0, (char []) null, 0, 0);
276 } catch (InvalidOperationException ex) {
277 // No data exists for the row/column
278 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
279 Assert.IsNull (ex.InnerException, "#C3");
280 Assert.IsNotNull (ex.Message, "#C4");
286 public void GetDataTypeName ()
288 IDataReader reader = null;
291 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
292 reader = cmd.ExecuteReader ();
294 switch (ConnectionManager.Singleton.Engine.Type) {
295 case EngineType.SQLServer:
296 Assert.AreEqual ("int", reader.GetDataTypeName (0), "#1");
298 case EngineType.MySQL:
299 Assert.AreEqual ("integer", reader.GetDataTypeName (0), "#1");
302 Assert.Fail ("Engine type not supported.");
305 Assert.AreEqual ("varchar", reader.GetDataTypeName (1), "#2");
306 Assert.AreEqual ("varchar", reader.GetDataTypeName (2), "#3");
307 Assert.AreEqual ("datetime", reader.GetDataTypeName (3), "#4");
308 Assert.AreEqual ("datetime", reader.GetDataTypeName (4), "#5");
309 Assert.AreEqual ("varchar", reader.GetDataTypeName (5), "#6");
317 public void GetDataTypeName_Index_Invalid ()
319 IDataReader reader = null;
322 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
323 reader = cmd.ExecuteReader ();
326 reader.GetDataTypeName (-1);
328 } catch (IndexOutOfRangeException ex) {
329 // Index was outside the bounds of the array
330 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
331 Assert.IsNull (ex.InnerException, "#A3");
332 Assert.IsNotNull (ex.Message, "#A4");
336 reader.GetDataTypeName (6);
338 } catch (IndexOutOfRangeException ex) {
339 // Index was outside the bounds of the array
340 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
341 Assert.IsNull (ex.InnerException, "#B3");
342 Assert.IsNotNull (ex.Message, "#B4");
351 public void GetDataTypeName_Reader_Closed ()
353 IDataReader reader = null;
356 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
357 reader = cmd.ExecuteReader ();
361 reader.GetDataTypeName (0);
363 } catch (InvalidOperationException ex) {
364 // No data exists for the row/column
365 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
366 Assert.IsNull (ex.InnerException, "#3");
367 Assert.IsNotNull (ex.Message, "#4");
376 public void GetFieldType ()
378 IDataReader reader = null;
381 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
382 reader = cmd.ExecuteReader ();
383 Assert.AreEqual (typeof (int), reader.GetFieldType (0), "#1");
384 Assert.AreEqual (typeof (string), reader.GetFieldType (2), "#2");
385 Assert.AreEqual (typeof (DateTime), reader.GetFieldType (4), "#3");
393 public void GetFieldType_Index_Invalid ()
395 IDataReader reader = null;
398 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
399 reader = cmd.ExecuteReader ();
401 reader.GetFieldType (-1);
403 } catch (IndexOutOfRangeException ex) {
404 // Index was outside the bounds of the array
405 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
406 Assert.IsNull (ex.InnerException, "#A3");
407 Assert.IsNotNull (ex.Message, "#A4");
411 reader.GetFieldType (6);
413 } catch (IndexOutOfRangeException ex) {
414 // Index was outside the bounds of the array
415 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
416 Assert.IsNull (ex.InnerException, "#B3");
417 Assert.IsNotNull (ex.Message, "#B4");
426 public void GetFieldType_Reader_Closed ()
428 IDataReader reader = null;
431 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
432 reader = cmd.ExecuteReader ();
435 reader.GetFieldType (0);
437 } catch (InvalidOperationException ex) {
438 // No data exists for the row/column
439 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
440 Assert.IsNull (ex.InnerException, "#3");
441 Assert.IsNotNull (ex.Message, "#4");
450 public void GetName ()
452 IDataReader reader = null;
455 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
456 reader = cmd.ExecuteReader ();
457 Assert.AreEqual ("id", reader.GetName (0), "#1");
458 Assert.AreEqual ("fname", reader.GetName (1), "#2");
459 Assert.AreEqual ("lname", reader.GetName (2), "#3");
460 Assert.AreEqual ("dob", reader.GetName (3), "#4");
461 Assert.AreEqual ("doj", reader.GetName (4), "#5");
462 Assert.AreEqual ("email", reader.GetName (5), "#6");
470 public void GetName_Index_Invalid ()
472 IDataReader reader = null;
475 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
476 reader = cmd.ExecuteReader ();
480 } catch (IndexOutOfRangeException ex) {
481 // Index was outside the bounds of the array
482 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
483 Assert.IsNull (ex.InnerException, "#A3");
484 Assert.IsNotNull (ex.Message, "#A4");
490 } catch (IndexOutOfRangeException ex) {
491 // Index was outside the bounds of the array
492 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
493 Assert.IsNull (ex.InnerException, "#B3");
494 Assert.IsNotNull (ex.Message, "#B4");
503 public void GetName_Reader_Closed ()
505 IDataReader reader = null;
508 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
509 reader = cmd.ExecuteReader ();
514 } catch (InvalidOperationException ex) {
515 // No data exists for the row/column
516 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
517 Assert.IsNull (ex.InnerException, "#3");
518 Assert.IsNotNull (ex.Message, "#4");
527 public void GetOrdinal ()
529 IDataReader reader = null;
532 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
533 reader = cmd.ExecuteReader ();
534 Assert.AreEqual (0, reader.GetOrdinal ("id"), "#1");
535 Assert.AreEqual (1, reader.GetOrdinal ("fname"), "#2");
536 Assert.AreEqual (2, reader.GetOrdinal ("lname"), "#3");
537 Assert.AreEqual (3, reader.GetOrdinal ("doB"), "#4");
538 Assert.AreEqual (4, reader.GetOrdinal ("doj"), "#5");
539 Assert.AreEqual (5, reader.GetOrdinal ("EmaiL"), "#6");
540 Assert.AreEqual (0, reader.GetOrdinal ("iD"), "#7");
541 Assert.AreEqual (5, reader.GetOrdinal ("eMail"), "#8");
549 public void GetOrdinal_Name_NotFound ()
551 IDataReader reader = null;
554 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
555 reader = cmd.ExecuteReader ();
557 reader.GetOrdinal ("non_existing_column");
559 } catch (IndexOutOfRangeException ex) {
560 // Index was outside the bounds of the array
561 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
562 Assert.IsNull (ex.InnerException, "#A3");
563 Assert.IsNotNull (ex.Message, "#A4");
567 reader.GetOrdinal (string.Empty);
569 } catch (IndexOutOfRangeException ex) {
570 // Index was outside the bounds of the array
571 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
572 Assert.IsNull (ex.InnerException, "#B3");
573 Assert.IsNotNull (ex.Message, "#B4");
582 public void GetOrdinal_Name_Null ()
584 IDataReader reader = null;
587 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
588 reader = cmd.ExecuteReader ();
590 reader.GetOrdinal (null);
592 } catch (ArgumentNullException ex) {
593 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
594 Assert.IsNull (ex.InnerException, "#3");
595 Assert.IsNotNull (ex.Message, "#4");
596 Assert.AreEqual ("fieldName", ex.ParamName, "#5");
605 public void GetOrdinal_Reader_Closed ()
607 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
609 using (IDataReader rdr = cmd.ExecuteReader ()) {
613 rdr.GetOrdinal (null);
615 } catch (InvalidOperationException ex) {
616 // No data exists for the row/column
617 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
618 Assert.IsNull (ex.InnerException, "#A3");
619 Assert.IsNotNull (ex.Message, "#A4");
625 public void GetOrdinal_Reader_NoData ()
627 cmd.CommandText = "SELECT * FROM employee WHERE id = 666";
629 using (IDataReader rdr = cmd.ExecuteReader ()) {
630 Assert.AreEqual (0, rdr.GetOrdinal ("id"), "#A1");
631 Assert.AreEqual (5, rdr.GetOrdinal ("eMail"), "#A2");
633 Assert.IsFalse (rdr.Read (), "#B");
635 Assert.AreEqual (2, rdr.GetOrdinal ("lname"), "#C1");
636 Assert.AreEqual (3, rdr.GetOrdinal ("dob"), "#C2");
641 public void GetSchemaTable_Command_Disposed ()
643 if (RunningOnMono && (conn is OdbcConnection))
644 Assert.Ignore ("Our statement handle is closed when we dispose the (Odbc)Command");
646 IDataReader reader = null;
649 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
650 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly);
652 DataTable schema = reader.GetSchemaTable ();
653 Assert.AreEqual (3, schema.Rows.Count, "RowCount");
661 public void GetSchemaTable_Reader_Closed ()
663 IDataReader reader = null;
666 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
667 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
671 reader.GetSchemaTable ();
673 } catch (InvalidOperationException ex) {
674 // Invalid attempt to call GetSchemaTable
675 // when reader is closed
676 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
677 Assert.IsNull (ex.InnerException, "#3");
678 Assert.IsNotNull (ex.Message, "#4");
687 public void GetNameTest ()
689 cmd.CommandText = "SELECT type_tinyint from numeric_family"; ;
690 using (IDataReader reader = cmd.ExecuteReader ()) {
691 Assert.AreEqual ("type_tinyint", reader.GetName (0), "#1");
695 [Test] // this [Int32]
696 public void Indexer1 ()
698 IDataReader reader = null;
701 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
702 reader = cmd.ExecuteReader ();
703 Assert.IsTrue (reader.Read ());
704 Assert.AreEqual (1, reader [0], "#0");
705 Assert.AreEqual ("suresh", reader [1], "#1");
706 Assert.AreEqual ("kumar", reader [2], "#2");
707 Assert.AreEqual (new DateTime (1978, 8, 22), reader [3], "#3");
708 Assert.AreEqual (new DateTime (2001, 3, 12), reader [4], "#4");
709 Assert.AreEqual ("suresh@gmail.com", reader [5], "#5");
716 [Test] // this [Int32]
717 public void Indexer1_Reader_Closed ()
719 IDataReader reader = null;
722 cmd.CommandText = "select fname from employee";
723 reader = cmd.ExecuteReader ();
728 object value = reader [0];
729 Assert.Fail ("#A1:" + value);
730 } catch (InvalidOperationException ex) {
731 // No data exists for the row/column
732 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
733 Assert.IsNull (ex.InnerException, "#A3");
734 Assert.IsNotNull (ex.Message, "#A4");
737 reader = cmd.ExecuteReader ();
741 object value = reader [0];
742 Assert.Fail ("#B1:" + value);
743 } catch (InvalidOperationException ex) {
744 // No data exists for the row/column
745 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
746 Assert.IsNull (ex.InnerException, "#B3");
747 Assert.IsNotNull (ex.Message, "#B4");
755 [Test] // this [Int32]
756 public void Indexer1_Reader_NoData ()
758 IDataReader reader = null;
761 cmd.CommandText = "select fname from employee WHERE lname='kumar'";
762 reader = cmd.ExecuteReader ();
764 object value = reader [0];
765 Assert.Fail ("#A1:" + value);
766 } catch (InvalidOperationException ex) {
767 // No data exists for the row/column
768 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
769 Assert.IsNull (ex.InnerException, "#A3");
770 Assert.IsNotNull (ex.Message, "#A4");
773 Assert.IsTrue (reader.Read ());
774 Assert.IsFalse (reader.Read ());
777 object value = reader [0];
778 Assert.Fail ("#B1:" + value);
779 } catch (InvalidOperationException ex) {
780 // No data exists for the row/column
781 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
782 Assert.IsNull (ex.InnerException, "#B3");
783 Assert.IsNotNull (ex.Message, "#B4");
791 [Test] // this [Int32]
792 public void Indexer1_Value_Invalid ()
794 IDataReader reader = null;
797 cmd.CommandText = "select fname from employee";
798 reader = cmd.ExecuteReader ();
799 Assert.IsTrue (reader.Read ());
801 object value = reader [-1];
802 Assert.Fail ("#A1:" + value);
803 } catch (IndexOutOfRangeException ex) {
804 // Index was outside the bounds of the array
805 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
806 Assert.IsNull (ex.InnerException, "#A3");
807 Assert.IsNotNull (ex.Message, "#A4");
811 object value = reader [1];
812 Assert.Fail ("#B1:" + value);
813 } catch (IndexOutOfRangeException ex) {
814 // Index was outside the bounds of the array
815 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
816 Assert.IsNull (ex.InnerException, "#B3");
817 Assert.IsNotNull (ex.Message, "#B4");
825 [Test] // this [String]
826 public void Indexer2 ()
828 IDataReader reader = null;
831 cmd.CommandText = "SELECT * FROM employee WHERE lname='kumar'";
832 reader = cmd.ExecuteReader ();
833 Assert.IsTrue (reader.Read ());
834 Assert.AreEqual (1, reader ["id"], "id");
835 Assert.AreEqual ("suresh", reader ["fname"], "fname");
836 Assert.AreEqual ("kumar", reader ["lname"], "lname");
837 Assert.AreEqual (new DateTime (1978, 8, 22), reader ["doB"], "doB");
838 Assert.AreEqual (new DateTime (2001, 3, 12), reader ["doj"], "doj");
839 Assert.AreEqual ("suresh@gmail.com", reader ["EmaiL"], "EmaiL");
840 Assert.AreEqual (1, reader ["iD"], "iD");
841 Assert.AreEqual ("suresh@gmail.com", reader ["eMail"], "eMail");
848 [Test] // this [String]
849 public void Indexer2_Reader_Closed ()
851 IDataReader reader = null;
854 cmd.CommandText = "select fname from employee";
855 reader = cmd.ExecuteReader ();
860 object value = reader ["fname"];
861 Assert.Fail ("#A1:" + value);
862 } catch (InvalidOperationException ex) {
863 // No data exists for the row/column
864 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
865 Assert.IsNull (ex.InnerException, "#A3");
866 Assert.IsNotNull (ex.Message, "#A4");
869 reader = cmd.ExecuteReader ();
873 object value = reader ["fname"];
874 Assert.Fail ("#B1:" + value);
875 } catch (InvalidOperationException ex) {
876 // No data exists for the row/column
877 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
878 Assert.IsNull (ex.InnerException, "#B3");
879 Assert.IsNotNull (ex.Message, "#B4");
887 [Test] // this [String]
888 public void Indexer2_Reader_NoData ()
890 IDataReader reader = null;
893 cmd.CommandText = "select fname from employee WHERE lname='kumar'";
894 reader = cmd.ExecuteReader ();
897 object value = reader ["fname"];
898 Assert.Fail ("#A1:" + value);
899 } catch (InvalidOperationException ex) {
900 // No data exists for the row/column
901 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
902 Assert.IsNull (ex.InnerException, "#A3");
903 Assert.IsNotNull (ex.Message, "#A4");
906 Assert.IsTrue (reader.Read ());
907 Assert.IsFalse (reader.Read ());
910 object value = reader ["fname"];
911 Assert.Fail ("#B1:" + value);
912 } catch (InvalidOperationException ex) {
913 // No data exists for the row/column
914 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
915 Assert.IsNull (ex.InnerException, "#B3");
916 Assert.IsNotNull (ex.Message, "#B4");
924 [Test] // this [String]
925 public void Indexer2_Value_NotFound ()
927 IDataReader reader = null;
930 cmd.CommandText = "select fname from employee";
931 reader = cmd.ExecuteReader ();
932 Assert.IsTrue (reader.Read ());
934 object value = reader ["address"];
935 Assert.Fail ("#A1:" + value);
936 } catch (IndexOutOfRangeException ex) {
937 // Index was outside the bounds of the array
938 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#A2");
939 Assert.IsNull (ex.InnerException, "#A3");
940 Assert.IsNotNull (ex.Message, "#A4");
944 object value = reader [string.Empty];
945 Assert.Fail ("#B1:" + value);
946 } catch (IndexOutOfRangeException ex) {
947 // Index was outside the bounds of the array
948 Assert.AreEqual (typeof (IndexOutOfRangeException), ex.GetType (), "#B2");
949 Assert.IsNull (ex.InnerException, "#B3");
950 Assert.IsNotNull (ex.Message, "#B4");
958 [Test] // this [String]
959 public void Indexer2_Value_Null ()
961 IDataReader reader = null;
964 cmd.CommandText = "select fname from employee";
965 reader = cmd.ExecuteReader ();
967 object value = reader [(string) null];
968 Assert.Fail ("#1:" + value);
969 } catch (ArgumentNullException ex) {
970 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
971 Assert.IsNull (ex.InnerException, "#3");
972 Assert.IsNotNull (ex.Message, "#4");
973 Assert.AreEqual ("fieldName", ex.ParamName, "#5");
982 public void IsClosed_Command_Disposed ()
984 IDataReader reader = null;
987 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
988 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
989 Assert.IsFalse (reader.IsClosed, "#1");
991 Assert.IsFalse (reader.IsClosed, "#2");
999 public void IsClosed_Connection_Closed ()
1002 Assert.Ignore ("We do not mark the corresponding Reader closed when we close a Connection.");
1004 IDataReader reader = null;
1007 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
1008 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
1009 Assert.IsFalse (reader.IsClosed, "#1");
1010 ConnectionManager.Singleton.CloseConnection ();
1011 Assert.IsTrue (reader.IsClosed, "#2");
1019 public void IsClosed_Reader_Closed ()
1021 IDataReader reader = null;
1024 cmd.CommandText = "select id, fname, id + 20 as plustwenty from employee";
1025 reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo);
1026 Assert.IsFalse (reader.IsClosed, "#1");
1028 Assert.IsTrue (reader.IsClosed, "#2");
1036 public void NumericTest()
1038 cmd.CommandText = "select type_numeric1 from numeric_family where id = 1;";
1040 using (IDataReader reader = cmd.ExecuteReader ()) {
1041 Assert.IsTrue (reader.Read(), "#1");
1042 object value = reader.GetValue (0);
1043 Assert.AreEqual (typeof (decimal), value.GetType (), "#2");
1044 Assert.AreEqual (1000m, value, "#3");
1049 public void TinyIntTest ()
1051 cmd.CommandText = "select type_tinyint from numeric_family where id = 1;";
1052 using (IDataReader reader = cmd.ExecuteReader ()) {
1053 Assert.IsTrue (reader.Read (), "#1");
1054 object value = reader.GetValue (0);
1055 Assert.AreEqual (typeof (byte), value.GetType (), "#2");
1056 Assert.AreEqual (255, value, "#3");
1061 public void GetByteTest ()
1063 cmd.CommandText = "select type_tinyint from numeric_family where id = 1";
1064 using (IDataReader reader = cmd.ExecuteReader ()) {
1065 Assert.IsTrue (reader.Read (), "#1");
1066 byte b = reader.GetByte (0);
1067 Assert.AreEqual (255, b, "#2");
1072 public void GetValue_Reader_Closed ()
1074 //Console.WriteLine ("GetValue_Reader_Closed - first_executereader");
1075 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
1077 using (IDataReader reader = cmd.ExecuteReader ()) {
1078 Assert.IsTrue (reader.Read ());
1082 reader.GetValue (-1);
1084 } catch (InvalidOperationException ex) {
1085 // No data exists for the row/column
1086 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
1087 Assert.IsNull (ex.InnerException, "#3");
1088 Assert.IsNotNull (ex.Message, "#4");
1094 public void GetValue_Reader_NoData ()
1096 //Console.WriteLine ("GetValue_Reader_NoData - first_executereader");
1097 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
1099 using (IDataReader rdr = cmd.ExecuteReader ()) {
1102 Assert.Fail ("#A1");
1103 } catch (InvalidOperationException ex) {
1104 // No data exists for the row/column
1105 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
1106 Assert.IsNull (ex.InnerException, "#A3");
1107 Assert.IsNotNull (ex.Message, "#A4");
1110 Assert.IsFalse (rdr.Read (), "#B");
1114 Assert.Fail ("#C1");
1115 } catch (InvalidOperationException ex) {
1116 // No data exists for the row/column
1117 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
1118 Assert.IsNull (ex.InnerException, "#C3");
1119 Assert.IsNotNull (ex.Message, "#C4");
1125 public void GetValue_Type_Binary ()
1130 cmd.CommandText = "select type_binary from binary_family order by id asc";
1131 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1132 expected = new byte [] { 0x35, 0x00, 0x00, 0x00,
1133 0x00, 0x00, 0x00, 0x00 };
1135 Assert.IsTrue (rdr.Read (), "#A1");
1136 value = rdr.GetValue (0);
1137 Assert.IsNotNull (value, "#A2");
1138 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1139 Assert.AreEqual (expected, value, "#A4");
1140 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1142 expected = new byte [] { 0x00, 0x33, 0x34, 0x00,
1143 0x33, 0x30, 0x35, 0x31 };
1145 Assert.IsTrue (rdr.Read (), "#B1");
1146 value = rdr.GetValue (0);
1147 Assert.IsNotNull (value, "#B2");
1148 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1149 Assert.AreEqual (expected, value, "#B4");
1150 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1152 expected = new byte [8];
1154 Assert.IsTrue (rdr.Read (), "#C1");
1155 value = rdr.GetValue (0);
1156 Assert.IsNotNull (value, "#C2");
1157 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1158 Assert.AreEqual (expected, value, "#C4");
1159 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1161 expected = DBNull.Value;
1163 Assert.IsTrue (rdr.Read (), "#D1");
1164 value = rdr.GetValue (0);
1165 Assert.IsNotNull (value, "#D2");
1166 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1167 Assert.AreEqual (DBNull.Value, value, "#D4");
1168 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1171 using (IDataReader rdr = cmd.ExecuteReader ()) {
1172 expected = new byte [] { 0x35, 0x00, 0x00, 0x00,
1173 0x00, 0x00, 0x00, 0x00 };
1175 Assert.IsTrue (rdr.Read (), "#E1");
1176 value = rdr.GetValue (0);
1177 Assert.IsNotNull (value, "#E2");
1178 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1179 Assert.AreEqual (expected, value, "#E4");
1180 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
1182 expected = new byte [] { 0x00, 0x33, 0x34, 0x00,
1183 0x33, 0x30, 0x35, 0x31 };
1185 Assert.IsTrue (rdr.Read (), "#F1");
1186 value = rdr.GetValue (0);
1187 Assert.IsNotNull (value, "#F2");
1188 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1189 Assert.AreEqual (expected, value, "#F4");
1190 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
1192 expected = new byte [8];
1194 Assert.IsTrue (rdr.Read (), "#G1");
1195 value = rdr.GetValue (0);
1196 Assert.IsNotNull (value, "#G2");
1197 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1198 Assert.AreEqual (expected, value, "#G4");
1199 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
1201 expected = DBNull.Value;
1203 Assert.IsTrue (rdr.Read (), "#H1");
1204 value = rdr.GetValue (0);
1205 Assert.IsNotNull (value, "#H2");
1206 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1207 Assert.AreEqual (expected, value, "#H4");
1208 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
1213 public void GetValue_Type_Image ()
1218 //Console.WriteLine ("GetValue_Type_Image - first_executereader");
1219 cmd.CommandText = "select type_blob from binary_family order by id asc";
1220 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1221 expected = new byte [] { 0x32, 0x56, 0x00,
1224 Assert.IsTrue (rdr.Read (), "#A1");
1225 value = rdr.GetValue (0);
1226 Assert.IsNotNull (value, "#A2");
1227 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1228 Assert.AreEqual (expected, value, "#A4");
1229 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1231 expected = long_bytes;
1233 Assert.IsTrue (rdr.Read (), "#B1");
1234 value = rdr.GetValue (0);
1235 Assert.IsNotNull (value, "#B2");
1236 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1237 Assert.AreEqual (expected, value, "#B4");
1238 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1240 expected = new byte [0];
1242 Assert.IsTrue (rdr.Read (), "#C1");
1243 value = rdr.GetValue (0);
1244 Assert.IsNotNull (value, "#C2");
1245 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1246 Assert.AreEqual (expected, value, "#C4");
1247 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1249 expected = DBNull.Value;
1251 Assert.IsTrue (rdr.Read (), "#D1");
1252 value = rdr.GetValue (0);
1253 Assert.IsNotNull (value, "#D2");
1254 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1255 Assert.AreEqual (DBNull.Value, value, "#D4");
1256 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1259 //Console.WriteLine ("GetChars_Reader_Closed - second_executereader");
1260 using (IDataReader rdr = cmd.ExecuteReader ()) {
1261 expected = new byte [] { 0x32, 0x56, 0x00,
1264 Assert.IsTrue (rdr.Read (), "#E1");
1265 value = rdr.GetValue (0);
1266 Assert.IsNotNull (value, "#E2");
1267 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1268 Assert.AreEqual (expected, value, "#E4");
1269 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
1271 expected = long_bytes;
1273 Assert.IsTrue (rdr.Read (), "#F1");
1274 value = rdr.GetValue (0);
1275 Assert.IsNotNull (value, "#F2");
1276 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1277 Assert.AreEqual (expected, value, "#F4");
1278 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
1280 expected = new byte [0];
1282 Assert.IsTrue (rdr.Read (), "#G1");
1283 value = rdr.GetValue (0);
1284 Assert.IsNotNull (value, "#G2");
1285 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1286 Assert.AreEqual (expected, value, "#G4");
1287 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
1289 expected = DBNull.Value;
1291 Assert.IsTrue (rdr.Read (), "#H1");
1292 value = rdr.GetValue (0);
1293 Assert.IsNotNull (value, "#H2");
1294 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1295 Assert.AreEqual (expected, value, "#H4");
1296 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
1301 public void GetValue_Type_Integer ()
1306 cmd.CommandText = "select type_int from numeric_family order by id asc";
1307 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1308 expected = int.MaxValue;
1310 Assert.IsTrue (rdr.Read (), "#A1");
1311 value = rdr.GetValue (0);
1312 Assert.IsNotNull (value, "#A2");
1313 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1314 Assert.AreEqual (expected, value, "#A4");
1315 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#A5");
1317 expected = int.MinValue;
1319 Assert.IsTrue (rdr.Read (), "#B1");
1320 value = rdr.GetValue (0);
1321 Assert.IsNotNull (value, "#B2");
1322 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1323 Assert.AreEqual (expected, value, "#B4");
1324 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#B5");
1328 Assert.IsTrue (rdr.Read (), "#C1");
1329 value = rdr.GetValue (0);
1330 Assert.IsNotNull (value, "#C2");
1331 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1332 Assert.AreEqual (expected, value, "#C4");
1333 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#C5");
1335 expected = DBNull.Value;
1337 Assert.IsTrue (rdr.Read (), "#D1");
1338 value = rdr.GetValue (0);
1339 Assert.IsNotNull (value, "#D2");
1340 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1341 Assert.AreEqual (DBNull.Value, value, "#D4");
1342 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#D5");
1345 using (IDataReader rdr = cmd.ExecuteReader ()) {
1346 expected = int.MaxValue;
1348 Assert.IsTrue (rdr.Read (), "#E1");
1349 value = rdr.GetValue (0);
1350 Assert.IsNotNull (value, "#E2");
1351 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1352 Assert.AreEqual (expected, value, "#E4");
1353 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#E5");
1355 expected = int.MinValue;
1357 Assert.IsTrue (rdr.Read (), "#F1");
1358 value = rdr.GetValue (0);
1359 Assert.IsNotNull (value, "#F2");
1360 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1361 Assert.AreEqual (expected, value, "#F4");
1362 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#F5");
1366 Assert.IsTrue (rdr.Read (), "#G1");
1367 value = rdr.GetValue (0);
1368 Assert.IsNotNull (value, "#G2");
1369 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1370 Assert.AreEqual (expected, value, "#G4");
1371 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#G5");
1373 expected = DBNull.Value;
1375 Assert.IsTrue (rdr.Read (), "#H1");
1376 value = rdr.GetValue (0);
1377 Assert.IsNotNull (value, "#H2");
1378 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1379 Assert.AreEqual (expected, value, "#H4");
1380 Assert.AreEqual (typeof (int), rdr.GetFieldType (0), "#H5");
1385 public void GetValue_Type_NText ()
1390 cmd.CommandText = "select type_ntext from string_family order by id asc";
1391 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1392 expected = "nt\u092d\u093ext";
1394 Assert.IsTrue (rdr.Read (), "#A1");
1395 value = rdr.GetValue (0);
1396 Assert.IsNotNull (value, "#A2");
1397 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1398 Assert.AreEqual (expected, value, "#A4");
1399 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1401 expected = "nt\u092d\u093ext ";
1403 Assert.IsTrue (rdr.Read (), "#B1");
1404 value = rdr.GetValue (0);
1405 Assert.IsNotNull (value, "#B2");
1406 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1407 Assert.AreEqual (expected, value, "#B4");
1408 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1410 expected = string.Empty;
1412 Assert.IsTrue (rdr.Read (), "#C1");
1413 value = rdr.GetValue (0);
1414 Assert.IsNotNull (value, "#C2");
1415 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1416 Assert.AreEqual (expected, value, "#C4");
1417 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1419 expected = DBNull.Value;
1421 Assert.IsTrue (rdr.Read (), "#D1");
1422 value = rdr.GetValue (0);
1423 Assert.IsNotNull (value, "#D2");
1424 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1425 Assert.AreEqual (expected, value, "#D4");
1426 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1429 using (IDataReader rdr = cmd.ExecuteReader ()) {
1430 expected = "nt\u092d\u093ext";
1432 Assert.IsTrue (rdr.Read (), "#E1");
1433 value = rdr.GetValue (0);
1434 Assert.IsNotNull (value, "#E2");
1435 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1436 Assert.AreEqual (expected, value, "#E4");
1437 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1439 expected = "nt\u092d\u093ext ";
1441 Assert.IsTrue (rdr.Read (), "#F1");
1442 value = rdr.GetValue (0);
1443 Assert.IsNotNull (value, "#F2");
1444 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1445 Assert.AreEqual (expected, value, "#F4");
1446 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1448 expected = string.Empty;
1450 Assert.IsTrue (rdr.Read (), "#G1");
1451 value = rdr.GetValue (0);
1452 Assert.IsNotNull (value, "#G2");
1453 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1454 Assert.AreEqual (expected, value, "#G4");
1455 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1457 expected = DBNull.Value;
1459 Assert.IsTrue (rdr.Read (), "#H1");
1460 value = rdr.GetValue (0);
1461 Assert.IsNotNull (value, "#H2");
1462 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1463 Assert.AreEqual (expected, value, "#H4");
1464 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1469 public void GetValue_Type_NVarChar ()
1474 cmd.CommandText = "select type_nvarchar from string_family order by id asc";
1475 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1476 expected = "nv\u092d\u093e\u0930\u0924r";
1478 Assert.IsTrue (rdr.Read (), "#A1");
1479 value = rdr.GetValue (0);
1480 Assert.IsNotNull (value, "#A2");
1481 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1482 Assert.AreEqual (expected, value, "#A4");
1483 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1485 expected = "nv\u092d\u093e\u0930\u0924r ";
1487 Assert.IsTrue (rdr.Read (), "#B1");
1488 value = rdr.GetValue (0);
1489 Assert.IsNotNull (value, "#B2");
1490 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1491 Assert.AreEqual (expected, value, "#B4");
1492 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1494 expected = string.Empty;
1496 Assert.IsTrue (rdr.Read (), "#C1");
1497 value = rdr.GetValue (0);
1498 Assert.IsNotNull (value, "#C2");
1499 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1500 Assert.AreEqual (expected, value, "#C4");
1501 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1503 expected = DBNull.Value;
1505 Assert.IsTrue (rdr.Read (), "#D1");
1506 value = rdr.GetValue (0);
1507 Assert.IsNotNull (value, "#D2");
1508 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1509 Assert.AreEqual (expected, value, "#D4");
1510 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1513 using (IDataReader rdr = cmd.ExecuteReader ()) {
1514 expected = "nv\u092d\u093e\u0930\u0924r";
1516 Assert.IsTrue (rdr.Read (), "#E1");
1517 value = rdr.GetValue (0);
1518 Assert.IsNotNull (value, "#E2");
1519 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1520 Assert.AreEqual (expected, value, "#E4");
1521 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1523 expected = "nv\u092d\u093e\u0930\u0924r ";
1525 Assert.IsTrue (rdr.Read (), "#F1");
1526 value = rdr.GetValue (0);
1527 Assert.IsNotNull (value, "#F2");
1528 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1529 Assert.AreEqual (expected, value, "#F4");
1530 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1532 expected = string.Empty;
1534 Assert.IsTrue (rdr.Read (), "#G1");
1535 value = rdr.GetValue (0);
1536 Assert.IsNotNull (value, "#G2");
1537 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1538 Assert.AreEqual (expected, value, "#G4");
1539 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1541 expected = DBNull.Value;
1543 Assert.IsTrue (rdr.Read (), "#H1");
1544 value = rdr.GetValue (0);
1545 Assert.IsNotNull (value, "#H2");
1546 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1547 Assert.AreEqual (expected, value, "#H4");
1548 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1553 public void GetValue_Type_Real ()
1558 cmd.CommandText = "select type_float from numeric_family order by id asc";
1559 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1560 expected = 3.40E+38F;
1562 Assert.IsTrue (rdr.Read (), "#A1");
1563 value = rdr.GetValue (0);
1564 Assert.IsNotNull (value, "#A2");
1565 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1566 Assert.AreEqual (expected, value, "#A4");
1567 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#A5");
1569 expected = -3.40E+38F;
1571 Assert.IsTrue (rdr.Read (), "#B1");
1572 value = rdr.GetValue (0);
1573 Assert.IsNotNull (value, "#B2");
1574 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1575 Assert.AreEqual (expected, value, "#B4");
1576 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#B5");
1580 Assert.IsTrue (rdr.Read (), "#C1");
1581 value = rdr.GetValue (0);
1582 Assert.IsNotNull (value, "#C2");
1583 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1584 Assert.AreEqual (expected, value, "#C4");
1585 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#C5");
1587 expected = DBNull.Value;
1589 Assert.IsTrue (rdr.Read (), "#D1");
1590 value = rdr.GetValue (0);
1591 Assert.IsNotNull (value, "#D2");
1592 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1593 Assert.AreEqual (expected, value, "#D4");
1594 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#D5");
1597 using (IDataReader rdr = cmd.ExecuteReader ()) {
1598 expected = 3.40E+38F;
1600 Assert.IsTrue (rdr.Read (), "#E1");
1601 value = rdr.GetValue (0);
1602 Assert.IsNotNull (value, "#E2");
1603 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1604 Assert.AreEqual (expected, value, "#E4");
1605 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#E5");
1607 expected = -3.40E+38F;
1609 Assert.IsTrue (rdr.Read (), "#F1");
1610 value = rdr.GetValue (0);
1611 Assert.IsNotNull (value, "#F2");
1612 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1613 Assert.AreEqual (expected, value, "#F4");
1614 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#F5");
1618 Assert.IsTrue (rdr.Read (), "#G1");
1619 value = rdr.GetValue (0);
1620 Assert.IsNotNull (value, "#G2");
1621 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1622 Assert.AreEqual (expected, value, "#G4");
1623 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#G5");
1625 expected = DBNull.Value;
1627 Assert.IsTrue (rdr.Read (), "#H1");
1628 value = rdr.GetValue (0);
1629 Assert.IsNotNull (value, "#H2");
1630 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1631 Assert.AreEqual (expected, value, "#H4");
1632 Assert.AreEqual (typeof (float), rdr.GetFieldType (0), "#H5");
1637 public void GetValue_Type_SmallDateTime ()
1642 cmd.CommandText = "select type_smalldatetime from datetime_family order by id asc";
1643 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1644 expected = DateTime.Parse ("2037-12-31 23:59:00");
1646 Assert.IsTrue (rdr.Read (), "#A1");
1647 value = rdr.GetValue (0);
1648 Assert.IsNotNull (value, "#A2");
1649 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1650 Assert.AreEqual (expected, value, "#A4");
1651 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#A5");
1653 expected = DBNull.Value;
1655 Assert.IsTrue (rdr.Read (), "#B1");
1656 value = rdr.GetValue (0);
1657 Assert.IsNotNull (value, "#B2");
1658 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1659 Assert.AreEqual (expected, value, "#B4");
1660 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#B5");
1663 using (IDataReader rdr = cmd.ExecuteReader ()) {
1664 expected = DateTime.Parse ("2037-12-31 23:59:00");
1666 Assert.IsTrue (rdr.Read (), "#C1");
1667 value = rdr.GetValue (0);
1668 Assert.IsNotNull (value, "#C2");
1669 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1670 Assert.AreEqual (expected, value, "#C4");
1671 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#C5");
1673 expected = DBNull.Value;
1675 Assert.IsTrue (rdr.Read (), "#D1");
1676 value = rdr.GetValue (0);
1677 Assert.IsNotNull (value, "#D2");
1678 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1679 Assert.AreEqual (expected, value, "#D4");
1680 Assert.AreEqual (typeof (DateTime), rdr.GetFieldType (0), "#D5");
1685 public void GetValue_Type_SmallInt ()
1690 cmd.CommandText = "select type_smallint from numeric_family order by id asc";
1691 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1692 expected = short.MaxValue;
1694 Assert.IsTrue (rdr.Read (), "#A1");
1695 value = rdr.GetValue (0);
1696 Assert.IsNotNull (value, "#A2");
1697 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1698 Assert.AreEqual (expected, value, "#A4");
1699 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#A5");
1701 expected = short.MinValue;
1703 Assert.IsTrue (rdr.Read (), "#B1");
1704 value = rdr.GetValue (0);
1705 Assert.IsNotNull (value, "#B2");
1706 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1707 Assert.AreEqual (expected, value, "#B4");
1708 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#B5");
1710 expected = (short) 0;
1712 Assert.IsTrue (rdr.Read (), "#C1");
1713 value = rdr.GetValue (0);
1714 Assert.IsNotNull (value, "#C2");
1715 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1716 Assert.AreEqual (expected, value, "#C4");
1717 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#C5");
1719 expected = DBNull.Value;
1721 Assert.IsTrue (rdr.Read (), "#D1");
1722 value = rdr.GetValue (0);
1723 Assert.IsNotNull (value, "#D2");
1724 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1725 Assert.AreEqual (expected, value, "#D4");
1726 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#D5");
1729 using (IDataReader rdr = cmd.ExecuteReader ()) {
1730 expected = short.MaxValue;
1732 Assert.IsTrue (rdr.Read (), "#E1");
1733 value = rdr.GetValue (0);
1734 Assert.IsNotNull (value, "#E2");
1735 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1736 Assert.AreEqual (expected, value, "#E4");
1737 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#E5");
1739 expected = short.MinValue;
1741 Assert.IsTrue (rdr.Read (), "#F1");
1742 value = rdr.GetValue (0);
1743 Assert.IsNotNull (value, "#F2");
1744 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1745 Assert.AreEqual (expected, value, "#F4");
1746 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#F5");
1748 expected = (short) 0;
1750 Assert.IsTrue (rdr.Read (), "#G1");
1751 value = rdr.GetValue (0);
1752 Assert.IsNotNull (value, "#G2");
1753 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1754 Assert.AreEqual (expected, value, "#G4");
1755 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#G5");
1757 expected = DBNull.Value;
1759 Assert.IsTrue (rdr.Read (), "#H1");
1760 value = rdr.GetValue (0);
1761 Assert.IsNotNull (value, "#H2");
1762 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1763 Assert.AreEqual (expected, value, "#H4");
1764 Assert.AreEqual (typeof (short), rdr.GetFieldType (0), "#H5");
1769 public void GetValue_Type_Text ()
1774 cmd.CommandText = "select type_text from string_family order by id asc";
1775 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1778 Assert.IsTrue (rdr.Read (), "#A1");
1779 value = rdr.GetValue (0);
1780 Assert.IsNotNull (value, "#A2");
1781 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1782 Assert.AreEqual (expected, value, "#A4");
1783 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
1785 StringBuilder sb = new StringBuilder ();
1786 for (int i = 0; i < 30; i++)
1787 sb.Append ("longtext ");
1788 expected = sb.ToString ();
1790 Assert.IsTrue (rdr.Read (), "#B1");
1791 value = rdr.GetValue (0);
1792 Assert.IsNotNull (value, "#B2");
1793 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1794 Assert.AreEqual (expected, value, "#B4");
1795 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
1797 expected = string.Empty;
1799 Assert.IsTrue (rdr.Read (), "#C1");
1800 value = rdr.GetValue (0);
1801 Assert.IsNotNull (value, "#C2");
1802 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1803 Assert.AreEqual (expected, value, "#C4");
1804 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
1806 expected = DBNull.Value;
1808 Assert.IsTrue (rdr.Read (), "#D1");
1809 value = rdr.GetValue (0);
1810 Assert.IsNotNull (value, "#D2");
1811 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1812 Assert.AreEqual (expected, value, "#D4");
1813 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
1816 using (IDataReader rdr = cmd.ExecuteReader ()) {
1819 Assert.IsTrue (rdr.Read (), "#E1");
1820 value = rdr.GetValue (0);
1821 Assert.IsNotNull (value, "#E2");
1822 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1823 Assert.AreEqual (expected, value, "#E4");
1824 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
1826 StringBuilder sb = new StringBuilder ();
1827 for (int i = 0; i < 30; i++)
1828 sb.Append ("longtext ");
1829 expected = sb.ToString ();
1831 Assert.IsTrue (rdr.Read (), "#F1");
1832 value = rdr.GetValue (0);
1833 Assert.IsNotNull (value, "#F2");
1834 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1835 Assert.AreEqual (expected, value, "#F4");
1836 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
1838 expected = string.Empty;
1840 Assert.IsTrue (rdr.Read (), "#G1");
1841 value = rdr.GetValue (0);
1842 Assert.IsNotNull (value, "#G2");
1843 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1844 Assert.AreEqual (expected, value, "#G4");
1845 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
1847 expected = DBNull.Value;
1849 Assert.IsTrue (rdr.Read (), "#H1");
1850 value = rdr.GetValue (0);
1851 Assert.IsNotNull (value, "#H2");
1852 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1853 Assert.AreEqual (expected, value, "#H4");
1854 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
1859 public void GetValue_Type_TinyInt ()
1864 cmd.CommandText = "select type_tinyint from numeric_family order by id asc";
1865 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1866 expected = byte.MaxValue;
1868 Assert.IsTrue (rdr.Read (), "#A1");
1869 value = rdr.GetValue (0);
1870 Assert.IsNotNull (value, "#A2");
1871 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1872 Assert.AreEqual (expected, value, "#A4");
1873 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#A5");
1875 expected = byte.MinValue;
1877 Assert.IsTrue (rdr.Read (), "#B1");
1878 value = rdr.GetValue (0);
1879 Assert.IsNotNull (value, "#B2");
1880 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1881 Assert.AreEqual (expected, value, "#B4");
1882 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#B5");
1884 expected = (byte) 0x00;
1886 Assert.IsTrue (rdr.Read (), "#C1");
1887 value = rdr.GetValue (0);
1888 Assert.IsNotNull (value, "#C2");
1889 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1890 Assert.AreEqual (expected, value, "#C4");
1891 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#C5");
1893 expected = DBNull.Value;
1895 Assert.IsTrue (rdr.Read (), "#D1");
1896 value = rdr.GetValue (0);
1897 Assert.IsNotNull (value, "#D2");
1898 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1899 Assert.AreEqual (expected, value, "#D4");
1900 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#D5");
1903 using (IDataReader rdr = cmd.ExecuteReader ()) {
1904 expected = byte.MaxValue;
1906 Assert.IsTrue (rdr.Read (), "#E1");
1907 value = rdr.GetValue (0);
1908 Assert.IsNotNull (value, "#E2");
1909 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
1910 Assert.AreEqual (expected, value, "#E4");
1911 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#E5");
1913 expected = byte.MinValue;
1915 Assert.IsTrue (rdr.Read (), "#F1");
1916 value = rdr.GetValue (0);
1917 Assert.IsNotNull (value, "#F2");
1918 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
1919 Assert.AreEqual (expected, value, "#F4");
1920 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#F5");
1922 expected = (byte) 0x00;
1924 Assert.IsTrue (rdr.Read (), "#G1");
1925 value = rdr.GetValue (0);
1926 Assert.IsNotNull (value, "#G2");
1927 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
1928 Assert.AreEqual (expected, value, "#G4");
1929 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#G5");
1931 expected = DBNull.Value;
1933 Assert.IsTrue (rdr.Read (), "#H1");
1934 value = rdr.GetValue (0);
1935 Assert.IsNotNull (value, "#H2");
1936 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
1937 Assert.AreEqual (expected, value, "#H4");
1938 Assert.AreEqual (typeof (byte), rdr.GetFieldType (0), "#H5");
1943 public void GetValue_Type_VarBinary ()
1948 cmd.CommandText = "select type_varbinary from binary_family order by id asc";
1949 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
1950 expected = new byte [] { 0x30, 0x31, 0x32, 0x33,
1951 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
1952 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1953 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34,
1954 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x44,
1957 Assert.IsTrue (rdr.Read (), "#A1");
1958 value = rdr.GetValue (0);
1959 Assert.IsNotNull (value, "#A2");
1960 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
1961 Assert.AreEqual (expected, value, "#A4");
1962 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#A5");
1964 expected = new byte [] { 0x00, 0x39, 0x38, 0x37,
1965 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
1966 0x31, 0x32, 0x33, 0x34 };
1968 Assert.IsTrue (rdr.Read (), "#B1");
1969 value = rdr.GetValue (0);
1970 Assert.IsNotNull (value, "#B2");
1971 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
1972 Assert.AreEqual (expected, value, "#B4");
1973 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#B5");
1975 expected = new byte [0];
1977 Assert.IsTrue (rdr.Read (), "#C1");
1978 value = rdr.GetValue (0);
1979 Assert.IsNotNull (value, "#C2");
1980 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
1981 Assert.AreEqual (expected, value, "#C4");
1982 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#C5");
1984 expected = DBNull.Value;
1986 Assert.IsTrue (rdr.Read (), "#D1");
1987 value = rdr.GetValue (0);
1988 Assert.IsNotNull (value, "#D2");
1989 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
1990 Assert.AreEqual (DBNull.Value, value, "#D4");
1991 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#D5");
1994 using (IDataReader rdr = cmd.ExecuteReader ()) {
1995 expected = new byte [] { 0x30, 0x31, 0x32, 0x33,
1996 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30,
1997 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1998 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34,
1999 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x44,
2002 Assert.IsTrue (rdr.Read (), "#E1");
2003 value = rdr.GetValue (0);
2004 Assert.IsNotNull (value, "#E2");
2005 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
2006 Assert.AreEqual (expected, value, "#E4");
2007 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#E5");
2009 expected = new byte [] { 0x00, 0x39, 0x38, 0x37,
2010 0x36, 0x35, 0x00, 0x33, 0x32, 0x31, 0x30,
2011 0x31, 0x32, 0x33, 0x34 };
2013 Assert.IsTrue (rdr.Read (), "#F1");
2014 value = rdr.GetValue (0);
2015 Assert.IsNotNull (value, "#F2");
2016 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
2017 Assert.AreEqual (expected, value, "#F4");
2018 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#F5");
2020 expected = new byte [0];
2022 Assert.IsTrue (rdr.Read (), "#G1");
2023 value = rdr.GetValue (0);
2024 Assert.IsNotNull (value, "#G2");
2025 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
2026 Assert.AreEqual (expected, value, "#G4");
2027 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#G5");
2029 expected = DBNull.Value;
2031 Assert.IsTrue (rdr.Read (), "#H1");
2032 value = rdr.GetValue (0);
2033 Assert.IsNotNull (value, "#H2");
2034 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
2035 Assert.AreEqual (expected, value, "#H4");
2036 Assert.AreEqual (typeof (byte []), rdr.GetFieldType (0), "#H5");
2041 public void GetValue_Type_VarChar ()
2046 cmd.CommandText = "select type_varchar from string_family order by id asc";
2047 using (IDataReader rdr = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2048 expected = "varchar";
2050 Assert.IsTrue (rdr.Read (), "#A1");
2051 value = rdr.GetValue (0);
2052 Assert.IsNotNull (value, "#A2");
2053 Assert.AreEqual (expected.GetType (), value.GetType (), "#A3");
2054 Assert.AreEqual (expected, value, "#A4");
2055 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#A5");
2057 expected = "varchar ";
2059 Assert.IsTrue (rdr.Read (), "#B1");
2060 value = rdr.GetValue (0);
2061 Assert.IsNotNull (value, "#B2");
2062 Assert.AreEqual (expected.GetType (), value.GetType (), "#B3");
2063 Assert.AreEqual (expected, value, "#B4");
2064 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#B5");
2066 expected = string.Empty;
2068 Assert.IsTrue (rdr.Read (), "#C1");
2069 value = rdr.GetValue (0);
2070 Assert.IsNotNull (value, "#C2");
2071 Assert.AreEqual (expected.GetType (), value.GetType (), "#C3");
2072 Assert.AreEqual (expected, value, "#C4");
2073 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#C5");
2075 expected = DBNull.Value;
2077 Assert.IsTrue (rdr.Read (), "#D1");
2078 value = rdr.GetValue (0);
2079 Assert.IsNotNull (value, "#D2");
2080 Assert.AreEqual (expected.GetType (), value.GetType (), "#D3");
2081 Assert.AreEqual (expected, value, "#D4");
2082 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#D5");
2085 using (IDataReader rdr = cmd.ExecuteReader ()) {
2086 expected = "varchar";
2088 Assert.IsTrue (rdr.Read (), "#E1");
2089 value = rdr.GetValue (0);
2090 Assert.IsNotNull (value, "#E2");
2091 Assert.AreEqual (expected.GetType (), value.GetType (), "#E3");
2092 Assert.AreEqual (expected, value, "#E4");
2093 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#E5");
2095 expected = "varchar ";
2097 Assert.IsTrue (rdr.Read (), "#F1");
2098 value = rdr.GetValue (0);
2099 Assert.IsNotNull (value, "#F2");
2100 Assert.AreEqual (expected.GetType (), value.GetType (), "#F3");
2101 Assert.AreEqual (expected, value, "#F4");
2102 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#F5");
2104 expected = string.Empty;
2106 Assert.IsTrue (rdr.Read (), "#G1");
2107 value = rdr.GetValue (0);
2108 Assert.IsNotNull (value, "#G2");
2109 Assert.AreEqual (expected.GetType (), value.GetType (), "#G3");
2110 Assert.AreEqual (expected, value, "#G4");
2111 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#G5");
2113 expected = DBNull.Value;
2115 Assert.IsTrue (rdr.Read (), "#H1");
2116 value = rdr.GetValue (0);
2117 Assert.IsNotNull (value, "#H2");
2118 Assert.AreEqual (expected.GetType (), value.GetType (), "#H3");
2119 Assert.AreEqual (expected, value, "#H4");
2120 Assert.AreEqual (typeof (string), rdr.GetFieldType (0), "#H5");
2125 public void GetBytes ()
2127 //Console.WriteLine ("GetBytes - first_executereader");
2128 byte [] expected = new byte [] { 0x32, 0x56, 0x00, 0x44, 0x22 };
2129 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2131 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2132 Assert.IsTrue (reader.Read (), "#A1");
2134 // Get By Parts for the column blob
2135 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2140 byte [] val = new byte [totalsize];
2141 //Console.WriteLine ("GetBytes:: totalsize={0}", totalsize);
2143 ret = reader.GetBytes (0, offset, val, offset,
2144 (int) Math.Min (buffsize, totalsize - count));
2145 offset += (int) ret;
2147 } while (count < totalsize);
2149 Assert.AreEqual (expected.Length, count, "#A2");
2150 Assert.AreEqual (expected, val, "#A3");
2153 //Console.WriteLine ("GetBytes - second_executereader");
2154 using (IDataReader reader = cmd.ExecuteReader ()) {
2155 Assert.IsTrue (reader.Read (), "#B1");
2157 // Get By Parts for the column blob
2158 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2163 byte [] val = new byte [totalsize];
2166 ret = reader.GetBytes (0, offset, val, offset,
2167 (int) Math.Min (buffsize, totalsize - count));
2168 offset += (int) ret;
2170 } while (count < totalsize);
2172 Assert.AreEqual (expected.Length, count, "#B2");
2173 Assert.AreEqual (expected, val, "#B3");
2176 //Console.WriteLine ("GetBytes - third_executereader");
2177 // buffer size > (buffer offset + length) > remaining data
2178 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2179 Assert.IsTrue (reader.Read ());
2181 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2182 byte [] val = new byte [totalsize + 5];
2183 int buffer_offset = 3;
2185 long ret = reader.GetBytes (0, 0, val, buffer_offset, (int) totalsize);
2186 Assert.AreEqual (expected.Length, ret, "#C1");
2187 for (int i = 0; i < buffer_offset; i++)
2188 Assert.AreEqual (0x00, val [i], "#C2:" + i);
2189 for (int i = 0; i < totalsize; i++)
2190 Assert.AreEqual (expected [i], val [buffer_offset + i], "#C3:" + i);
2193 //Console.WriteLine ("GetBytes - fourth_executereader");
2194 // buffer size > (buffer offset + length) > remaining data
2195 using (IDataReader reader = cmd.ExecuteReader ()) {
2196 Assert.IsTrue (reader.Read ());
2198 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2199 byte [] val = new byte [totalsize + 5];
2200 int buffer_offset = 3;
2202 long ret = reader.GetBytes (0, 0, val, buffer_offset, (int) totalsize);
2203 Assert.AreEqual (expected.Length, ret, "#D1");
2204 for (int i = 0; i < buffer_offset; i++)
2205 Assert.AreEqual (0x00, val [i], "#D2:" + i);
2206 for (int i = 0; i < totalsize; i++)
2207 Assert.AreEqual (expected [i], val [buffer_offset + i], "#D3:" + i);
2210 /* FIXME: dataIndex is currently ignored */
2212 behavior = CommandBehavior.SingleResult | CommandBehavior.SequentialAccess;
2213 using (IDataReader reader = cmd.ExecuteReader (behavior)) {
2214 Assert.IsTrue (reader.Read (), "#E1");
2216 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2218 int bufferIndex = 3;
2220 byte [] val = new byte [totalsize + bufferIndex];
2221 for (int i = 0; i < val.Length; i++)
2223 ret = reader.GetBytes (0, 1L, val, bufferIndex, (int) (totalsize - 2));
2224 Assert.AreEqual (3, ret, "#E2");
2225 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#E3");
2227 reader.GetBytes (0, 3L, val, 1, 2);
2228 Assert.Fail ("#E4");
2229 } catch (InvalidOperationException ex) {
2230 // Invalid GetBytes attempt at dataIndex '3'.
2231 // With CommandBehavior.SequentialAccess, you
2232 // may only read from dataIndex '4' or greater
2233 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#E5");
2234 Assert.IsNull (ex.InnerException, "#E6");
2235 Assert.IsNotNull (ex.Message, "#E7");
2236 Assert.IsTrue (ex.Message.IndexOf ("CommandBehavior.SequentialAccess") != -1, "#E8:" + ex.Message);
2237 Assert.IsTrue (ex.Message.IndexOf ("'" + 3L.ToString (CultureInfo.InvariantCulture) + "'") != -1, "#E9:" + ex.Message);
2238 Assert.IsTrue (ex.Message.IndexOf ("'" + 4L.ToString (CultureInfo.InvariantCulture) + "'") != -1, "#E10:" + ex.Message);
2241 ret = reader.GetBytes (0, 4L, val, bufferIndex + 4, 2);
2242 Assert.AreEqual (1, ret, "#E11");
2243 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x22 }, val, "#E12");
2246 //Console.WriteLine ("GetBytes - fifth_executereader");
2247 behavior = CommandBehavior.SingleResult;
2248 using (IDataReader reader = cmd.ExecuteReader (behavior)) {
2249 Assert.IsTrue (reader.Read (), "#F1");
2251 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2253 int bufferIndex = 3;
2255 byte [] val = new byte [totalsize + bufferIndex];
2256 for (int i = 0; i < val.Length; i++)
2258 ret = reader.GetBytes (0, 1L, val, bufferIndex, (int) (totalsize - 2));
2259 Assert.AreEqual (3, ret, "#F2");
2260 Assert.AreEqual (new byte [] { 0x0a, 0x0a, 0x0a, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#F3");
2261 ret = reader.GetBytes (0, 3L, val, 1, 2);
2262 Assert.AreEqual (2, ret, "#F4");
2263 Assert.AreEqual (new byte [] { 0x0a, 0x44, 0x22, 0x56, 0x00, 0x44, 0x0a, 0x0a }, val, "#F5");
2269 public void GetBytes_Buffer_Null ()
2271 //Console.WriteLine ("GetBytes_Buffer_Null- first_executereader");
2272 cmd.CommandText = "SELECT type_blob FROM binary_family where id in (1,2,3,4) order by id";
2274 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2275 Assert.IsTrue (reader.Read (), "#A1");
2276 Assert.AreEqual (5, reader.GetBytes (0, 0, null, 0, 0), "#A2");
2278 Assert.IsTrue (reader.Read (), "#B1");
2279 Assert.AreEqual (275, reader.GetBytes (0, 0, null, 0, 0), "#B2");
2281 Assert.IsTrue (reader.Read (), "#C1");
2282 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#C2");
2284 Assert.IsTrue (reader.Read (), "#D1");
2285 if (conn is SqlConnection) {
2287 reader.GetBytes (0, 0, null, 0, 0);
2288 Assert.Fail ("#D2");
2289 } catch (SqlNullValueException ex) {
2290 // Data is Null. This method or
2291 // property cannot be called on
2293 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#D3");
2294 Assert.IsNull (ex.InnerException, "#D4");
2295 Assert.IsNotNull (ex.Message, "#D5");
2298 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#D2");
2302 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2303 Assert.IsTrue (reader.Read (), "#E1");
2304 Assert.AreEqual (5, reader.GetBytes (0, 5, null, 3, 8), "#E2");
2306 Assert.IsTrue (reader.Read (), "#F1");
2307 Assert.AreEqual (275, reader.GetBytes (0, 5, null, 3, 4), "#F2");
2309 Assert.IsTrue (reader.Read (), "#G1");
2310 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#G2");
2312 Assert.IsTrue (reader.Read (), "#H1");
2313 if (conn is SqlConnection) {
2315 reader.GetBytes (0, 5, null, 3, 4);
2316 Assert.Fail ("#H2");
2317 } catch (SqlNullValueException ex) {
2318 // Data is Null. This method or
2319 // property cannot be called on
2321 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#H3");
2322 Assert.IsNull (ex.InnerException, "#H4");
2323 Assert.IsNotNull (ex.Message, "#H5");
2326 Assert.AreEqual (-1, reader.GetBytes (0, 5, null, 3, 4), "#H2");
2330 using (IDataReader reader = cmd.ExecuteReader ()) {
2331 Assert.IsTrue (reader.Read (), "#I1");
2332 Assert.AreEqual (5, reader.GetBytes (0, 0, null, 0, 0), "#I2");
2334 Assert.IsTrue (reader.Read (), "#J1");
2335 Assert.AreEqual (275, reader.GetBytes (0, 0, null, 0, 0), "#J2");
2337 Assert.IsTrue (reader.Read (), "#K1");
2338 Assert.AreEqual (0, reader.GetBytes (0, 0, null, 0, 0), "#K2");
2340 Assert.IsTrue (reader.Read (), "#L1");
2341 if (conn is SqlConnection) {
2343 reader.GetBytes (0, 0, null, 0, 0);
2344 Assert.Fail ("#L2");
2345 } catch (SqlNullValueException ex) {
2346 // Data is Null. This method or
2347 // property cannot be called on
2349 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#L3");
2350 Assert.IsNull (ex.InnerException, "#L4");
2351 Assert.IsNotNull (ex.Message, "#L5");
2355 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#L2");
2358 reader.GetBytes (0, 0, null, 0, 0);
2359 Assert.Fail ("#L2");
2360 } catch (InvalidCastException) {
2361 // Unable to cast object of type
2362 // 'System.DBNull' to type 'System.Byte[]'
2368 using (IDataReader reader = cmd.ExecuteReader ()) {
2369 Assert.IsTrue (reader.Read (), "#M1");
2370 Assert.AreEqual (5, reader.GetBytes (0, 5, null, 3, 8), "#M2");
2372 Assert.IsTrue (reader.Read (), "#N1");
2373 Assert.AreEqual (275, reader.GetBytes (0, 5, null, 3, 4), "#N2");
2375 Assert.IsTrue (reader.Read (), "#O1");
2376 Assert.AreEqual (0, reader.GetBytes (0, 5, null, 3, 4), "#O2");
2378 Assert.IsTrue (reader.Read (), "#P1");
2379 if (conn is SqlConnection) {
2381 reader.GetBytes (0, 5, null, 3, 4);
2382 Assert.Fail ("#P2");
2383 } catch (SqlNullValueException ex) {
2384 // Data is Null. This method or
2385 // property cannot be called on
2387 Assert.AreEqual (typeof (SqlNullValueException), ex.GetType (), "#P3");
2388 Assert.IsNull (ex.InnerException, "#P4");
2389 Assert.IsNotNull (ex.Message, "#P5");
2393 Assert.AreEqual (-1, reader.GetBytes (0, 0, null, 0, 0), "#L2");
2396 reader.GetBytes (0, 0, null, 0, 0);
2397 Assert.Fail ("#L2");
2398 } catch (InvalidCastException) {
2399 // Unable to cast object of type
2400 // 'System.DBNull' to type 'System.Byte[]'
2408 public void GetBytes_DataIndex_Overflow ()
2410 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 2";
2412 //Console.WriteLine ("GetBytes_DataIndex_Overflow - first_executereader");
2413 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2414 Assert.IsTrue (reader.Read ());
2416 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2417 byte [] val = new byte [totalsize * 2];
2420 // dataIndex > total size, length = 0
2421 ret = reader.GetBytes (0, totalsize + 5, val, 0, 0);
2422 Assert.AreEqual (0, ret, "#C1");
2423 // dataIndex > total size, length < total size
2424 ret = reader.GetBytes (0, totalsize + 5, val, 0, 5);
2425 Assert.AreEqual (0, ret, "#C2");
2426 // dataIndex > total size, length > total size
2427 ret = reader.GetBytes (0, totalsize + 5, val, 0, (int) (totalsize + 5));
2428 Assert.AreEqual (0, ret, "#C3");
2431 //Console.WriteLine ("GetBytes_DataIndex_Overflow - second_executereader");
2432 using (IDataReader reader = cmd.ExecuteReader ()) {
2433 Assert.IsTrue (reader.Read ());
2435 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2436 byte [] val = new byte [totalsize * 2];
2439 // dataIndex > total size, length = 0
2440 ret = reader.GetBytes (0, totalsize + 5, val, 0, 0);
2441 Assert.AreEqual (0, ret, "#B1");
2442 // dataIndex > total size, length < total size
2443 ret = reader.GetBytes (0, totalsize + 5, val, 0, 5);
2444 Assert.AreEqual (0, ret, "#B2");
2445 // dataIndex > total size, length > total size
2446 ret = reader.GetBytes (0, totalsize + 5, val, 0, (int) (totalsize + 5));
2447 Assert.AreEqual (0, ret, "#B3");
2452 public void GetBytes_DataIndex_OffSet ()
2454 //Console.WriteLine ("GetBytes_DataIndex_Offset - first_executereader");
2455 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 2";
2457 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleResult | CommandBehavior.SequentialAccess)) {
2458 Assert.IsTrue (reader.Read ());
2460 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2461 byte [] val = new byte [totalsize];
2464 // start reading at index 0
2465 ret = reader.GetBytes (0, 0, val, 0, 5);
2466 Assert.AreEqual (5, ret, "#A1");
2467 for (int i = 0; i < ret; i++)
2468 Assert.AreEqual (long_bytes [i], val [i], "#A2:" + i);
2469 Assert.AreEqual (0x00, val [5], "#A3");
2471 // attempt to read data prior to current pointer
2473 reader.GetBytes (0, 4, val, 0, 5);
2474 Assert.Fail ("#B1");
2475 } catch (InvalidOperationException ex) {
2476 // Invalid GetBytes attempt at dataIndex '4'
2477 // With CommandBehavior.SequentialAccess,
2478 // you may only read from dataIndex '5'
2480 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
2481 Assert.IsNull (ex.InnerException, "#B3");
2482 Assert.IsNotNull (ex.Message, "#B4");
2483 Assert.IsTrue (ex.Message.IndexOf ("'4'") != -1, "#B5:" + ex.Message);
2484 Assert.IsTrue (ex.Message.IndexOf ("'5'") != -1, "#B6:" + ex.Message);
2487 // continue reading at current pointer
2488 ret = reader.GetBytes (0, 5, val, 5, 6);
2489 Assert.AreEqual (6, ret, "#C1");
2490 for (int i = 0; i < 11; i++)
2491 Assert.AreEqual (long_bytes [i], val [i], "#C2:" + i);
2492 Assert.AreEqual (0x00, val [11], "#C3");
2494 // skip 4 characters
2495 ret = reader.GetBytes (0, 15, val, 13, (val.Length - 13));
2496 Assert.AreEqual (260, ret, "#D1");
2497 for (int i = 0; i < 11; i++)
2498 Assert.AreEqual (long_bytes [i], val [i], "#D2:" + i);
2499 for (int i = 11; i < 13; i++)
2500 Assert.AreEqual (0x00, val [i], "#D3:" + i);
2501 for (int i = 13; i < (totalsize - 4); i++)
2502 Assert.AreEqual (long_bytes [i + 2], val [i], "#D4:" + i);
2505 //Console.WriteLine ("GetBytes_DataIndex_Offset - second_executereader");
2506 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleResult | CommandBehavior.SequentialAccess)) {
2507 Assert.IsTrue (reader.Read ());
2509 long totalsize = reader.GetBytes (0, 0, null, 0, 0);
2510 byte [] val = new byte [totalsize];
2513 int offset = (int) totalsize - 5;
2514 int buffer_offset = 7;
2516 // start reading at a specific position
2517 ret = reader.GetBytes (0, offset, val, buffer_offset,
2518 val.Length - buffer_offset);
2519 Assert.AreEqual (5, ret, "#E1");
2520 for (int i = 0; i < buffer_offset; i++)
2521 Assert.AreEqual (0x00, val [i], "#E2:" + i);
2522 for (int i = 0; i < ret; i++)
2523 Assert.AreEqual (long_bytes [offset + i], val [buffer_offset + i], "#E3:" + i);
2524 for (int i = (buffer_offset + (int) ret); i < val.Length; i++)
2525 Assert.AreEqual (0x00, val [i], "#E4:" + i);
2530 public void GetBytes_Reader_Closed ()
2532 //Console.WriteLine ("GetBytes_Reader_Closed - first_executereader");
2533 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2535 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2536 Assert.IsTrue (reader.Read (), "#1");
2540 reader.GetBytes (0, 0, null, -1, 0);
2542 } catch (InvalidOperationException ex) {
2543 // No data exists for the row/column
2544 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
2545 Assert.IsNull (ex.InnerException, "#4");
2546 Assert.IsNotNull (ex.Message, "#5");
2553 public void GetBytes_Reader_NoData ()
2555 //Console.WriteLine ("GetBytes_Reader_NoData - first_executereader");
2556 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2558 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SequentialAccess)) {
2560 reader.GetBytes (0, 0, null, -1, 0);
2562 } catch (InvalidOperationException ex) {
2563 // No data exists for the row/column
2564 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#3");
2565 Assert.IsNull (ex.InnerException, "#4");
2566 Assert.IsNotNull (ex.Message, "#5");
2572 public void GetSchemaTableTest_AutoIncrement ()
2574 cmd.CommandText = "select type_autoincrement from numeric_family";
2575 cmd.ExecuteNonQuery ();
2576 using (IDataReader reader = cmd.ExecuteReader (CommandBehavior.SchemaOnly)) {
2577 DataTable schemaTable = reader.GetSchemaTable ();
2578 Assert.IsTrue ((bool) schemaTable.Rows [0]["IsAutoIncrement"], "#1");
2580 if (!RunningOnMono) {
2581 /* FIXME: we always set it to false */
2582 if (schemaTable.Columns.Contains ("IsIdentity"))
2583 Assert.IsTrue ((bool) schemaTable.Rows [0] ["IsIdentity"], "#2");
2589 public void GetValues_Reader_Closed ()
2591 //Console.WriteLine ("GetValues_Reader_Closed - first_executereader");
2592 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 1";
2594 using (IDataReader rdr = cmd.ExecuteReader ()) {
2595 Assert.IsTrue (rdr.Read ());
2599 rdr.GetValues ((object []) null);
2601 } catch (InvalidOperationException ex) {
2602 // No data exists for the row/column
2603 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
2604 Assert.IsNull (ex.InnerException, "#3");
2605 Assert.IsNotNull (ex.Message, "#4");
2611 public void GetValues_Reader_NoData ()
2613 //Console.WriteLine ("GetValues_Reader_NoData - first_executereader");
2614 cmd.CommandText = "SELECT type_blob FROM binary_family where id = 666";
2616 using (IDataReader rdr = cmd.ExecuteReader ()) {
2618 rdr.GetValues ((object []) null);
2619 Assert.Fail ("#A1");
2620 } catch (InvalidOperationException ex) {
2621 // No data exists for the row/column
2622 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
2623 Assert.IsNull (ex.InnerException, "#A3");
2624 Assert.IsNotNull (ex.Message, "#A4");
2627 Assert.IsFalse (rdr.Read (), "#B");
2630 rdr.GetValues ((object []) null);
2631 Assert.Fail ("#C1");
2632 } catch (InvalidOperationException ex) {
2633 // No data exists for the row/column
2634 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#C2");
2635 Assert.IsNull (ex.InnerException, "#C3");
2636 Assert.IsNotNull (ex.Message, "#C4");
2641 static bool RunningOnMono {
2643 return (Type.GetType ("System.MonoType", false) != null);