public void TestGetValueWithRealSqlReader() { IGenericDataItemValueProvider <IDataReader> provider = new DataReaderValueProvider(); IDataReader reader = new DataProvider().GetAllCustomersDataReader(); reader.Read(); Assert.AreEqual(1, provider.GetValue("Id", reader)); Assert.AreEqual(1, provider.GetValue("id", reader)); Assert.AreEqual("Customer 1", provider.GetValue("Name", reader)); Assert.AreEqual(false, provider.GetValue("IsVip", reader)); Assert.IsNull(provider.GetValue("Type", reader)); reader.Read(); Assert.AreEqual(2, provider.GetValue("Id", reader)); Assert.AreEqual("Customer 2", provider.GetValue("Name", reader)); Assert.AreEqual(true, provider.GetValue("IsVip", reader)); Assert.AreEqual(1, provider.GetValue("Type", reader)); reader.Read(); Assert.AreEqual(3, provider.GetValue("Id", reader)); Assert.AreEqual("Customer 3", provider.GetValue("Name", reader)); Assert.IsNull(provider.GetValue("IsVip", reader)); Assert.IsNull(provider.GetValue("Type", reader)); reader.Close(); }
public void TestGetValue() { IGenericDataItemValueProvider <IDataReader> provider = new DataReaderValueProvider(); IDataReader dataReader = Substitute.For <IDataReader>(); dataReader.GetOrdinal("Column1").Returns(0); dataReader.GetOrdinal("column1").Returns(0); dataReader.GetOrdinal("Column2").Returns(1); dataReader.GetOrdinal("BadColumn").Returns(-1); dataReader.GetOrdinal("BadColumn2").Throws(new IndexOutOfRangeException()); dataReader.GetValue(0).Returns(5); dataReader.GetValue(1).Returns("Five"); Assert.AreEqual(5, provider.GetValue("Column1", dataReader)); Assert.AreEqual(5, provider.GetValue("column1", dataReader)); Assert.AreEqual(5, provider.GetValue(" column1 ", dataReader)); Assert.AreEqual("Five", provider.GetValue("Column2", dataReader)); ExceptionAssert.Throws <ColumnNotFoundException>(() => provider.GetValue("BadColumn", dataReader), "DataReader does not contain column \"BadColumn\""); ExceptionAssert.Throws <ColumnNotFoundException>(() => provider.GetValue("BadColumn2", dataReader), "DataReader does not contain column \"BadColumn2\""); ExceptionAssert.Throws <ArgumentException>(() => provider.GetValue(null, dataReader)); ExceptionAssert.Throws <ArgumentException>(() => provider.GetValue(string.Empty, dataReader)); ExceptionAssert.Throws <ArgumentException>(() => provider.GetValue(" ", dataReader)); ExceptionAssert.Throws <ArgumentNullException>(() => provider.GetValue("Column1", null)); dataReader.IsClosed.Returns(true); ExceptionAssert.Throws <InvalidOperationException>(() => provider.GetValue("Column1", dataReader), "DataReader is closed"); }