in android/imports/testSrc/com/android/tools/idea/imports/MavenClassRegistryTest.kt [54:243]
fun parseJsonFile() {
// language=json
repositoryIndexContents =
"""
{
"Index": [
{
"groupId": "androidx.activity",
"artifactId": "activity",
"version": "1.1.0",
"ktxTargets": [],
"fqcns": [
"androidx.activity.ComponentActivity",
"androidx.activity.Fake"
],
"ktlfns": [
{
"fqn": "androidx.activity.result.PickVisualMediaRequestKt.PickVisualMediaRequest"
},
{
"fqn": "androidx.activity.FakeFunctionKt.FakeFunction"
},
{
"xfqn": "androidx.activity.FakeFunctionKt.FakeFunction",
"rcvr": "with.a.Receiver"
}
]
},
{
"groupId": "androidx.activity",
"artifactId": "activity-ktx",
"version": "1.1.0",
"ktxTargets": [
"androidx.activity:activity"
],
"fqcns": []
},
{
"groupId": "androidx.annotation",
"artifactId": "annotation",
"version": "1.1.0",
"ktxTargets": [],
"fqcns": [
"androidx.annotation.AnimRes",
"androidx.annotation.Fake"
],
"ktlfns": [
{
"fqn": "androidx.annotation.FacadeFileKt.AnnotationFunction"
},
{
"fqn": "androidx.annotation.FakeFunctionKt.FakeFunction"
}
]
}
]
}
"""
.trimIndent()
val mavenClassRegistry = MavenClassRegistry.createFrom(::getIndexByteStream)
assertThat(mavenClassRegistry.lookup.classNameMap)
.containsExactlyEntriesIn(
mapOf(
"ComponentActivity" to
listOf(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.ComponentActivity",
importedItemPackageName = "androidx.activity",
version = "1.1.0",
)
),
"Fake" to
listOf(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.Fake",
importedItemPackageName = "androidx.activity",
version = "1.1.0",
),
LibraryImportData(
artifact = "androidx.annotation:annotation",
importedItemFqName = "androidx.annotation.Fake",
importedItemPackageName = "androidx.annotation",
version = "1.1.0",
),
),
"AnimRes" to
listOf(
LibraryImportData(
artifact = "androidx.annotation:annotation",
importedItemFqName = "androidx.annotation.AnimRes",
importedItemPackageName = "androidx.annotation",
version = "1.1.0",
)
),
)
)
assertThat(mavenClassRegistry.findImportDataByClassName("Fake"))
.containsExactly(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.Fake",
importedItemPackageName = "androidx.activity",
version = "1.1.0",
),
LibraryImportData(
artifact = "androidx.annotation:annotation",
importedItemFqName = "androidx.annotation.Fake",
importedItemPackageName = "androidx.annotation",
version = "1.1.0",
),
)
assertThat(mavenClassRegistry.lookup.topLevelFunctionsMap)
.containsExactlyEntriesIn(
mapOf(
FunctionSpecifier("PickVisualMediaRequest", null) to
listOf(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.result.PickVisualMediaRequest",
importedItemPackageName = "androidx.activity.result",
version = "1.1.0",
)
),
FunctionSpecifier("FakeFunction", null) to
listOf(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.FakeFunction",
importedItemPackageName = "androidx.activity",
version = "1.1.0",
),
LibraryImportData(
artifact = "androidx.annotation:annotation",
importedItemFqName = "androidx.annotation.FakeFunction",
importedItemPackageName = "androidx.annotation",
version = "1.1.0",
),
),
FunctionSpecifier("FakeFunction", FqName("with.a.Receiver")) to
listOf(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.FakeFunction",
importedItemPackageName = "androidx.activity",
version = "1.1.0",
)
),
FunctionSpecifier("AnnotationFunction", null) to
listOf(
LibraryImportData(
artifact = "androidx.annotation:annotation",
importedItemFqName = "androidx.annotation.AnnotationFunction",
importedItemPackageName = "androidx.annotation",
version = "1.1.0",
)
),
)
)
assertThat(
mavenClassRegistry.findImportDataByFunctionSpecifier(
FunctionSpecifier("FakeFunction", null)
)
)
.containsExactly(
LibraryImportData(
artifact = "androidx.activity:activity",
importedItemFqName = "androidx.activity.FakeFunction",
importedItemPackageName = "androidx.activity",
version = "1.1.0",
),
LibraryImportData(
artifact = "androidx.annotation:annotation",
importedItemFqName = "androidx.annotation.FakeFunction",
importedItemPackageName = "androidx.annotation",
version = "1.1.0",
),
)
assertThat(mavenClassRegistry.lookup.ktxMap)
.containsExactlyEntriesIn(
mapOf("androidx.activity:activity" to "androidx.activity:activity-ktx")
)
}