Correct sort. See #2133

This commit is contained in:
Patrik Nordwall 2012-05-25 12:51:37 +02:00
parent 829783f359
commit 34915063cd
2 changed files with 6 additions and 5 deletions

View file

@ -101,10 +101,10 @@ object Member {
import MemberStatus._
implicit val addressOrdering: Ordering[Address] = Ordering.fromLessThan[Address] { (a, b)
if (a.protocol < b.protocol) true
else if (a.system < b.system) true
else if (a.host.getOrElse("") < b.host.getOrElse("")) true
else if (a.port.getOrElse(0) < b.port.getOrElse(0)) true
if (a.protocol != b.protocol) a.protocol.compareTo(b.protocol) < 0
else if (a.system != b.system) a.system.compareTo(b.system) < 0
else if (a.host.getOrElse("") != b.host.getOrElse("")) a.host.getOrElse("").compareTo(b.host.getOrElse("")) < 0
else if (a.port.getOrElse(0) != b.port.getOrElse(0)) a.port.getOrElse(0) < b.port.getOrElse(0)
else false
}

View file

@ -21,8 +21,9 @@ class MemberSpec extends WordSpec with MustMatchers {
val m3 = Member(Address("cluster", "sys1", "host1", 10000), MemberStatus.Up)
val m4 = Member(Address("cluster", "sys1", "host2", 10000), MemberStatus.Up)
val m5 = Member(Address("cluster", "sys2", "host2", 10000), MemberStatus.Up)
val m6 = Member(Address("cluster", "sys2", "host3", 8000), MemberStatus.Up)
val expected = IndexedSeq(m1, m2, m3, m4, m5)
val expected = IndexedSeq(m1, m2, m3, m4, m5, m6)
val shuffled = Random.shuffle(expected)
shuffled.sorted must be(expected)
}