blob: cc1979a9200cd6653318fe580dfc3c47db897140 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package scala.collection
package mutable
import org.junit.Assert._
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@RunWith(classOf[JUnit4])
class HashMapTest {
@Test
def getOrElseUpdate_mutationInCallback() {
val hm = new mutable.HashMap[String, String]()
// add enough elements to resize the hash table in the callback
def add() = 1 to 100000 foreach (i => hm(i.toString) = "callback")
hm.getOrElseUpdate("0", {
add()
""
})
assertEquals(Some(""), hm.get("0"))
}
@Test
def getOrElseUpdate_evalOnce(): Unit = {
var i = 0
val hm = new mutable.HashMap[Int, Int]()
hm.getOrElseUpdate(0, {i += 1; i})
assertEquals(1, hm(0))
}
@Test
def getOrElseUpdate_noEval(): Unit = {
val hm = new mutable.HashMap[Int, Int]()
hm.put(0, 0)
hm.getOrElseUpdate(0, throw new AssertionError())
}
}
|