CultureDetector
CultureDetector is a helper class used by NUnit to determine
whether a test should be run based on the current culture.
using System.Globalization;
namespace NUnit.Framework.Internal
{
public class CultureDetector
{
private CultureInfo currentCulture;
private string reason = string.Empty;
public string Reason => reason;
public CultureDetector()
{
currentCulture = CultureInfo.CurrentCulture;
}
public CultureDetector(string culture)
{
currentCulture = new CultureInfo(culture);
}
public bool IsCultureSupported(string[] cultures)
{
foreach (string culture in cultures) {
if (IsCultureSupported(culture))
return true;
}
return false;
}
public bool IsCultureSupported(CultureAttribute cultureAttribute)
{
string include = cultureAttribute.Include;
string exclude = cultureAttribute.Exclude;
if (include != null && !IsCultureSupported(include)) {
reason = $"""{include}";
return false;
}
if (exclude != null && IsCultureSupported(exclude)) {
reason = $"""{exclude}";
return false;
}
return true;
}
public bool IsCultureSupported(string culture)
{
culture = culture.Trim();
if (culture.IndexOf(',') >= 0) {
if (IsCultureSupported(culture.Split(new char[1] {
','
})))
return true;
} else if (currentCulture.Name == culture || currentCulture.TwoLetterISOLanguageName == culture) {
return true;
}
reason = "Only supported under culture " + culture;
return false;
}
}
}