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]);