/// <summary> /// Perform recursive property comparison of the child properties for objects that are of incompatible type. /// </summary> /// <param name="cyclicReferenceHandling"> /// Indication of how cyclic references in the nested properties should be handled. By default this will result in an /// exception, but if <see cref="CyclicReferenceHandling.Ignore"/> is specified, cyclic references will just be ignored. /// </param> public PropertyAssertions <T> IncludingNestedObjects( CyclicReferenceHandling cyclicReferenceHandling = CyclicReferenceHandling.ThrowException) { config.IncludingNestedObjects(); if (cyclicReferenceHandling == CyclicReferenceHandling.Ignore) { config.IgnoringCyclicReferences(); } return(this); }
/// <summary> /// Creates an instance of the equivalency assertions options based on defaults previously configured by the caller. /// </summary> protected SelfReferenceEquivalencyAssertionOptions(IEquivalencyAssertionOptions defaults) { allowInfiniteRecursion = defaults.AllowInfiniteRecursion; isRecursive = defaults.IsRecursive; cyclicReferenceHandling = defaults.CyclicReferenceHandling; allowInfiniteRecursion = defaults.AllowInfiniteRecursion; enumEquivalencyHandling = defaults.EnumEquivalencyHandling; useRuntimeTyping = defaults.UseRuntimeTyping; includeProperties = defaults.IncludeProperties; includeFields = defaults.IncludeFields; selectionRules.AddRange(defaults.SelectionRules); userEquivalencySteps.AddRange(defaults.UserEquivalencySteps); matchingRules.AddRange(defaults.MatchingRules); orderingRules = new OrderingRuleCollection(defaults.OrderingRules); RemoveSelectionRule <AllPublicPropertiesSelectionRule>(); RemoveSelectionRule <AllPublicFieldsSelectionRule>(); }
/// <summary> /// Creates an instance of the equivalency assertions options based on defaults previously configured by the caller. /// </summary> protected SelfReferenceEquivalencyAssertionOptions(IEquivalencyAssertionOptions defaults) { isRecursive = defaults.IsRecursive; cyclicReferenceHandling = defaults.CyclicReferenceHandling; allowInfiniteRecursion = defaults.AllowInfiniteRecursion; enumEquivalencyHandling = defaults.EnumEquivalencyHandling; useRuntimeTyping = defaults.UseRuntimeTyping; includeProperties = defaults.IncludeProperties; includeFields = defaults.IncludeFields; selectionRules.AddRange(defaults.SelectionRules); userEquivalencySteps.AddRange(defaults.UserEquivalencySteps); matchingRules.AddRange(defaults.MatchingRules); orderingRules = new OrderingRuleCollection(defaults.OrderingRules); ConversionSelector = defaults.ConversionSelector.Clone(); getDefaultEqualityStrategy = defaults.GetEqualityStrategy; TraceWriter = defaults.TraceWriter; RemoveSelectionRule <AllPublicPropertiesSelectionRule>(); RemoveSelectionRule <AllPublicFieldsSelectionRule>(); }
/// <summary> /// Creates an instance of the equivalency assertions options based on defaults previously configured by the caller. /// </summary> protected EquivalencyAssertionOptionsBase(IEquivalencyAssertionOptions defaults) { allowInfiniteRecursion = defaults.AllowInfiniteRecursion; isRecursive = defaults.IsRecursive; cyclicReferenceHandling = defaults.CyclicReferenceHandling; allowInfiniteRecursion = defaults.AllowInfiniteRecursion; enumEquivalencyHandling = defaults.EnumEquivalencyHandling; useRuntimeTyping = defaults.UseRuntimeTyping; includeProperties = defaults.IncludeProperties; includeFields = defaults.IncludeFields; selectionRules.AddRange(defaults.SelectionRules.Where(IsNotStandardSelectionRule)); if (IncludesIncludingSelectionRule(defaults.SelectionRules)) { mustAddSelectionRules = false; } userEquivalencySteps.AddRange(defaults.UserEquivalencySteps); matchingRules.AddRange(defaults.MatchingRules); orderingRules = new OrderingRuleCollection(defaults.OrderingRules); }
/// <summary> /// Causes the structural equality check to ignore any cyclic references. /// </summary> /// <remarks> /// By default, cyclic references within the object graph will cause an exception to be thrown. /// </remarks> public TSelf IgnoringCyclicReferences() { cyclicReferenceHandling = CyclicReferenceHandling.Ignore; return((TSelf)this); }
/// <summary> /// Causes the structural equality check to ignore any cyclic references. /// </summary> /// <remarks> /// By default, cyclic references within the object graph will cause an exception to be thrown. /// </remarks> public EquivalencyAssertionOptions <TSubject> IgnoringCyclicReferences() { cyclicReferenceHandling = CyclicReferenceHandling.Ignore; return(this); }
public ComparisonConfiguration <TSubject> IgnoreCyclicReferences() { cyclicReferenceHandling = CyclicReferenceHandling.Ignore; return(this); }
public ObjectTracker(CyclicReferenceHandling handling) { this.handling = handling; }
public CyclicReferenceDetector(CyclicReferenceHandling handling) { this.handling = handling; }
public ObjectTracker(CyclicReferenceHandling handling) { this.handling = handling; }