示例#1
0
        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()