public virtual bool Handle(IEquivalencyValidationContext context, IEquivalencyValidator parent, IEquivalencyAssertionOptions config) { var subject = context.Subject as IDictionary; var expectation = context.Expectation as IDictionary; if (PreconditionsAreMet(expectation, subject)) { if (expectation != null) { foreach (object key in expectation.Keys) { if (config.IsRecursive) { context.TraceSingle(path => $"Recursing into dictionary item {key} at {path}"); parent.AssertEqualityUsing(context.CreateForDictionaryItem(key, subject[key], expectation[key])); } else { context.TraceSingle(path => $"Comparing dictionary item {key} at {path} between subject and expectation"); subject[key].Should().Be(expectation[key], context.Because, context.BecauseArgs); } } } } return(true); }
/// <summary> /// Applies a step as part of the task to compare two objects for structural equality. /// </summary> /// <value> /// Should return <c>true</c> if the subject matches the expectation or if no additional assertions /// have to be executed. Should return <c>false</c> otherwise. /// </value> /// <remarks> /// May throw when preconditions are not met or if it detects mismatching data. /// </remarks> public virtual bool Handle(IEquivalencyValidationContext context, IEquivalencyValidator parent, IEquivalencyAssertionOptions config) { var subject = (IDictionary)context.Subject; var expectation = context.Expectation as IDictionary; if (PreconditionsAreMet(context, expectation, subject)) { foreach (object key in subject.Keys) { if (config.IsRecursive) { parent.AssertEqualityUsing(context.CreateForDictionaryItem(key, subject[key], expectation[key])); } else { subject[key].Should().Be(expectation[key], context.Reason, context.ReasonArgs); } } } return true; }
/// <summary> /// Applies a step as part of the task to compare two objects for structural equality. /// </summary> /// <value> /// Should return <c>true</c> if the subject matches the expectation or if no additional assertions /// have to be executed. Should return <c>false</c> otherwise. /// </value> /// <remarks> /// May throw when preconditions are not met or if it detects mismatching data. /// </remarks> public virtual bool Handle(IEquivalencyValidationContext context, IEquivalencyValidator parent, IEquivalencyAssertionOptions config) { var subject = (IDictionary)context.Subject; var expectation = context.Expectation as IDictionary; if (PreconditionsAreMet(context, expectation, subject)) { foreach (object key in subject.Keys) { if (config.IsRecursive) { parent.AssertEqualityUsing(context.CreateForDictionaryItem(key, subject[key], expectation[key])); } else { subject[key].Should().Be(expectation[key], context.Because, context.BecauseArgs); } } } return(true); }