CultureDetector
CultureDetector is a helper class used by NUnit to determine
whether a test should be run based on the current culture.
using System;
using System.Globalization;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Internal
{
[NullableContext(1)]
[Nullable(0)]
public class CultureDetector
{
private readonly 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 = "Only supported under culture " + include;
return false;
}
if (exclude != null && IsCultureSupported(exclude)) {
_reason = "Not supported under culture " + exclude;
return false;
}
return true;
}
public bool IsCultureSupported(string culture)
{
culture = culture.Trim();
if (culture.IndexOf(',') >= 0) {
if (IsCultureSupported(culture.Split(',', StringSplitOptions.None)))
return true;
} else if (_currentCulture.Name == culture || _currentCulture.TwoLetterISOLanguageName == culture) {
return true;
}
_reason = "Only supported under culture " + culture;
return false;
}
}
}