1 package leakcanary
2 
3 import leakcanary.GcTrigger.Default.runGc
4 import org.assertj.core.api.Assertions.assertThat
5 import org.junit.Test
6 import java.util.concurrent.Executor
7 
8 class ObjectWatcherTest {
9 
<lambda>null10   private val checkRetainedExecutor = Executor {
11     it.run()
12   }
13 
<lambda>null14   private val objectWatcher = ObjectWatcher({ time }, checkRetainedExecutor)
15   var time: Long = 0
16 
17   var ref: Any? = Any()
18 
unreachable object not retainednull19   @Test fun `unreachable object not retained`() {
20     objectWatcher.expectWeaklyReachable(ref!!, "unreachable object not retained")
21     ref = null
22     runGc()
23     assertThat(objectWatcher.hasRetainedObjects).isFalse()
24   }
25 
reachable object retainednull26   @Test fun `reachable object retained`() {
27     objectWatcher.expectWeaklyReachable(ref!!, "reachable object retained")
28     runGc()
29     assertThat(objectWatcher.hasRetainedObjects).isTrue()
30   }
31 }