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 }