Exemple #1
0
        public static int Compare(JValue left, JValue right)
        {
            var leftType  = left.typeCode;
            var rightType = right.typeCode;

            if (leftType == rightType)
            {
                switch (leftType)
                {
                case TypeCode.Null:
                    return(0);

                case TypeCode.Boolean:
                    return(left.ToBooleanCore().CompareTo(right.ToBooleanCore()));

                case TypeCode.Number:
                    return(JNumber.Compare(left.ToNumberCore(JNumber.NaN), right.ToNumberCore(JNumber.NaN)));

                case TypeCode.String:
                    return(SequenceCompare <char, CharEnumerator>(left.GetCharEnumerator(), right.GetCharEnumerator(), (x, y) => x.CompareTo(y)));

                case TypeCode.Array:
                    return(SequenceCompare(left.GetArrayItems(), right.GetArrayItems(), Compare));

                case TypeCode.Object:
                    return(SequenceCompare(left.GetObjectKeyValues().GetEnumerator(), right.GetObjectKeyValues(), CompareMember));

                default:
                    return(0);
                }
            }

            return(((int)leftType).CompareTo((int)rightType));
        }
Exemple #2
0
 public void TwoNumber_Are_Equal_But_NotEquivalent(string left, string right)
 {
     Assert.IsTrue(
         JNumber.Equals(JNumber.Parse(left), JNumber.Parse(right)) &&
         JNumber.Compare(JNumber.Parse(left), JNumber.Parse(right)) != 0);
 }
Exemple #3
0
 public void Compare(string less, string greater)
 {
     Assert.IsTrue(JNumber.Compare(JNumber.Parse(less), JNumber.Parse(greater)) < 0);
     Assert.IsTrue(JNumber.Compare(JNumber.Parse(greater), JNumber.Parse(less)) > 0);
 }