diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-12-10 12:23:12 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2012-12-10 12:23:12 -0800 |
commit | 0d548de547d49c3c038728b8af2d1b1dbd697918 (patch) | |
tree | 93f150c8f3f9cbce12b1b2c53fd58ba43f06d08a /test/files/run | |
parent | 3b2a4ac04b8d3879d1545849680f718599288677 (diff) | |
parent | 48cffd0589ed9a470f351ab9518b02a033c759eb (diff) | |
download | scala-0d548de547d49c3c038728b8af2d1b1dbd697918.tar.gz scala-0d548de547d49c3c038728b8af2d1b1dbd697918.tar.bz2 scala-0d548de547d49c3c038728b8af2d1b1dbd697918.zip |
Merge pull request #1732 from retronym/ticket/6690
SI-6690 Release reference to last dequeued element.
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t6690.scala | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/files/run/t6690.scala b/test/files/run/t6690.scala new file mode 100644 index 0000000000..43ede967a0 --- /dev/null +++ b/test/files/run/t6690.scala @@ -0,0 +1,62 @@ +import scala.collection.mutable + +object Test extends App { + def last0(ml: mutable.MutableList[Int]) = + ml.asInstanceOf[{def last0: mutable.LinkedList[Int]}].last0 + + def first0(ml: mutable.MutableList[Int]) = + ml.asInstanceOf[{def first0: mutable.LinkedList[Int]}].first0 + + val f = mutable.Queue[Int]() + def check(desc: String) { + assert(f.length == 0, s"$desc: non empty: $f") + assert(last0(f).isEmpty, s"$desc: last0 leak: ${last0(f)}") + assert(first0(f).isEmpty, s"$desc: first0 leak: ${last0(f)}") + } + + f.enqueue(1) + f.dequeue() + check("dequeue 1") + + f.enqueue(1) + f.enqueue(2) + f.dequeue() + assert(last0(f).toList == List(2), last0(f)) + f.dequeue() + check("dequeue 2") + + f.enqueue(1) + f.dequeueAll(_ => false) + f.dequeueAll(_ => true) + check("dequeueAll") + + f.enqueue(1) + f.dequeueFirst(_ => true) + check("dequeueFirst") + + { + f.enqueue(1) + val tail = f.tail + assert(last0(tail).isEmpty, last0(tail)) + assert(first0(tail).isEmpty, first0(tail)) + } + + { + val ml = mutable.MutableList[Int]() + 1 +=: ml + val tail = ml.tail + assert(last0(tail).isEmpty, last0(tail)) + assert(first0(tail).isEmpty, first0(tail)) + } + + { + val ml = mutable.MutableList[Int]() + 1 +=: ml + ml += 2 + val tail = ml.tail + assert(last0(tail).toList == List(2), last0(tail)) + assert(first0(tail) == last0(tail).toList, first0(tail)) + assert(last0(tail.tail).toList == Nil, last0(tail.tail).toList) + assert(first0(tail.tail) == Nil, first0(tail.tail)) + } +} |