public void TestCompareSimple() { IComparer <object> comparer = NumberComparator.getComparator(); var result = comparer.Compare(1, 2); Assert.Equal(1, result); }
// @SuppressWarnings("unchecked") public int compare(object o1, object o2) { logger.debug("compare({},{})", o1, o2); if (o1 == null && o2 == null) { return(0); } if (o1 == null) { return(-1); } if (o2 == null) { return(1); } if (o1 is CsNumber && o1 is CsNumber) { return(NumberComparator.getComparator().Compare(o1, o2)); } if (TimeComparator.isTimeBased(o1) && TimeComparator.isTimeBased(o2)) { return(TimeComparator.getComparator().Compare(o1, o2)); } if (BooleanComparator.isBoolean(o1) && BooleanComparator.isBoolean(o2)) { return(BooleanComparator.getComparator().Compare(o1, o2)); } if (o1 is IComparable && o2 is IComparable) { //@SuppressWarnings("rawtypes") IComparable c1 = (IComparable)o1; //@SuppressWarnings("rawtypes") IComparable c2 = (IComparable)o2; // We can only count on using the comparable interface if o1 and o2 // are within of the same class or if one is a subclass of the other if (c1.GetType().IsAssignableFrom(c2.GetType())) { return(c1.CompareTo(o2)); } if (o2.GetType().IsAssignableFrom(c1.GetType())) { return(-1 * c2.CompareTo(o1)); } } logger.debug("Using ToStringComparator because no apparent better comparison method could be found"); return(ToStringComparator.getComparator().Compare(o1, o2)); } // compare()