Пример #1
0
        public override bool Matches(object expected, object actual, MatchingContext context, Action <object, object, MatchingContext> deepMatch)
        {
            var actualBody = (JObject)actual;

            foreach (var property in actualBody.Properties())
            {
                deepMatch(null, property.Value, context.For(new PropertyPathPart(property.Name)));
            }

            return(true);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }