@@ -65,6 +65,17 @@ class OrderSuite extends CatsSuite {
6565 assert((i.pmax(j)) === (PartialOrder .pmax(i, j)))
6666 }
6767 }
68+
69+ test(" Order.fromComparable" ) {
70+ val OrderOfCmp = Order .fromComparable[OrderSuite .Cmp ]
71+ assert(OrderOfCmp .lt(OrderSuite .Cmp (1 ), OrderSuite .Cmp (2 )))
72+ assert(OrderOfCmp .gt(OrderSuite .Cmp (2 ), OrderSuite .Cmp (1 )))
73+ assert(OrderOfCmp .eqv(OrderSuite .Cmp (1 ), OrderSuite .Cmp (1 )))
74+ val OrderOfCmpSub = Order .fromComparable[OrderSuite .CmpSub ]
75+ assert(OrderOfCmpSub .lt(OrderSuite .CmpSub (1 , " ignored" ), OrderSuite .CmpSub (2 , " ignored" )))
76+ assert(OrderOfCmpSub .gt(OrderSuite .CmpSub (2 , " ignored" ), OrderSuite .CmpSub (1 , " ignored" )))
77+ assert(OrderOfCmpSub .eqv(OrderSuite .CmpSub (1 , " a" ), OrderSuite .CmpSub (1 , " b" )))
78+ }
6879}
6980
7081object OrderSuite {
@@ -87,4 +98,15 @@ object OrderSuite {
8798 implicit val ord : Order [C ] = Order .allEqual
8899 Ordering [C ]
89100 }
101+
102+ class Cmp (protected val n : Int ) extends Comparable [Cmp ] {
103+ override def compareTo (o : Cmp ): Int = n.compare(o.n)
104+ }
105+ object Cmp {
106+ def apply (n : Int ): Cmp = new Cmp (n)
107+ }
108+ class CmpSub (override protected val n : Int , private val ignored : String ) extends Cmp (n)
109+ object CmpSub {
110+ def apply (n : Int , ignored : String ): CmpSub = new CmpSub (n, ignored)
111+ }
90112}
0 commit comments