public void ShouldNotReturnValueIfOmitted() { // Arrange var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithParameterlessMethod>(); var call = CallHelper.CreateCallMock(() => target.Method()); specimenContext.Resolve(typeof(string)).Returns(new OmitSpecimen()); // Act var result = sut.ResolveResult(call); // Assert Assert.False(result.ReturnValue.HasValue()); }
public void ShouldNotReturnValueIfOmitted() { // Fixture setup var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithParameterlessMethod>(); var call = CallHelper.CreateCallMock(() => target.Method()); specimenContext.Resolve(typeof(string)).Returns(new OmitSpecimen()); // Exercise system var result = sut.ResolveResult(call); // Verify outcome Assert.False(result.ReturnValue.HasValue()); // Teardown }
public void ShouldResolveRefParameterValue() { // Arrange var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithRefIntMethod>(); int passedValue = 1; var call = CallHelper.CreateCallMock(() => target.Method(ref passedValue)); specimenContext.Resolve(typeof(int)).Returns(42); // Act var callResult = sut.ResolveResult(call); // Assert Assert.Single(callResult.ArgumentValues); Assert.Equal(0, callResult.ArgumentValues.First().Index); Assert.Equal(42, callResult.ArgumentValues.First().Value); }
public void ShouldUseTypeRequestToResolveReturnValue() { // Arrange var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithParameterlessMethod>(); var call = CallHelper.CreateCallMock(() => target.Method()); var returnValue = "returnResult"; specimenContext.Resolve(typeof(string)).Returns(returnValue); // Act var callResult = sut.ResolveResult(call); // Assert Assert.True(callResult.ReturnValue.HasValue()); Assert.Equal(returnValue, callResult.ReturnValue.ValueOrDefault()); }
public void ShouldNotResolveArgumentValueIfOmitted() { // Arrange var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithRefIntMethod>(); int ignored = 0; var call = CallHelper.CreateCallMock(() => target.Method(ref ignored)); specimenContext.Resolve(typeof(int)).Returns(new OmitSpecimen()); // Act var result = sut.ResolveResult(call); // Assert Assert.True(result.ReturnValue.HasValue()); Assert.Empty(result.ArgumentValues); }
public void ShouldUsePropertyInfoRequestToResolvePropertyValue() { // Arrange var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithProperty>(); var call = CallHelper.CreatePropertyGetterCallMock(() => target.Property); var propertyInfo = typeof(IInterfaceWithProperty).GetProperty(nameof(IInterfaceWithProperty.Property)); var retValue = "returnValue"; specimenContext.Resolve(propertyInfo).Returns(retValue); // Act var result = sut.ResolveResult(call); // Assert Assert.True(result.ReturnValue.HasValue()); Assert.Equal(retValue, result.ReturnValue.ValueOrDefault()); }
public void ShouldResolveOutParameterValue() { // Fixture setup var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithParameterAndOutVoidMethod>(); int _; var call = CallHelper.CreateCallMock(() => target.Method(null, out _)); specimenContext.Resolve(typeof(int)).Returns(42); // Exercise system var callResult = sut.ResolveResult(call); // Verify outcome Assert.Single(callResult.ArgumentValues); Assert.Equal(1, callResult.ArgumentValues.First().Index); Assert.Equal(42, callResult.ArgumentValues.First().Value); // Teardown }
public void ShouldNotResolveArgumentValueIfOmitted() { // Fixture setup var specimenContext = Substitute.For <ISpecimenContext>(); var sut = new CallResultResolver(specimenContext); var target = Substitute.For <IInterfaceWithRefIntMethod>(); int _ = 0; var call = CallHelper.CreateCallMock(() => target.Method(ref _)); specimenContext.Resolve(typeof(int)).Returns(new OmitSpecimen()); // Exercise system var result = sut.ResolveResult(call); // Verify outcome Assert.True(result.ReturnValue.HasValue()); Assert.Empty(result.ArgumentValues); // Teardown }