public void ParsesByteArray_AsInt_WhenGlobalConvert() { using (GlobalSettings.UseTestInstance()) { GlobalSettings.Instance.ConvertAllNumericValues = true; var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int)); rdr.SetupSequence(r => r.IsDBNull(0)) .Returns(false) .Returns(true) .Returns(false); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(true) .Returns(true) .Returns(false); rdr.SetupSequence(r => r.GetValue(0)) .Returns(0) .Returns(1); var toTest = new SimpleTypeRowFactory <byte[]>(); var res = toTest.ParseRows(rdr.Object, Enumerable.Empty <IDataTransformer>(), CancellationToken.None); res.First().Should().ContainInOrder(BitConverter.GetBytes(0)); res.Skip(1).First().Should().BeNull(); res.Last().Should().ContainInOrder(BitConverter.GetBytes(1)); } }
public void GlobalConvertAll_WillTransformSingleIntegerWhenTransformerUsed() { var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(double)); rdr.Setup(r => r.GetValue(0)).Returns(42.0); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(false); var xf = new Mock <IDataTransformer>(); xf.Setup(x => x.CanTransform(42.0, typeof(float), false, It.IsAny <IEnumerable <Attribute> >())) .Returns(true); xf.Setup(x => x.Transform(42.0, typeof(float), false, It.IsAny <IEnumerable <Attribute> >())) .Returns(2f); using (GlobalSettings.UseTestInstance()) { StoredProcedure.EnableConvertOnAllNumericValues(); var toTest = new SimpleTypeRowFactory <float>(); toTest.ParseRows(rdr.Object, new[] { xf.Object }, CancellationToken.None) .Single().Should().Be(2f); } }
public async Task ParsesThroughGlobalDataTransformer() { var rdr = new Mock <DbDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int)); rdr.Setup(r => r.GetValue(0)).Returns(99); rdr.SetupSequence(r => r.ReadAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(true) .ReturnsAsync(false); var xformer = new Mock <IDataTransformer>(); xformer.Setup(x => x.CanTransform(99, typeof(int), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null))) .Returns(true); xformer.Setup(x => x.Transform(99, typeof(int), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null))) .Returns(42); using (GlobalSettings.UseTestInstance()) { StoredProcedure.AddGlobalTransformer(xformer.Object); var toTest = new SimpleTypeRowFactory <int>(); var res = await toTest.ParseRowsAsync(rdr.Object, new IDataTransformer[0], CancellationToken.None); res.Single().Should().Be(42); } }
public void ParsesByteArray_AsObject() { var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(byte[])); rdr.SetupSequence(r => r.IsDBNull(0)) .Returns(false) .Returns(true) .Returns(false); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(true) .Returns(true) .Returns(false); rdr.SetupSequence(r => r.GetValue(0)) .Returns(new byte[] { 0 }) .Returns(new byte[] { 1 }); var toTest = new SimpleTypeRowFactory <byte[]>(); var res = toTest.ParseRows(rdr.Object, Enumerable.Empty <IDataTransformer>(), CancellationToken.None); res.First().Should().ContainSingle().Which.Should().Be(0); res.Skip(1).First().Should().BeNull(); res.Last().Should().ContainSingle().Which.Should().Be(1); }
public void ParsesSingleInteger() { var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int)); rdr.Setup(r => r.GetInt32(0)).Returns(42); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(false); var toTest = new SimpleTypeRowFactory <int>(); toTest.ParseRows(rdr.Object, Enumerable.Empty <IDataTransformer>(), CancellationToken.None) .Single().Should().Be(42); }
public async Task ParsesSingleInteger() { var rdr = new Mock <DbDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int)); rdr.Setup(r => r.GetInt32(0)).Returns(42); rdr.SetupSequence(r => r.ReadAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(true) .ReturnsAsync(false); var toTest = new SimpleTypeRowFactory <int>(); var res = await toTest.ParseRowsAsync(rdr.Object, Enumerable.Empty <IDataTransformer>(), CancellationToken.None); res.Single().Should().Be(42); }
public void GlobalConvertAll_WillTransformSingleInteger() { var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int)); rdr.Setup(r => r.GetInt32(0)).Returns(42); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(false); using (GlobalSettings.UseTestInstance()) { StoredProcedure.EnableConvertOnAllNumericValues(); var toTest = new SimpleTypeRowFactory <double>(); toTest.ParseRows(rdr.Object, Enumerable.Empty <IDataTransformer>(), CancellationToken.None) .Single().Should().Be(42.0); } }
public void HelpfulExceptionWhenColumnWrongType() { var reader = new Mock <IDataReader>(); reader.SetupGet(r => r.FieldCount) .Returns(1); reader.SetupSequence(r => r.Read()) .Returns(true) .Returns(false); reader.Setup(r => r.GetFieldType(0)).Returns(typeof(Decimal)); reader.Setup(r => r.GetDecimal(0)).Returns(42M); var toTest = new SimpleTypeRowFactory <int>(); toTest.Invoking(f => f.ParseRows(reader.Object, new IDataTransformer[0], CancellationToken.None)) .ShouldThrow <StoredProcedureColumnException>() .WithMessage("Error setting [Int32] result. Stored Procedure returns [Decimal]."); }
public void ParsesThroughDataTransformer() { var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(int)); rdr.Setup(r => r.GetValue(0)).Returns(99); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(false); var xformer = new Mock <IDataTransformer>(); xformer.Setup(x => x.CanTransform(99, typeof(int), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null))) .Returns(true); xformer.Setup(x => x.Transform(99, typeof(int), false, It.Is <IEnumerable <Attribute> >(attrs => attrs != null))) .Returns(42); var toTest = new SimpleTypeRowFactory <int>(); toTest.ParseRows(rdr.Object, new[] { xformer.Object }, CancellationToken.None) .Single().Should().Be(42); }
public void ReturnsMultipleStrings() { var rdr = new Mock <IDataReader>(); rdr.Setup(r => r.GetFieldType(0)).Returns(typeof(string)); rdr.SetupSequence(r => r.IsDBNull(0)) .Returns(false) .Returns(true) .Returns(false); rdr.SetupSequence(r => r.Read()) .Returns(true) .Returns(true) .Returns(true) .Returns(false); rdr.SetupSequence(r => r.GetString(0)) .Returns("Foo") .Returns("Bar"); var toTest = new SimpleTypeRowFactory <string>(); toTest.ParseRows(rdr.Object, Enumerable.Empty <IDataTransformer>(), CancellationToken.None) .Should().ContainInOrder("Foo", null, "Bar"); }