using System;
using System.Linq;
using AnyOfTypes;
using WireMock.Models;
namespace WireMock.Matchers;
///
/// NotNullOrEmptyMatcher
///
///
public class NotNullOrEmptyMatcher : IObjectMatcher, IStringMatcher
{
///
public string Name => "NotNullOrEmptyMatcher";
///
public MatchBehaviour MatchBehaviour { get; }
///
public bool ThrowException { get; }
///
/// Initializes a new instance of the class.
///
/// The match behaviour.
public NotNullOrEmptyMatcher(MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
{
MatchBehaviour = matchBehaviour;
}
///
public double IsMatch(object? input)
{
bool match;
switch (input)
{
case string @string:
match = !string.IsNullOrEmpty(@string);
break;
case byte[] bytes:
match = bytes.Any();
break;
default:
match = input != null;
break;
}
return MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(match));
}
///
public double IsMatch(string? input)
{
var match = !string.IsNullOrEmpty(input);
return MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(match));
}
///
public AnyOf[] GetPatterns()
{
return EmptyArray>.Value;
}
///
public MatchOperator MatchOperator { get; } = MatchOperator.Or;
}