private string TestCompareInternal(int result, string v1, string v2, StringComparisonEx comparisonType, bool?nullIsLower, Func <string, bool> isNull) { if (nullIsLower.HasValue) { return(TestCompareInternal1(nullIsLowerValue: nullIsLower.Value)); } else { return(TestCompareInternal1(nullIsLowerValue: false) ?? TestCompareInternal1(nullIsLowerValue: true)); } string TestCompareInternal1(bool nullIsLowerValue) { if (result != Math.Sign(StringComparerEx.Compare(v1: v1, v2: v2, comparisonType: comparisonType, nullIsLower: nullIsLowerValue, isNull: isNull))) { v1 = (v1 is null) ? "null" : $@"""{v1}"""; v2 = (v2 is null) ? "null" : $@"""{v2}"""; return($@"{nameof(StringComparerEx)}.{nameof(StringComparerEx.Compare)}({nameof(v1)}: {v1}, {nameof(v2)}: {v2}, {nameof(comparisonType)}: {Enum.GetName(typeof(StringComparisonEx), comparisonType)}, {nameof(nullIsLower)}: {(nullIsLowerValue ? "true" : "false")}) != {result}"); } if (result != -Math.Sign(StringComparerEx.Compare(v1: v2, v2: v1, comparisonType: comparisonType, nullIsLower: nullIsLowerValue, isNull: isNull))) { v1 = (v1 is null) ? "null" : $@"""{v1}"""; v2 = (v2 is null) ? "null" : $@"""{v2}"""; return($@"{nameof(StringComparerEx)}.{nameof(StringComparerEx.Compare)}({nameof(v1)}: {v2}, {nameof(v2)}: {v1}, {nameof(comparisonType)}: {Enum.GetName(typeof(StringComparisonEx), comparisonType)}, {nameof(nullIsLower)}: {(nullIsLowerValue ? "true" : "false")}) != {result}"); } return(null); } }
public void StringComparerEx_DifferentStringAreDifferent() { string a = "acoutur", b = "ëcöutêr"; var stringComparer = new StringComparerEx(CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace); bool result = stringComparer.Equals(a, b); Assert.IsFalse(result); }
public void StringComparerEx_AccentedStringAreEqual3() { string a = "écoûtèr", b = "ecouter"; var stringComparer = new StringComparerEx(CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace); bool result = stringComparer.Equals(a, b); Assert.IsTrue(result); }