public void GetValue()
        {
            DataTable table = new DataTable();
            table.Columns.Add("State", typeof(string));
            table.Columns.Add("Direction", typeof(string));
            table.Columns.Add("Count", typeof(int));
            table.Columns.Add("Sum", typeof(int));

            table.Rows.Add(new object[]{"TX", "North", 1, 2});

            IDataReader reader = new TableDataReader(table);
            reader.Read();

            Assert.AreEqual("TX", (string)reader.GetValue(0));
            Assert.AreEqual("North", (string)reader.GetValue(1));
            Assert.AreEqual(1, (int)reader.GetValue(2));
            Assert.AreEqual(2, (int)reader.GetValue(3));
        }
        public void ReadWithTwoRows()
        {
            DataTable table = new DataTable();
            table.Columns.Add("State", typeof(string));
            table.Rows.Add(new object[]{"TX"});
            table.Rows.Add(new object[]{"MO"});

            TableDataReader reader = new TableDataReader(table);

            // One row, so it should return true the first time, and false the second
            Assert.IsTrue(reader.Read());
            Assert.IsTrue(reader.Read());
            Assert.IsFalse(reader.Read());
        }
        public void ReadingAClosedReaderThrowsAnException()
        {
            DataTable table = new DataTable();
            table.Columns.Add("State", typeof(string));
            table.Rows.Add(new object[]{"TX"});
            table.Rows.Add(new object[]{"MO"});
            table.Rows.Add(new object[]{"AR"});

            TableDataReader reader = new TableDataReader(table);

            Assert.IsFalse(reader.IsClosed);
            reader.Close();
            Assert.IsTrue(reader.IsClosed);

            reader.Read();
        }
        public void ReadWithNoRows()
        {
            DataTable table = new DataTable();
            table.Columns.Add("State", typeof(string));

            TableDataReader reader = new TableDataReader(table);

            // No rows, so it should return false
            Assert.IsFalse(reader.Read());
        }
        public void IsDBNull()
        {
            DataTable table = new DataTable();
            table.Columns.Add("State", typeof(string));
            table.Columns.Add("Direction", typeof(string));
            table.Columns.Add("Count", typeof(int));
            table.Columns.Add("Sum", typeof(int));

            table.Rows.Add(new object[]{DBNull.Value, "North", DBNull.Value, 2});

            IDataReader reader = new TableDataReader(table);
            reader.Read();

            Assert.IsTrue(reader.IsDBNull(0));
            Assert.IsFalse(reader.IsDBNull(1));
            Assert.IsTrue(reader.IsDBNull(2));
            Assert.IsFalse(reader.IsDBNull(3));
        }