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)); }
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); }
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); }