public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch) { var expectedValue = expected?.ToString()?.Trim(); var actualValue = actual?.ToString()?.Trim(); if (!string.IsNullOrEmpty(expectedValue) && !string.IsNullOrEmpty(actualValue) && expectedValue.Contains(",") && actualValue.Contains(",")) { context.Terminate(); var expectedValues = expectedValue.Split(',').Select(v => v.Trim()).ToArray(); var actualValues = actualValue.Split(',').Select(v => v.Trim()).ToArray(); if (expectedValues.Length != actualValues.Length) { return(false); } for (int i = 0; i < expectedValues.Length; i++) { if (expectedValues[i] != actualValues[i]) { return(false); } } } else if (expected?.ToString() != actual?.ToString()) { return(false); } return(true); }
public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch) { if (expected is JObject expectedObject && actual is JObject actualObject) { foreach (var property in expectedObject.Properties().Concat(actualObject.Properties()).Select(p => p.Name).Distinct().ToArray()) { var expectedProperty = expectedObject.Properties().FirstOrDefault(p => p.Name.Equals(property)); var actualProperty = actualObject.Properties().FirstOrDefault(p => p.Name.Equals(property)); var propertyName = (expectedProperty ?? actualProperty)?.Name ?? property; deepMatch(expectedProperty?.Value, actualProperty?.Value, context.For(new PropertyPathPart(propertyName), null, new TypePropertyMatcher(PropertyPath + "." + propertyName, applyToAll))); } context.Terminate(); return(context.Result.Matches); } return(expected.GetType() == actual.GetType()); }
public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch) { var e = (JObject)expected ?? new JObject(); var a = (JObject)actual ?? new JObject(); var expectedHeaders = e.Properties().Select(p => p.Name.ToLowerInvariant()).ToArray(); var actualHeaders = a.Properties().Select(p => p.Name.ToLowerInvariant()).ToArray(); foreach (var header in actualHeaders) { var expectedHeader = e.Properties().FirstOrDefault(p => p.Name.Equals(header, StringComparison.InvariantCultureIgnoreCase))?.Value as JValue; var actualHeader = a.Properties().FirstOrDefault(p => p.Name.Equals(header, StringComparison.InvariantCultureIgnoreCase))?.Value as JValue; var childContext = context.For(new PropertyPathPart(header), ignoreExpected: expectedHeader == null); deepMatch(expectedHeader ?? JValue.CreateString(""), actualHeader, childContext); } context.Terminate(); return(!expectedHeaders.Except(actualHeaders).Any()); }