diff options
author | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-06-27 16:19:19 -0700 |
---|---|---|
committer | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-06-27 16:19:19 -0700 |
commit | ebd1955ae6b1d16d76da82153cc6957e71532916 (patch) | |
tree | 3e5e98f07a448ede8348916565492b35d3a7caaa /test/files/run | |
parent | b676b76d08d7f65767bcbd70d74c1df2af0f4a32 (diff) | |
parent | 788ac7502154ca1329773ec869242df21015f5f3 (diff) | |
download | scala-ebd1955ae6b1d16d76da82153cc6957e71532916.tar.gz scala-ebd1955ae6b1d16d76da82153cc6957e71532916.tar.bz2 scala-ebd1955ae6b1d16d76da82153cc6957e71532916.zip |
Merge pull request #786 from axel22/issue/5986-cherry
Fix SI-5986.
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t5986.check | 15 | ||||
-rw-r--r-- | test/files/run/t5986.scala | 36 |
2 files changed, 51 insertions, 0 deletions
diff --git a/test/files/run/t5986.check b/test/files/run/t5986.check new file mode 100644 index 0000000000..4101770c6d --- /dev/null +++ b/test/files/run/t5986.check @@ -0,0 +1,15 @@ +Foo(bar, 1) +Foo(bar, 1) +Foo(bar, 1),Foo(baz, 3),Foo(bazz, 4) +Foo(bar, 1) +Foo(bar, 1) +Foo(bar, 1),Foo(baz, 3),Foo(bazz, 4) +Foo(bar, 1) +Foo(bar, 1) +Foo(bar, 1),Foo(baz, 3),Foo(bazz, 4) +Foo(bar, 1) +Foo(bar, 1) +Foo(bar, 1),Foo(baz, 3),Foo(bazz, 4) +Foo(bar, 1) +Foo(bar, 1) +Foo(bar, 1),Foo(baz, 3),Foo(bazz, 4)
\ No newline at end of file diff --git a/test/files/run/t5986.scala b/test/files/run/t5986.scala new file mode 100644 index 0000000000..8cf7086f98 --- /dev/null +++ b/test/files/run/t5986.scala @@ -0,0 +1,36 @@ + + + +import scala.collection._ + + + +/** A sorted set should not replace elements when adding + * and the element already exists in the set. + */ +object Test { + + class Foo(val name: String, val n: Int) { + override def equals(obj: Any): Boolean = obj match { case other: Foo => name == other.name; case _ => false } + override def hashCode = name.## + override def toString = "Foo(" + name + ", " + n + ")" + } + + implicit val ordering: Ordering[Foo] = Ordering.fromLessThan[Foo] { (a, b) => a.name.compareTo(b.name) < 0 } + + def check[S <: Set[Foo]](set: S) { + def output(s: Set[Foo]) = println(s.toList.sorted.mkString(",")) + output(set + new Foo("bar", 2)) + output(set ++ List(new Foo("bar", 2), new Foo("bar", 3), new Foo("bar", 4))) + output(set union Set(new Foo("bar", 2), new Foo("baz", 3), new Foo("bazz", 4))) + } + + def main(args: Array[String]) { + check(Set(new Foo("bar", 1))) + check(immutable.Set(new Foo("bar", 1))) + check(mutable.Set(new Foo("bar", 1))) + check(immutable.SortedSet(new Foo("bar", 1))) + check(mutable.SortedSet(new Foo("bar", 1))) + } + +} |