public void GetConfigValue_ConfigurationExtensions_ShouldBeOk(StringComparison stringComparison, string cultureName = "nb-NO")
        {
            var current = CultureInfo.CurrentCulture;
            var currentIgnoreCaseStringComparison = StringExtensions.CurrentIgnoreCaseStringComparison;

            try
            {
                CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo(cultureName ?? "nb-NO");
                StringExtensions.CurrentIgnoreCaseStringComparison = stringComparison;

                var config = new ConfigurationBuilder()
                             .AddInMemoryCollection(new Dictionary <string, string>(StringComparer.FromComparison(stringComparison))
                {
                    { "database:paramKey", "val_" }
                })
                             .AddInMemoryCollection(new Dictionary <string, string>(StringComparer.FromComparison(stringComparison))
                {
                    { "Database:ParamKey", "val__" }
                })
                             .AddInMemoryCollection(new Dictionary <string, string>(StringComparer.FromComparison(stringComparison))
                {
                    { "DATABASE:PARAMKEY", "val" }
                })
                             .Build();

                config.GetConfigValue("database:paramKey").Should().Be("val");
            }
            finally
            {
                CultureInfo.CurrentCulture = current;
                StringExtensions.CurrentIgnoreCaseStringComparison = currentIgnoreCaseStringComparison;
            }
        }
Esempio n. 2
0
        public static void FromComparisonInvalidTest()
        {
            StringComparison minInvalid = Enum.GetValues(typeof(StringComparison)).Cast <StringComparison>().Min() - 1;
            StringComparison maxInvalid = Enum.GetValues(typeof(StringComparison)).Cast <StringComparison>().Max() + 1;

            AssertExtensions.Throws <ArgumentException>("comparisonType", () => StringComparer.FromComparison(minInvalid));
            AssertExtensions.Throws <ArgumentException>("comparisonType", () => StringComparer.FromComparison(maxInvalid));
        }
Esempio n. 3
0
        public int CompareTo(Utf8Span other, StringComparison comparison)
        {
            // TODO_UTF8STRING: We can avoid the virtual dispatch by moving the switch into this method.

            // TODO_UTF8STRING: To avoid allocations, use Utf8StringComparer instead of StringComparer once it's submitted.

            return(StringComparer.FromComparison(comparison).Compare(this.ToString(), other.ToString()));
        }
Esempio n. 4
0
        public static void GetHashCode_StringComparison(StringComparison comparisonType)
        {
            int hashCodeFromStringComparer          = StringComparer.FromComparison(comparisonType).GetHashCode("abc");
            int hashCodeFromStringGetHashCode       = "abc".GetHashCode(comparisonType);
            int hashCodeFromStringGetHashCodeOfSpan = string.GetHashCode("abc".AsSpan(), comparisonType);

            Assert.Equal(hashCodeFromStringComparer, hashCodeFromStringGetHashCode);
            Assert.Equal(hashCodeFromStringComparer, hashCodeFromStringGetHashCodeOfSpan);
        }
 protected TextMatchingApprovalAnalyzer(
     IEnumerable <string> approvalStateOptions,
     IEnumerable <string> noApprovalStateOptions,
     IEnumerable <string> approvalTextFragments,
     StringComparison comparison)
 {
     _comparison     = comparison;
     _approvalStates = approvalStateOptions?.ToHashSet(StringComparer.FromComparison(_comparison))
                       ?? throw new ArgumentNullException(nameof(approvalStateOptions));
     _nonApprovalStates = noApprovalStateOptions?.ToHashSet(StringComparer.FromComparison(_comparison))
                          ?? throw new ArgumentNullException(nameof(noApprovalStateOptions));
     _approvalTextFragments = approvalTextFragments?.ToHashSet(StringComparer.FromComparison(_comparison))
                              ?? throw new ArgumentNullException(nameof(approvalTextFragments));
 }
Esempio n. 6
0
        public WordList(
            IEnumerable <string>?values,
            IEnumerable <WordSequence>?sequences,
            StringComparison?comparison = null)
        {
            Comparer   = StringComparer.FromComparison(comparison ?? DefaultComparison);
            Comparison = comparison ?? DefaultComparison;

            Values = values?.ToImmutableHashSet(Comparer) ?? ImmutableHashSet <string> .Empty;

            Sequences = sequences?
                        .GroupBy(f => f.First, Comparer)
                        .ToImmutableDictionary(f => f.Key, f => f.ToImmutableArray(), Comparer)
                        ?? ImmutableDictionary <string, ImmutableArray <WordSequence> > .Empty;
        }
Esempio n. 7
0
        public void Setup()
        {
            if (Comparison == (StringComparison)(-1))
            {
                _dict = new Dictionary <string, object>();
                _set  = new HashSet <string>();
            }
            else
            {
                _dict = new Dictionary <string, object>(StringComparer.FromComparison(Comparison));
                _set  = new HashSet <string>(StringComparer.FromComparison(Comparison));
            }

            _dict["Some-Sample-Key"] = null;
            _set.Add("Some-Sample-Key");
        }
