示例#1
0
        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));
 }
示例#3
0
        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));
            }
        }