/// <summary> /// Initializes a new instance of the <see cref="RecursionGuard" /> /// class. /// </summary> /// <param name="builder">The intercepted builder to decorate.</param> /// <param name="recursionHandler"> /// An <see cref="IRecursionHandler" /> that will handle a recursion /// situation, if one is detected. /// </param> /// <param name="comparer"> /// An <see cref="IEqualityComparer" /> implementation to use when /// comparing requests to determine recursion. /// </param> /// <param name="recursionDepth">The recursion depth at which the request will be treated as a recursive /// request</param> /// <exception cref="System.ArgumentNullException"> /// builder /// or /// recursionHandler /// or /// comparer /// </exception> public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler, IEqualityComparer comparer, int recursionDepth) { if (builder == null) { throw new ArgumentNullException("builder"); } if (recursionHandler == null) { throw new ArgumentNullException("recursionHandler"); } if (comparer == null) { throw new ArgumentNullException("comparer"); } this.monitoredRequests = new Stack <object>(); this.builder = builder; this.recursionHandler = recursionHandler; this.comparer = comparer; this.recursionDepth = recursionDepth; }
/// <summary> /// Initializes a new instance of the <see cref="RecursionGuard" /> /// class. /// </summary> /// <param name="builder">The intercepted builder to decorate.</param> /// <param name="recursionHandler"> /// An <see cref="IRecursionHandler" /> that will handle a recursion /// situation, if one is detected. /// </param> /// <param name="comparer"> /// An <see cref="IEqualityComparer" /> implementation to use when /// comparing requests to determine recursion. /// </param> /// <param name="recursionDepth">The recursion depth at which the request will be treated as a recursive /// request.</param> /// <exception cref="System.ArgumentNullException"> /// builder /// or /// recursionHandler /// or /// comparer /// </exception> /// <exception cref="System.ArgumentOutOfRangeException">recursionDepth is less than one.</exception> public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler, IEqualityComparer comparer, int recursionDepth) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (recursionHandler == null) { throw new ArgumentNullException(nameof(recursionHandler)); } if (comparer == null) { throw new ArgumentNullException(nameof(comparer)); } if (recursionDepth < 1) { throw new ArgumentOutOfRangeException(nameof(recursionDepth), "Recursion depth must be greater than 0."); } this.builder = builder; this.recursionHandler = recursionHandler; this.comparer = comparer; this.recursionDepth = recursionDepth; }
/// <summary> /// Initializes a new instance of the <see cref="RecursionGuard" /> /// class. /// </summary> /// <param name="builder">The intercepted builder to decorate.</param> /// <param name="recursionHandler"> /// An <see cref="IRecursionHandler" /> that will handle a recursion /// situation, if one is detected. /// </param> public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler) : this(builder, recursionHandler, EqualityComparer<object>.Default) { }
/// <summary> /// Initializes a new instance of the <see cref="RecursionGuard" /> /// class. /// </summary> /// <param name="builder">The intercepted builder to decorate.</param> /// <param name="recursionHandler"> /// An <see cref="IRecursionHandler" /> that will handle a recursion /// situation, if one is detected. /// </param> public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler) : this( builder, recursionHandler, EqualityComparer <object> .Default) { }
public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler, IEqualityComparer comparer) : this( builder, recursionHandler, comparer, 1) { }
public void ConstructWithBuilderAndRecursionHandlerHasCorrectHandler() { // Arrange var dummyBuilder = new DelegatingSpecimenBuilder(); var expected = new DelegatingRecursionHandler(); var sut = new RecursionGuard(dummyBuilder, expected); // Act IRecursionHandler actual = sut.RecursionHandler; // Assert Assert.Equal(expected, actual); }
public void ConstructWithBuilderAndRecursionHandlerHasCorrectHandler() { // Fixture setup var dummyBuilder = new DelegatingSpecimenBuilder(); var expected = new DelegatingRecursionHandler(); var sut = new RecursionGuard(dummyBuilder, expected); // Exercise system IRecursionHandler actual = sut.RecursionHandler; // Verify outcome Assert.Equal(expected, actual); // Teardown }
/// <summary> /// Initializes a new instance of the <see cref="RecursionGuard" /> /// class. /// </summary> /// <param name="builder">The intercepted builder to decorate.</param> /// <param name="recursionHandler"> /// An <see cref="IRecursionHandler" /> that will handle a recursion /// situation, if one is detected. /// </param> /// <param name="comparer"> /// An <see cref="IEqualityComparer" /> implementation to use when /// comparing requests to determine recursion. /// </param> /// <param name="recursionDepth">The recursion depth at which the request will be treated as a recursive /// request</param> /// <exception cref="System.ArgumentNullException"> /// builder /// or /// recursionHandler /// or /// comparer /// </exception> public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler, IEqualityComparer comparer, int recursionDepth) { if (builder == null) throw new ArgumentNullException("builder"); if (recursionHandler == null) throw new ArgumentNullException("recursionHandler"); if (comparer == null) throw new ArgumentNullException("comparer"); this.monitoredRequests = new Stack<object>(); this.builder = builder; this.recursionHandler = recursionHandler; this.comparer = comparer; this.recursionDepth = recursionDepth; }
/// <summary> /// Initializes a new instance of the <see cref="RecursionGuard" /> /// class. /// </summary> /// <param name="builder">The intercepted builder to decorate.</param> /// <param name="recursionHandler"> /// An <see cref="IRecursionHandler" /> that will handle a recursion /// situation, if one is detected. /// </param> /// <param name="comparer"> /// An <see cref="IEqualityComparer" /> implementation to use when /// comparing requests to determine recursion. /// </param> /// <param name="recursionDepth">The recursion depth at which the request will be treated as a recursive /// request.</param> /// <exception cref="System.ArgumentNullException"> /// builder /// or /// recursionHandler /// or /// comparer /// </exception> /// <exception cref="System.ArgumentOutOfRangeException">recursionDepth is less than one.</exception> public RecursionGuard( ISpecimenBuilder builder, IRecursionHandler recursionHandler, IEqualityComparer comparer, int recursionDepth) { if (builder == null) throw new ArgumentNullException("builder"); if (recursionHandler == null) throw new ArgumentNullException("recursionHandler"); if (comparer == null) throw new ArgumentNullException("comparer"); if (recursionDepth < 1) throw new ArgumentOutOfRangeException("recursionDepth", "Recursion depth must be greater than 0."); this.builder = builder; this.recursionHandler = recursionHandler; this.comparer = comparer; this.recursionDepth = recursionDepth; }