Summary

Class:WireMock.Matchers.JsonPathMatcher
Assembly:WireMock.Net
File(s):C:\Users\azureuser\Documents\Github\WireMock.Net\src\WireMock.Net\Matchers\JsonPathMatcher.cs
Covered lines:23
Uncovered lines:10
Coverable lines:33
Total lines:88
Line coverage:69.6%
Branch coverage:50%

Metrics

MethodCyclomatic complexity  NPath complexity  Sequence coverage  Branch coverage  
.ctor(...)10100100
IsMatch(...)2254.5566.67
IsMatch(...)3454.5560
GetPatterns()10100100
GetName()10100100

File(s)

C:\Users\azureuser\Documents\Github\WireMock.Net\src\WireMock.Net\Matchers\JsonPathMatcher.cs

#LineLine coverage
 1using System;
 2using System.Linq;
 3using JetBrains.Annotations;
 4using Newtonsoft.Json.Linq;
 5using WireMock.Validation;
 6
 7namespace WireMock.Matchers
 8{
 9    /// <summary>
 10    /// JSONPathMatcher
 11    /// </summary>
 12    /// <seealso cref="IMatcher" />
 13    public class JsonPathMatcher : IStringMatcher, IObjectMatcher
 14    {
 15        // private readonly object _jsonPattern;
 16        private readonly string[] _patterns;
 17
 18        /// <summary>
 19        /// Initializes a new instance of the <see cref="JsonPathMatcher"/> class.
 20        /// </summary>
 21        /// <param name="patterns">The patterns.</param>
 722        public JsonPathMatcher([NotNull] params string[] patterns)
 723        {
 724            Check.NotNull(patterns, nameof(patterns));
 25
 726            _patterns = patterns;
 727        }
 28
 29        //public JsonPathMatcher([NotNull] object jsonPattern)
 30        //{
 31        //    Check.NotNull(jsonPattern, nameof(jsonPattern));
 32
 33        //    _jsonPattern = jsonPattern;
 34        //}
 35
 36        /// <inheritdoc cref="IStringMatcher.IsMatch"/>
 37        public double IsMatch(string input)
 238        {
 239             if (input == null)
 040            {
 041                return MatchScores.Mismatch;
 42            }
 43
 44            try
 245            {
 246                JObject o = JObject.Parse(input);
 47
 648                return MatchScores.ToScore(_patterns.Select(p => o.SelectToken(p) != null));
 49            }
 050            catch (Exception)
 051            {
 052                return MatchScores.Mismatch;
 53            }
 254        }
 55
 56        /// <inheritdoc cref="IObjectMatcher.IsMatch"/>
 57        public double IsMatch(object input)
 358        {
 359             if (input == null)
 060            {
 061                return MatchScores.Mismatch;
 62            }
 63
 64            try
 365            {
 366                 var o = input as JObject ?? JObject.FromObject(input);
 67
 968                return MatchScores.ToScore(_patterns.Select(p => o.SelectToken(p) != null));
 69            }
 070            catch (Exception)
 071            {
 072                return MatchScores.Mismatch;
 73            }
 374        }
 75
 76        /// <inheritdoc cref="IStringMatcher.GetPatterns"/>
 77        public string[] GetPatterns()
 178        {
 179            return _patterns;
 180        }
 81
 82        /// <inheritdoc cref="IMatcher.GetName"/>
 83        public string GetName()
 184        {
 185            return "JsonPathMatcher";
 186        }
 87    }
 88}