RegexConstraint
RegexConstraint can test whether a string matches
the pattern provided.
using NUnit.Framework.Internal;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
namespace NUnit.Framework.Constraints
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public class RegexConstraint : Constraint
{
private Regex _regex;
public override string Description {
get {
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(18, 1);
defaultInterpolatedStringHandler.AppendLiteral("String matching \"");
defaultInterpolatedStringHandler.AppendFormatted(_regex);
defaultInterpolatedStringHandler.AppendLiteral("\"");
string text = defaultInterpolatedStringHandler.ToStringAndClear();
if ((_regex.Options & RegexOptions.IgnoreCase) == RegexOptions.IgnoreCase)
text += ", ignoring case";
return text;
}
}
public RegexConstraint IgnoreCase {
get {
_regex = new Regex(_regex.ToString(), _regex.Options | RegexOptions.IgnoreCase);
return this;
}
}
public RegexConstraint([StringSyntax("Regex")] string pattern)
: base(pattern)
{
_regex = new Regex(pattern);
}
public RegexConstraint(Regex regex)
: base(regex.ToString())
{
_regex = regex;
}
public override ConstraintResult ApplyTo<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual)
{
string input = ConstraintUtils.RequireActual<string>(actual, "actual", false);
return new ConstraintResult(this, actual, _regex.IsMatch(input));
}
}
}