public void ContinueCheckingStrategiesAfterBeingHandled() { var counter = 0; var context = new ErrorHandlingContext(this, ErrorSeverityLevel.NonFatal, new Exception()); var strategy1 = new Mock <IErrorHandlingStrategy>(); strategy1.Setup(o => o.Handle(context)).Callback(() => { context.MarkErrorAsHandled(); counter++; }); var strategy2 = new Mock <IErrorHandlingStrategy>(); strategy2.Setup(o => o.Handle(context)).Callback(() => { counter++; }); var target = new CompositeErrorHandlingStrategy(); target.AddStrategy(strategy1.Object); target.AddStrategy(strategy2.Object); target.Handle(context); Assert.AreEqual(2, counter); }
public void ExecutesAllStrategiesInTheOriginalOrder() { var counter = 0; var context = new ErrorHandlingContext(this, ErrorSeverityLevel.NonFatal, new Exception()); var strategy1 = new Mock <IErrorHandlingStrategy>(); strategy1.Setup(o => o.Handle(context)).Callback(() => { Assert.AreEqual(0, counter); counter++; }); var strategy2 = new Mock <IErrorHandlingStrategy>(); strategy2.Setup(o => o.Handle(context)).Callback(() => { Assert.AreEqual(1, counter); counter++; }); var target = new CompositeErrorHandlingStrategy(); target.AddStrategy(strategy1.Object); target.AddStrategy(strategy2.Object); target.Handle(context); Assert.AreEqual(2, counter); }
public void ThrowAnExceptionWhenRemovingAStrategyThatDoesNotExist() { var strategy = new Mock <IErrorHandlingStrategy>(); var target = new CompositeErrorHandlingStrategy(); Assert.Throws <ArgumentException>(() => target.RemoveStrategy(strategy.Object)); }
public void ThrowAnExceptionWhenAddingADuplicateStrategy() { var strategy = new Mock <IErrorHandlingStrategy>(); var target = new CompositeErrorHandlingStrategy(); target.AddStrategy(strategy.Object); Assert.Throws <ArgumentException>(() => target.AddStrategy(strategy.Object)); }
public void ThrowAnExceptionForDuplicateStrategies2() { var strategy = new Mock <IErrorHandlingStrategy>(); IEnumerable <IErrorHandlingStrategy> strategies = new[] { strategy.Object, strategy.Object }; Assert.Throws <ArgumentException>(() => CompositeErrorHandlingStrategy.Create(strategies)); }
/// <summary> /// Creates a <see cref="CompositeErrorHandlingStrategy"/> from the strategies provided. /// </summary> /// <param name="strategies">The strategies to add to the composite result.</param> /// <returns>A <see cref="CompositeErrorHandlingStrategy"/> instance.</returns> public static CompositeErrorHandlingStrategy Create(IEnumerable <IErrorHandlingStrategy> strategies) { if (strategies == null) { throw new ArgumentNullException(nameof(strategies)); } var result = new CompositeErrorHandlingStrategy(); foreach (var strategy in strategies) { result.AddStrategy(strategy); } return(result); }
public void ThrowAnExceptionWhenAddingANullStrategy() { var target = new CompositeErrorHandlingStrategy(); Assert.Throws <ArgumentNullException>(() => target.AddStrategy(null)); }
public void ThrowAnExceptionForDuplicateStrategies1() { var strategy = new Mock <IErrorHandlingStrategy>(); Assert.Throws <ArgumentException>(() => CompositeErrorHandlingStrategy.Create(strategy.Object, strategy.Object)); }