<lambda>null1package leakcanary 2 3 import android.os.Build.VERSION.SDK_INT 4 import org.assertj.core.api.Assertions.assertThat 5 import org.junit.Assume.assumeTrue 6 import org.junit.Rule 7 import org.junit.Test 8 import org.junit.rules.TemporaryFolder 9 import shark.HprofHeapGraph.Companion.openHeapGraph 10 import shark.hexIdentityHashCode 11 12 class AndroidExtensionsTest { 13 14 @get:Rule 15 var testFolder = TemporaryFolder() 16 17 @Test fun identityHashCode() { 18 assumeTrue("SDK_INT is $SDK_INT, shadow\$_monitor_ was introduced in 21", SDK_INT >= 24) 19 20 // leakcanary.AndroidExtensionsTest@c559955 21 val thisToString = toString() 22 23 val heapDumpFile = testFolder.newFile() 24 AndroidDebugHeapDumper.dumpHeap(heapDumpFile) 25 26 val testClassName = this::class.java.name 27 28 val identityHashCodeFromDump = heapDumpFile.openHeapGraph().use { graph -> 29 val testClass = graph.findClassByName(testClassName)!! 30 val testInstance = testClass.instances.single() 31 testInstance.hexIdentityHashCode 32 } 33 34 assertThat("$testClassName@$identityHashCodeFromDump").isEqualTo(thisToString) 35 } 36 } 37