diff --git a/src/WireMock.Net.Minimal/Matchers/FuncMatcher.cs b/src/WireMock.Net.Minimal/Matchers/FuncMatcher.cs index cbaafc2b..6884f542 100644 --- a/src/WireMock.Net.Minimal/Matchers/FuncMatcher.cs +++ b/src/WireMock.Net.Minimal/Matchers/FuncMatcher.cs @@ -21,16 +21,8 @@ public class FuncMatcher : IFuncMatcher /// Initializes a new instance of the class for string matching. /// /// The function to check if a string is a match. - public FuncMatcher(Func func) : this(MatchBehaviour.AcceptOnMatch, func) - { - } - - /// - /// Initializes a new instance of the class for string matching. - /// /// The match behaviour. - /// The function to check if a string is a match. - public FuncMatcher(MatchBehaviour matchBehaviour, Func func) + public FuncMatcher(Func func, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { _stringFunc = Guard.NotNull(func); MatchBehaviour = matchBehaviour; @@ -40,16 +32,8 @@ public class FuncMatcher : IFuncMatcher /// Initializes a new instance of the class for byte array matching. /// /// The function to check if a byte[] is a match. - public FuncMatcher(Func func) : this(MatchBehaviour.AcceptOnMatch, func) - { - } - - /// - /// Initializes a new instance of the class for byte array matching. - /// /// The match behaviour. - /// The function to check if a byte[] is a match. - public FuncMatcher(MatchBehaviour matchBehaviour, Func func) + public FuncMatcher(Func func, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { _bytesFunc = Guard.NotNull(func); MatchBehaviour = matchBehaviour; @@ -62,7 +46,7 @@ public class FuncMatcher : IFuncMatcher { try { - return CreateMatchResult(_stringFunc(stringValue)); + return MatchResult.From(Name, MatchBehaviour, _stringFunc(stringValue)); } catch (Exception ex) { @@ -74,7 +58,7 @@ public class FuncMatcher : IFuncMatcher { try { - return CreateMatchResult(_bytesFunc(bytesValue)); + return MatchResult.From(Name, MatchBehaviour, _bytesFunc(bytesValue)); } catch (Exception ex) { @@ -85,11 +69,6 @@ public class FuncMatcher : IFuncMatcher return MatchResult.From(Name, MatchScores.Mismatch); } - private MatchResult CreateMatchResult(bool isMatch) - { - return MatchResult.From(Name, MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(isMatch))); - } - /// public string Name => nameof(FuncMatcher); @@ -99,8 +78,8 @@ public class FuncMatcher : IFuncMatcher var funcType = _stringFunc != null ? "Func" : "Func"; return $"new {Name}" + $"(" + - $"{MatchBehaviour.GetFullyQualifiedEnumValue()}, " + - $"/* {funcType} function */" + + $"/* {funcType} function */, " + + $"{MatchBehaviour.GetFullyQualifiedEnumValue()}" + $")"; } } diff --git a/src/WireMock.Net.Shared/Matchers/MatchResult.cs b/src/WireMock.Net.Shared/Matchers/MatchResult.cs index f9bff87e..f6d8383a 100644 --- a/src/WireMock.Net.Shared/Matchers/MatchResult.cs +++ b/src/WireMock.Net.Shared/Matchers/MatchResult.cs @@ -1,8 +1,5 @@ // Copyright © WireMock.Net -using System; -using System.Collections.Generic; -using System.Linq; using Stef.Validation; using WireMock.Extensions; using WireMock.Matchers.Request; @@ -40,6 +37,18 @@ public class MatchResult /// public bool IsPerfect() => MatchScores.IsPerfect(Score); + /// + /// Create a MatchResult. + /// + /// The name or description of the matcher. + /// The match behaviour. + /// Is this a match? + /// The exception in case the matching fails. [Optional] + public static MatchResult From(string name, MatchBehaviour matchBehaviour, bool isMatch, Exception? exception = null) + { + return From(name, MatchBehaviourHelper.Convert(matchBehaviour, MatchScores.ToScore(isMatch)), exception); + } + /// /// Create a MatchResult. /// diff --git a/src/WireMock.Net.Shared/WebSockets/IWebSocketContext.cs b/src/WireMock.Net.Shared/WebSockets/IWebSocketContext.cs index ca029b2c..5942b421 100644 --- a/src/WireMock.Net.Shared/WebSockets/IWebSocketContext.cs +++ b/src/WireMock.Net.Shared/WebSockets/IWebSocketContext.cs @@ -79,4 +79,4 @@ public interface IWebSocketContext /// Broadcast JSON message to all connections in this mapping /// Task BroadcastJsonAsync(object data, CancellationToken cancellationToken = default); -} +} \ No newline at end of file diff --git a/src/WireMock.Net.Shared/WebSockets/WebSocketMessage.cs b/src/WireMock.Net.Shared/WebSockets/WebSocketMessage.cs index a4d29ece..5af1c0d7 100644 --- a/src/WireMock.Net.Shared/WebSockets/WebSocketMessage.cs +++ b/src/WireMock.Net.Shared/WebSockets/WebSocketMessage.cs @@ -33,4 +33,4 @@ public class WebSocketMessage /// Timestamp when the message was received /// public DateTime Timestamp { get; set; } -} +} \ No newline at end of file diff --git a/test/WireMock.Net.Tests/Matchers/FuncMatcherTests.cs b/test/WireMock.Net.Tests/Matchers/FuncMatcherTests.cs index 68ad592f..bed6637a 100644 --- a/test/WireMock.Net.Tests/Matchers/FuncMatcherTests.cs +++ b/test/WireMock.Net.Tests/Matchers/FuncMatcherTests.cs @@ -1,9 +1,7 @@ // Copyright © WireMock.Net -using System; using FluentAssertions; using WireMock.Matchers; -using Xunit; namespace WireMock.Net.Tests.Matchers; @@ -232,7 +230,7 @@ public class FuncMatcherTests { // Arrange Func func = s => s == "test"; - var matcher = new FuncMatcher(MatchBehaviour.RejectOnMatch, func); + var matcher = new FuncMatcher(func, MatchBehaviour.RejectOnMatch); // Act & Assert matcher.MatchBehaviour.Should().Be(MatchBehaviour.RejectOnMatch); @@ -243,7 +241,7 @@ public class FuncMatcherTests { // Arrange Func func = b => b != null; - var matcher = new FuncMatcher(MatchBehaviour.RejectOnMatch, func); + var matcher = new FuncMatcher(func, MatchBehaviour.RejectOnMatch); // Act & Assert matcher.MatchBehaviour.Should().Be(MatchBehaviour.RejectOnMatch); @@ -260,9 +258,7 @@ public class FuncMatcherTests var code = matcher.GetCSharpCodeArguments(); // Assert - code.Should().Contain("FuncMatcher"); - code.Should().Contain("Func"); - code.Should().Contain("AcceptOnMatch"); + code.Should().Be("new FuncMatcher(/* Func function */, WireMock.Matchers.MatchBehaviour.AcceptOnMatch)"); } [Fact] @@ -276,9 +272,7 @@ public class FuncMatcherTests var code = matcher.GetCSharpCodeArguments(); // Assert - code.Should().Contain("FuncMatcher"); - code.Should().Contain("Func"); - code.Should().Contain("AcceptOnMatch"); + code.Should().Be("new FuncMatcher(/* Func function */, WireMock.Matchers.MatchBehaviour.AcceptOnMatch)"); } [Fact] @@ -286,7 +280,7 @@ public class FuncMatcherTests { // Arrange Func func = s => s == "test"; - var matcher = new FuncMatcher(MatchBehaviour.RejectOnMatch, func); + var matcher = new FuncMatcher(func, MatchBehaviour.RejectOnMatch); // Act var result = matcher.IsMatch("test"); @@ -300,7 +294,7 @@ public class FuncMatcherTests { // Arrange Func func = s => s == "test"; - var matcher = new FuncMatcher(MatchBehaviour.RejectOnMatch, func); + var matcher = new FuncMatcher(func, MatchBehaviour.RejectOnMatch); // Act var result = matcher.IsMatch("other"); @@ -314,7 +308,7 @@ public class FuncMatcherTests { // Arrange Func func = b => b != null && b.Length > 0; - var matcher = new FuncMatcher(MatchBehaviour.RejectOnMatch, func); + var matcher = new FuncMatcher(func, MatchBehaviour.RejectOnMatch); // Act var result = matcher.IsMatch(new byte[] { 1, 2, 3 }); @@ -328,7 +322,7 @@ public class FuncMatcherTests { // Arrange Func func = b => b != null && b.Length > 0; - var matcher = new FuncMatcher(MatchBehaviour.RejectOnMatch, func); + var matcher = new FuncMatcher(func, MatchBehaviour.RejectOnMatch); // Act var result = matcher.IsMatch(new byte[0]);