MatchDetails (#47)

This commit is contained in:
Stef Heyenrath
2017-09-18 20:45:30 +02:00
parent 139ea77888
commit 881e4b2af3
11 changed files with 53 additions and 44 deletions

View File

@@ -1,4 +1,6 @@
namespace WireMock.Admin.Requests
using System.Collections.Generic;
namespace WireMock.Admin.Requests
{
/// <summary>
/// LogRequestMatchModel
@@ -36,5 +38,13 @@
/// The match percentage.
/// </value>
public double AverageTotalScore { get; set; }
/// <summary>
/// Gets the match details.
/// </summary>
/// <value>
/// The match details.
/// </value>
public IList<object> MatchDetails { get; set; }
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
namespace WireMock.Matchers.Request
{
@@ -13,7 +14,7 @@ namespace WireMock.Matchers.Request
/// <value>
/// The match-score.
/// </value>
public double TotalScore { get; set; }
public double TotalScore { get; private set; }
/// <summary>
/// Gets or sets the total number of matches.
@@ -21,7 +22,7 @@ namespace WireMock.Matchers.Request
/// <value>
/// The total number of matches.
/// </value>
public int TotalNumber { get; set; }
public int TotalNumber { get; private set; }
/// <summary>
/// Gets or sets a value indicating whether this instance is perfect match.
@@ -39,6 +40,31 @@ namespace WireMock.Matchers.Request
/// </value>
public double AverageTotalScore => TotalNumber == 0 ? 0.0 : TotalScore / TotalNumber;
/// <summary>
/// Gets the match details.
/// </summary>
public IList<KeyValuePair<Type, double>> MatchDetails { get; private set; }
/// <summary>
/// Initializes a new instance of the <see cref="RequestMatchResult"/> class.
/// </summary>
public RequestMatchResult() => MatchDetails = new List<KeyValuePair<Type, double>>();
/// <summary>
/// Adds the score.
/// </summary>
/// <param name="matcherType">The matcher Type.</param>
/// <param name="score">The score.</param>
/// <returns>The score.</returns>
public double AddScore(Type matcherType, double score)
{
TotalScore += score;
TotalNumber++;
MatchDetails.Add(new KeyValuePair<Type, double>(matcherType, score));
return score;
}
/// <summary>
/// Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
/// </summary>

View File

@@ -98,11 +98,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -60,11 +60,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -77,11 +77,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -77,11 +77,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -37,11 +37,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -65,11 +65,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -60,11 +60,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -60,11 +60,7 @@ namespace WireMock.Matchers.Request
public double GetMatchingScore(RequestMessage requestMessage, RequestMatchResult requestMatchResult)
{
double score = IsMatch(requestMessage);
requestMatchResult.TotalScore += score;
requestMatchResult.TotalNumber++;
return score;
return requestMatchResult.AddScore(GetType(), score);
}
private double IsMatch(RequestMessage requestMessage)

View File

@@ -412,7 +412,12 @@ namespace WireMock.Server
TotalScore = logEntry.RequestMatchResult.TotalScore,
TotalNumber = logEntry.RequestMatchResult.TotalNumber,
IsPerfectMatch = logEntry.RequestMatchResult.IsPerfectMatch,
AverageTotalScore = logEntry.RequestMatchResult.AverageTotalScore
AverageTotalScore = logEntry.RequestMatchResult.AverageTotalScore,
MatchDetails = logEntry.RequestMatchResult.MatchDetails.Select(x => new
{
Name = x.Key.Name.Replace("RequestMessage", string.Empty),
Score = x.Value
} as object).ToList()
} : null
};
}