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);
        }
Пример #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());
        }