Esempio n. 8
0
        public static int IndexOf(this List <string> text, List <string> pattern, StringComparison comparisonType)
        {
            if (text.Count < pattern.Count)
            {
                return(-1);
            }

            for (int i = 0; i < text.Count - pattern.Count + 1; i++)
            {
                if (text.Skip(i).Take(pattern.Count).SequenceEqual(pattern, StringComparer.FromComparison(comparisonType)))
                {
                    return(i);
                }
            }

            return(-1);
        }
Esempio n. 9
0
        public AssemblyResourceProvider(
            Assembly assembly,
            string?rootNamespace,
            StringComparison comparisonType = StringComparison.Ordinal)
        {
            Assembly      = assembly ?? throw new ArgumentNullException(nameof(assembly));
            RootNamespace = rootNamespace ?? "";
            RootNamespace = RootNamespace.TrimEnd('.');

            _resources = new Dictionary <string, string>(StringComparer.FromComparison(comparisonType));

            foreach (var name in Assembly.GetManifestResourceNames())
            {
                if (name.StartsWith(RootNamespace, comparisonType))
                {
                    int extraCutoff =
                        name.Length > RootNamespace.Length && name[RootNamespace.Length] == '.' ? 1 : 0;

                    string subName         = name[(RootNamespace.Length + extraCutoff)..];
        public void AccessTest(StringComparison?comparison)
        {
            const int             count = 100_000;
            StringComparer        sc    = null;
            StringSegmentComparer ssc   = null;

            if (comparison != null)
            {
#if NETFRAMEWORK || NETSTANDARD2_0
                sc = comparison.Value switch
                {
                    StringComparison.Ordinal => StringComparer.Ordinal,
                    StringComparison.OrdinalIgnoreCase => StringComparer.OrdinalIgnoreCase,
                    StringComparison.InvariantCulture => StringComparer.InvariantCulture,
                    StringComparison.InvariantCultureIgnoreCase => StringComparer.InvariantCultureIgnoreCase,
                    _ => throw new ArgumentOutOfRangeException(nameof(comparison))
                };
#else
                sc = StringComparer.FromComparison(comparison.Value);
#endif
                ssc = StringSegmentComparer.FromComparison(comparison.Value);
            }

            Dictionary <string, int> dictionary = Enumerable.Range(0, count).ToDictionary(i => i.ToString(CultureInfo.InvariantCulture), sc);
            var strDict = new StringKeyedDictionary <int>(dictionary, ssc);

            new IteratorPerformanceTest <int> {
                TestName = "Indexer access test", Iterations = count
            }
            .AddCase(i => dictionary[i.ToString(CultureInfo.InvariantCulture)], "Dictionary read")
            .AddCase(i => strDict[i.ToString(CultureInfo.InvariantCulture)], "StringKeyedDictionary read (string)")
            .AddCase(i => strDict[i.ToString(CultureInfo.InvariantCulture).AsSegment()], "StringKeyedDictionary read (StringSegment)")
#if !(NETFRAMEWORK || NETSTANDARD2_0 || NETCOREAPP2_0)
            .AddCase(i => strDict[i.ToString(CultureInfo.InvariantCulture).AsSpan()], "StringKeyedDictionary read (ReadOnlySpan<char>)")
#endif
            .DoTest()
            .DumpResults(Console.Out);
        }
Esempio n. 11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LineEndingInvariantStringComparer"/> class.
 /// </summary>
 /// <param name="comparison">The string comparison method.</param>
 public LineEndingInvariantStringComparer(StringComparison comparison)
 {
     _comparer = StringComparer.FromComparison(comparison);
 }
Esempio n. 12
0
 public static void FromComparisonTest(StringComparison comparison, StringComparer comparer)
 {
     Assert.Equal(comparer, StringComparer.FromComparison(comparison));
 }
Esempio n. 13
0
 public static StringComparer ToStringComparer(this StringComparison @this)
 => StringComparer.FromComparison(@this);
Esempio n. 14
0
 public static void GetHashCode_StringComparison(StringComparison comparisonType)
 {
     Assert.Equal(StringComparer.FromComparison(comparisonType).GetHashCode("abc"), "abc".GetHashCode(comparisonType));
 }
Esempio n. 15
0
 /// <summary>
 /// Creates a new instance of <see cref="ModuleCache" />
 /// </summary>
 public ModuleCache(IOptions <MariCommandsOptions> config)
 {
     _config   = config.Value;
     _commands = new ConcurrentDictionary <string, List <ICommand> >(StringComparer.FromComparison(_config.Comparison));
 }
 private StringSegmentComparer(StringComparison comparison)
 {
     _comparison = comparison;
     _comparer   = StringComparer.FromComparison(comparison);
 }
Esempio n. 17
0
 public ArgumentManager(StringComparison nameComparison, params string[] stringArgs)
 {
     this.stringArgs = string.Join(' ', stringArgs);
     arguments       = new Dictionary <string, List <Argument> >(StringComparer.FromComparison(this.nameComparison = nameComparison));
     ReadArguments();
 }