• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

<lambda>null1 package 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