summaryrefslogtreecommitdiff
path: root/test/junit/scala/collection/mutable
diff options
context:
space:
mode:
Diffstat (limited to 'test/junit/scala/collection/mutable')
-rw-r--r--test/junit/scala/collection/mutable/BitSetTest.scala9
-rw-r--r--test/junit/scala/collection/mutable/LinkedHashMapTest.scala25
-rw-r--r--test/junit/scala/collection/mutable/LinkedHashSetTest.scala25
-rw-r--r--test/junit/scala/collection/mutable/MutableListTest.scala37
4 files changed, 96 insertions, 0 deletions
diff --git a/test/junit/scala/collection/mutable/BitSetTest.scala b/test/junit/scala/collection/mutable/BitSetTest.scala
index 8d164b50d4..d56cc45601 100644
--- a/test/junit/scala/collection/mutable/BitSetTest.scala
+++ b/test/junit/scala/collection/mutable/BitSetTest.scala
@@ -19,4 +19,13 @@ class BitSetTest {
bitSet &~= bitSet
assert(bitSet.toBitMask.length == size, "Capacity of bitset changed after &~=")
}
+
+ @Test def test_SI8917() {
+ val bigBitSet = BitSet(1, 100, 10000)
+ val littleBitSet = BitSet(100)
+ bigBitSet &= littleBitSet
+ assert(!(bigBitSet contains 10000), "&= not applied to the full bitset")
+ littleBitSet &= bigBitSet
+ assert(littleBitSet.toBitMask.length < bigBitSet.toBitMask.length, "Needlessly extended the size of bitset on &=")
+ }
}
diff --git a/test/junit/scala/collection/mutable/LinkedHashMapTest.scala b/test/junit/scala/collection/mutable/LinkedHashMapTest.scala
new file mode 100644
index 0000000000..37dcd028a5
--- /dev/null
+++ b/test/junit/scala/collection/mutable/LinkedHashMapTest.scala
@@ -0,0 +1,25 @@
+package scala.collection.mutable
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.{ Assert, Test }
+
+import scala.collection.mutable
+
+/* Test for SI-9095 */
+@RunWith(classOf[JUnit4])
+class LinkedHashMapTest {
+ class TestClass extends mutable.LinkedHashMap[String, Int] {
+ def lastItemRef = lastEntry
+ }
+
+ @Test
+ def testClear: Unit = {
+ val lhm = new TestClass
+ Seq("a" -> 8, "b" -> 9).foreach(kv => lhm.put(kv._1, kv._2))
+
+ Assert.assertNotNull(lhm.lastItemRef)
+ lhm.clear()
+ Assert.assertNull(lhm.lastItemRef)
+ }
+}
diff --git a/test/junit/scala/collection/mutable/LinkedHashSetTest.scala b/test/junit/scala/collection/mutable/LinkedHashSetTest.scala
new file mode 100644
index 0000000000..b419ad37ec
--- /dev/null
+++ b/test/junit/scala/collection/mutable/LinkedHashSetTest.scala
@@ -0,0 +1,25 @@
+package scala.collection.mutable
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.{ Assert, Test }
+
+import scala.collection.mutable
+
+/* Test for SI-9095 */
+@RunWith(classOf[JUnit4])
+class LinkedHashSetTest {
+ class TestClass extends mutable.LinkedHashSet[String] {
+ def lastItemRef = lastEntry
+ }
+
+ @Test
+ def testClear: Unit = {
+ val lhs = new TestClass
+ Seq("a", "b").foreach(k => lhs.add(k))
+
+ Assert.assertNotNull(lhs.lastItemRef)
+ lhs.clear()
+ Assert.assertNull(lhs.lastItemRef)
+ }
+}
diff --git a/test/junit/scala/collection/mutable/MutableListTest.scala b/test/junit/scala/collection/mutable/MutableListTest.scala
new file mode 100644
index 0000000000..ac6d30def0
--- /dev/null
+++ b/test/junit/scala/collection/mutable/MutableListTest.scala
@@ -0,0 +1,37 @@
+package scala.collection.mutable
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.Test
+import org.junit.Assert._
+
+import scala.tools.testing.AssertUtil._
+
+@RunWith(classOf[JUnit4])
+class MutableListTest {
+
+ // Tests SI-8976
+ @Test def tailIteratorMustTerminateAtLength(): Unit = {
+ val is = MutableList(1,2,3)
+ val tl = is.tail
+ assertEquals(tl.length, tl.iterator.length)
+ is += 5
+ assertEquals(tl.length, tl.iterator.length)
+ assertSameElements(tl, tl.iterator)
+ }
+ @Test def iteratorMustFailEventually(): Unit = assertThrows[NoSuchElementException] {
+ MutableList[Unit]().iterator.next()
+ }
+ // was: Root empty iterator held reference
+ @Test def iteratorMustNotHoldOntoLast(): Unit = {
+ val is = MutableList(Some(1), Some(2))
+ val it = is.iterator
+ val x = Some(3)
+ is += x
+ assertNotReachable(x, it) {
+ it.next()
+ it.next()
+ }
+ assertTrue(it.isEmpty)
+ }
+}