/// <summary>Initializes a new instance of the <see cref="MutationGuarder"/> class.</summary> /// <param name="fixer">Handles generic resolution.</param> /// <param name="randomizer">Creates objects and populates them with random values.</param> /// <param name="duplicator">Deep clones objects.</param> /// <param name="asserter">Handles common test scenarios.</param> /// <param name="timeout">How long to wait for methods to complete.</param> internal MutationGuarder(GenericFixer fixer, IRandomizer randomizer, IDuplicator duplicator, Asserter asserter, TimeSpan timeout) : base(fixer, randomizer, timeout) { _duplicator = duplicator ?? throw new ArgumentNullException(nameof(duplicator)); _asserter = asserter ?? throw new ArgumentNullException(nameof(asserter)); }
/// <inheritdoc/> public IDuplicatable DeepClone(IDuplicator duplicator) { if (duplicator == null) { throw new ArgumentNullException(nameof(duplicator)); } return(new CallData(_methodName, _generics.ToArray(), duplicator.Copy(_args), duplicator.Copy(_valuer))); }
/// <inheritdoc/> public IDuplicatable DeepClone(IDuplicator duplicator) { if (duplicator == null) { throw new ArgumentNullException(nameof(duplicator)); } return(new MethodCallWrapper(duplicator.Copy(_method), duplicator.Copy(_names.Select(n => Tuple.Create(n, _args[n])).ToArray()))); }
/// <summary>Initializes a new instance of the <see cref="DuplicatorChainer"/> class.</summary> /// <param name="duplicator">Reference to the actual duplicator.</param> /// <param name="callback">Callback to the duplicator to handle child values.</param> public DuplicatorChainer(IDuplicator duplicator, Func <object, DuplicatorChainer, object> callback) { Duplicator = duplicator ?? throw new ArgumentNullException(nameof(duplicator)); _callback = callback ?? throw new ArgumentNullException(nameof(callback)); _history = new ConditionalWeakTable <object, object>(); }