blob: 9b5c20e01a7862b52a07f63a9fb414fc2ffe9d0a (
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
39
40
41
42
|
package scala.collection.mutable
import org.junit.Test
import org.junit.Assert._
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
/** Tests for [[OpenHashMap]]. */
@RunWith(classOf[JUnit4])
class OpenHashMapTest {
/** Test that an [[OpenHashMap]] correctly maintains its internal `deleted` count. */
@Test
def maintainsDeletedCount {
val m = OpenHashMap.empty[Int, Int]
// Reflect to get the private `deleted` field's value, which should be zero.
/* TODO Doesn't work, due to SI-9306.
import scala.reflect.runtime.{universe => ru}
val mirror = ru.runtimeMirror(m.getClass.getClassLoader)
val mapType = ru.typeOf[OpenHashMap[Int, Int]]
val termSym = mapType.decls
.filterNot { s => s.isMethod }
.filter { s => s.fullName.endsWith("deleted") }
.head.asTerm
val fieldMirror = mirror.reflect(m).reflectField(termSym)
*/
// Use Java reflection instead for now.
val field = m.getClass.getDeclaredField("deleted")
field.setAccessible(true)
m.put(0, 0)
m.remove(0)
assertEquals(1, field.getInt(m))
m.put(0, 0) // Add an entry with the same key
// TODO assertEquals(0, fieldMirror.get.asInstanceOf[Int])
assertEquals(0, field.getInt(m))
}
}
|