public EquivalencyResult Handle(Comparands comparands, IEquivalencyValidationContext context, IEquivalencyValidator nestedValidator) { Type expectationType = comparands.GetExpectedType(context.Options); EqualityStrategy strategy = context.Options.GetEqualityStrategy(expectationType); bool canHandle = (strategy == EqualityStrategy.Equals) || (strategy == EqualityStrategy.ForceEquals); if (canHandle) { context.Tracer.WriteLine(member => { string strategyName = (strategy == EqualityStrategy.Equals) ? "Equals must be used" : "object overrides Equals"; return($"Treating {member.Description} as a value type because {strategyName}."); }); comparands.Subject.Should().Be(comparands.Expectation, context.Reason.FormattedMessage, context.Reason.Arguments); return(EquivalencyResult.AssertionCompleted); } else { return(EquivalencyResult.ContinueWithNext); } }
/// <summary> /// Gets a value indicating whether this step can handle the current subject and/or expectation. /// </summary> public bool CanHandle(IEquivalencyValidationContext context, IEquivalencyAssertionOptions config) { Type type = config.GetExpectationType(context); EqualityStrategy strategy = config.GetEqualityStrategy(type); bool canHandle = (strategy == EqualityStrategy.Equals) || (strategy == EqualityStrategy.ForceEquals); if (canHandle) { context.TraceSingle(path => { string strategyName = (strategy == EqualityStrategy.Equals) ? "Equals must be used" : "object overrides Equals"; return($"Treating {path} as a value type because {strategyName}."); }); } return(canHandle); }