// Copyright © WireMock.Net using System; using System.Linq; using AnyOfTypes; using WireMock.Extensions; using WireMock.Models; using WireMock.Util; namespace WireMock.Matchers; /// /// NotNullOrEmptyMatcher /// /// public class NotNullOrEmptyMatcher : IObjectMatcher, IStringMatcher { /// public string Name => nameof(NotNullOrEmptyMatcher); /// public MatchBehaviour MatchBehaviour { get; } /// public object Value { get; } /// /// Initializes a new instance of the class. /// /// The match behaviour. public NotNullOrEmptyMatcher(MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch) { MatchBehaviour = matchBehaviour; Value = string.Empty; } /// public MatchResult 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 MatchResult IsMatch(string? input) { var match = !string.IsNullOrEmpty(input); return MatchBehaviourHelper.Convert(MatchBehaviour, MatchScores.ToScore(match)); } /// public AnyOf[] GetPatterns() { return EmptyArray>.Value; } /// public MatchOperator MatchOperator => MatchOperator.Or; /// public string GetCSharpCodeArguments() { return $"new {Name}" + $"(" + $"{MatchBehaviour.GetFullyQualifiedEnumValue()}" + $")"; } }