public static void StaticCompareComparer_SomeSome(NonEmptyString leftSome, NonEmptyString rightSome) { var left = Option.From(leftSome.Get); var right = Option.From(rightSome.Get); // note(cosborn) Normalize the return value of `Ordinal.Compare`. int OrdinalCompare(string x, string y) => Ordinal.Compare(x, y).Pipe(Math.Sign); Assert.Equal(OrdinalCompare(leftSome.Get, rightSome.Get), Option.Compare(left, right, Ordinal)); Assert.Equal(OrdinalCompare(rightSome.Get, leftSome.Get), Option.Compare(right, left, Ordinal)); }
/// <summary> /// Compares two string values and returns a value indicating sort order. /// </summary> /// <param name="x">The first value to compare.</param> /// <param name="y">The second value to compare.</param> /// <returns></returns> public override int Compare(string x, string y) { if (!Validate(x)) { throw new ArgumentOutOfRangeException(nameof(x), "The value is not a valid component name."); } if (!Validate(y)) { throw new ArgumentOutOfRangeException(nameof(y), "The value is not a valid component name."); } return(Ordinal.Compare(x, y)); }
public override int Compare(string x, string y) { Split(x, out string xSection, out string xScope, out string xProperty); Split(y, out string ySection, out string yScope, out string yProperty); int cmpSection = OrdinalIgnoreCase.Compare(xSection, ySection); if (cmpSection != 0) { return(cmpSection); } int cmpProperty = OrdinalIgnoreCase.Compare(xProperty, yProperty); if (cmpProperty != 0) { return(cmpProperty); } return(Ordinal.Compare(xScope, yScope)); }
public override int Compare(string x, string y) { bool isXSpecial = SpecialPropertyNames.ContainsKey(x); bool isYSpecial = SpecialPropertyNames.ContainsKey(y); if (isXSpecial && isYSpecial) { return(SpecialPropertyNames[x] - SpecialPropertyNames[y]); } else if (isXSpecial) { return(-1); } else if (isYSpecial) { return(1); } else { return(Ordinal.Compare(x, y)); } }