Merge "Migrate responsive tests to multivalent" into main

This commit is contained in:
Sihua Ma
2024-06-13 17:13:06 +00:00
committed by Android (Google) Code Review
12 changed files with 81 additions and 69 deletions

View File

@@ -57,7 +57,7 @@ import org.mockito.kotlin.whenever
*
* For an implementation that mocks InvariantDeviceProfile, use [FakeInvariantDeviceProfileTest]
*/
@AllowedDevices(allowed = [DeviceProduct.CF_PHONE, DeviceProduct.HOST_SIDE_X86_64])
@AllowedDevices(allowed = [DeviceProduct.CF_PHONE, DeviceProduct.ROBOLECTRIC])
@IgnoreLimit(ignoreLimit = BuildConfig.IS_STUDIO_BUILD)
abstract class AbstractDeviceProfileTest {
protected val testContext: Context = InstrumentationRegistry.getInstrumentation().context
@@ -341,4 +341,9 @@ abstract class AbstractDeviceProfileTest {
protected fun Int.dpToPx(): Int {
return ResourceUtils.pxFromDp(this.toFloat(), context!!.resources.displayMetrics)
}
protected fun String.xmlToId(): Int {
val context = InstrumentationRegistry.getInstrumentation().context
return context.resources.getIdentifier(this, "xml", context.packageName)
}
}

View File

@@ -22,7 +22,6 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -45,7 +44,7 @@ class AllAppsSpecsTest : AbstractDeviceProfileTest() {
fun parseValidFile() {
val allAppsSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_all_apps_file),
TestResourceHelper(context, "valid_all_apps_file".xmlToId()),
ResponsiveSpecType.AllApps
)
@@ -114,7 +113,7 @@ class AllAppsSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_missingTag_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_all_apps_file_case_1),
TestResourceHelper(context, "invalid_all_apps_file_case_1".xmlToId()),
ResponsiveSpecType.AllApps
)
}
@@ -122,7 +121,7 @@ class AllAppsSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_moreThanOneValuePerTag_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_all_apps_file_case_2),
TestResourceHelper(context, "invalid_all_apps_file_case_2".xmlToId()),
ResponsiveSpecType.AllApps
)
}
@@ -130,7 +129,7 @@ class AllAppsSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_valueBiggerThan1_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_all_apps_file_case_3),
TestResourceHelper(context, "invalid_all_apps_file_case_3".xmlToId()),
ResponsiveSpecType.AllApps
)
}

View File

@@ -23,7 +23,6 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Test
@@ -52,7 +51,7 @@ class CalculatedAllAppsSpecTest : AbstractDeviceProfileTest() {
val workspaceSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_workspace_file),
TestResourceHelper(context, "valid_workspace_file".xmlToId()),
ResponsiveSpecType.Workspace
)
val widthSpec =
@@ -62,7 +61,7 @@ class CalculatedAllAppsSpecTest : AbstractDeviceProfileTest() {
val allAppsSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_all_apps_file),
TestResourceHelper(context, "valid_all_apps_file".xmlToId()),
ResponsiveSpecType.AllApps
)

View File

@@ -23,7 +23,6 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType
import com.android.launcher3.tests.R
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -47,12 +46,12 @@ class CalculatedFolderSpecTest : AbstractDeviceProfileTest() {
val columns = 6
// Loading workspace specs
val resourceHelperWorkspace = TestResourceHelper(context, R.xml.valid_workspace_file)
val resourceHelperWorkspace = TestResourceHelper(context, "valid_workspace_file".xmlToId())
val workspaceSpecs =
ResponsiveSpecsProvider.create(resourceHelperWorkspace, ResponsiveSpecType.Workspace)
// Loading folders specs
val resourceHelperFolder = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelperFolder = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs =
ResponsiveSpecsProvider.create(resourceHelperFolder, ResponsiveSpecType.Folder)
val specs = folderSpecs.getSpecsByAspectRatio(aspectRatio)
@@ -123,12 +122,12 @@ class CalculatedFolderSpecTest : AbstractDeviceProfileTest() {
val rows = 5
// Loading workspace specs
val resourceHelperWorkspace = TestResourceHelper(context, R.xml.valid_workspace_file)
val resourceHelperWorkspace = TestResourceHelper(context, "valid_workspace_file".xmlToId())
val workspaceSpecs =
ResponsiveSpecsProvider.create(resourceHelperWorkspace, ResponsiveSpecType.Workspace)
// Loading folders specs
val resourceHelperFolder = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelperFolder = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs =
ResponsiveSpecsProvider.create(resourceHelperFolder, ResponsiveSpecType.Folder)
val specs = folderSpecs.getSpecsByAspectRatio(aspectRatio)

View File

@@ -22,7 +22,6 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Test
@@ -47,7 +46,7 @@ class CalculatedHotseatSpecTest : AbstractDeviceProfileTest() {
val availableHeight = deviceSpec.naturalSize.second
val hotseatSpecsProvider =
HotseatSpecsProvider.create(TestResourceHelper(context, TestR.xml.valid_hotseat_file))
HotseatSpecsProvider.create(TestResourceHelper(context, "valid_hotseat_file".xmlToId()))
val heightSpec =
hotseatSpecsProvider.getCalculatedSpec(
aspectRatio,
@@ -73,7 +72,7 @@ class CalculatedHotseatSpecTest : AbstractDeviceProfileTest() {
val availableHeight = deviceSpec.naturalSize.second
val hotseatSpecsProvider =
HotseatSpecsProvider.create(TestResourceHelper(context, TestR.xml.valid_hotseat_file))
HotseatSpecsProvider.create(TestResourceHelper(context, "valid_hotseat_file".xmlToId()))
val heightSpec =
hotseatSpecsProvider.getCalculatedSpec(
aspectRatio,
@@ -99,7 +98,7 @@ class CalculatedHotseatSpecTest : AbstractDeviceProfileTest() {
val hotseatSpecsProvider =
HotseatSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_hotseat_land_file)
TestResourceHelper(context, "valid_hotseat_land_file".xmlToId())
)
val widthSpec =
hotseatSpecsProvider.getCalculatedSpec(aspectRatio, DimensionType.WIDTH, availableWidth)

View File

@@ -23,7 +23,6 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Test
@@ -53,7 +52,7 @@ class CalculatedWorkspaceSpecTest : AbstractDeviceProfileTest() {
val workspaceSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_workspace_file),
TestResourceHelper(context, "valid_workspace_file".xmlToId()),
ResponsiveSpecType.Workspace
)
val widthSpec =
@@ -96,7 +95,7 @@ class CalculatedWorkspaceSpecTest : AbstractDeviceProfileTest() {
val workspaceSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_workspace_file),
TestResourceHelper(context, "valid_workspace_file".xmlToId()),
ResponsiveSpecType.Workspace
)
val widthSpec =
@@ -138,7 +137,7 @@ class CalculatedWorkspaceSpecTest : AbstractDeviceProfileTest() {
val availableHeight = deviceSpec.naturalSize.second - deviceSpec.statusBarNaturalPx - 640
val workspaceSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_workspace_unsorted_file),
TestResourceHelper(context, "valid_workspace_unsorted_file".xmlToId()),
ResponsiveSpecType.Workspace
)
val widthSpec =

View File

@@ -23,7 +23,6 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType
import com.android.launcher3.tests.R
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -44,7 +43,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
@Test
fun parseValidFile() {
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelper = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
val specs = folderSpecs.getSpecsByAspectRatio(aspectRatio)
@@ -92,25 +91,25 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_missingTag_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_1)
val resourceHelper = TestResourceHelper(context, "invalid_folders_specs_1".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_moreThanOneValuePerTag_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_2)
val resourceHelper = TestResourceHelper(context, "invalid_folders_specs_2".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_valueBiggerThan1_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_3)
val resourceHelper = TestResourceHelper(context, "invalid_folders_specs_3".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_missingSpecs_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_4)
val resourceHelper = TestResourceHelper(context, "invalid_folders_specs_4".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
}
@@ -132,7 +131,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
val calculatedWorkspaceSpec =
CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_5)
val resourceHelper = TestResourceHelper(context, "invalid_folders_specs_5".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
folderSpecs.getCalculatedSpec(
aspectRatio,
@@ -161,7 +160,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
val calculatedWorkspaceSpec =
CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.invalid_folders_specs_5)
val resourceHelper = TestResourceHelper(context, "invalid_folders_specs_5".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
folderSpecs.getCalculatedSpec(
aspectRatio,
@@ -190,7 +189,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
val calculatedWorkspaceSpec =
CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelper = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
val calculatedWidthSpec =
folderSpecs.getCalculatedSpec(
@@ -227,7 +226,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
val calculatedWorkspaceSpec =
CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelper = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
folderSpecs.getCalculatedSpec(
aspectRatio,
@@ -256,7 +255,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
val calculatedWorkspaceSpec =
CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelper = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
val calculatedHeightSpec =
folderSpecs.getCalculatedSpec(
@@ -293,7 +292,7 @@ class FolderSpecTest : AbstractDeviceProfileTest() {
val calculatedWorkspaceSpec =
CalculatedResponsiveSpec(aspectRatio, availableSpace, cells, workspaceSpec)
val resourceHelper = TestResourceHelper(context, R.xml.valid_folders_specs)
val resourceHelper = TestResourceHelper(context, "valid_folders_specs".xmlToId())
val folderSpecs = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Folder)
folderSpecs.getCalculatedSpec(
aspectRatio,

View File

@@ -22,7 +22,6 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -44,7 +43,7 @@ class HotseatSpecsProviderTest : AbstractDeviceProfileTest() {
@Test
fun parseValidFile() {
val hotseatSpecsProvider =
HotseatSpecsProvider.create(TestResourceHelper(context, TestR.xml.valid_hotseat_file))
HotseatSpecsProvider.create(TestResourceHelper(context, "valid_hotseat_file".xmlToId()))
val specs = hotseatSpecsProvider.getSpecsByAspectRatio(aspectRatio)
val expectedHeightSpecs =
@@ -76,7 +75,7 @@ class HotseatSpecsProviderTest : AbstractDeviceProfileTest() {
fun parseValidLandscapeFile() {
val hotseatSpecsProvider =
HotseatSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_hotseat_land_file)
TestResourceHelper(context, "valid_hotseat_land_file".xmlToId())
)
val specs = hotseatSpecsProvider.getSpecsByAspectRatio(aspectRatio)
assertThat(specs.heightSpecs.size).isEqualTo(0)
@@ -107,14 +106,14 @@ class HotseatSpecsProviderTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_spaceIsNotFixedSize_throwsError() {
HotseatSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_hotseat_file_case_1)
TestResourceHelper(context, "invalid_hotseat_file_case_1".xmlToId())
)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_invalidFixedSize_throwsError() {
HotseatSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_hotseat_file_case_2)
TestResourceHelper(context, "invalid_hotseat_file_case_2".xmlToId())
)
}
}

View File

@@ -22,7 +22,6 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -43,7 +42,7 @@ class ResponsiveCellSpecsProviderTest : AbstractDeviceProfileTest() {
@Test
fun parseValidFile() {
val testResourceHelper = TestResourceHelper(context, TestR.xml.valid_cell_specs_file)
val testResourceHelper = TestResourceHelper(context, "valid_cell_specs_file".xmlToId())
val provider = ResponsiveCellSpecsProvider.create(testResourceHelper)
// Validate Portrait
@@ -98,21 +97,21 @@ class ResponsiveCellSpecsProviderTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_IsNotFixedSizeOrMatchWorkspace_throwsError() {
ResponsiveCellSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_cell_specs_1)
TestResourceHelper(context, "invalid_cell_specs_1".xmlToId())
)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_dimensionTypeIsNotHeight_throwsError() {
ResponsiveCellSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_cell_specs_2)
TestResourceHelper(context, "invalid_cell_specs_2".xmlToId())
)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_invalidFixedSize_throwsError() {
ResponsiveCellSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_cell_specs_3)
TestResourceHelper(context, "invalid_cell_specs_3".xmlToId())
)
}
}

View File

@@ -23,7 +23,6 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.responsive.ResponsiveSpec.DimensionType
import com.android.launcher3.tests.R
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -44,7 +43,7 @@ class ResponsiveSpecsProviderTest : AbstractDeviceProfileTest() {
@Test
fun parseValidFile() {
val resourceHelper = TestResourceHelper(context, R.xml.valid_responsive_spec_unsorted)
val resourceHelper = TestResourceHelper(context, "valid_responsive_spec_unsorted".xmlToId())
val provider = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
// Validate Portrait
@@ -111,44 +110,44 @@ class ResponsiveSpecsProviderTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseValidFile_invalidAspectRatio_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.valid_responsive_spec_unsorted)
val resourceHelper = TestResourceHelper(context, "valid_responsive_spec_unsorted".xmlToId())
val provider = ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
provider.getSpecsByAspectRatio(0f)
}
@Test(expected = InvalidResponsiveGridSpec::class)
fun parseInvalidFile_missingGroups_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_responsive_spec_1)
val resourceHelper = TestResourceHelper(context, "invalid_responsive_spec_1".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
}
@Test(expected = InvalidResponsiveGridSpec::class)
fun parseInvalidFile_partialGroups_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_responsive_spec_2)
val resourceHelper = TestResourceHelper(context, "invalid_responsive_spec_2".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_invalidAspectRatio_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_responsive_spec_3)
val resourceHelper = TestResourceHelper(context, "invalid_responsive_spec_3".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_invalidRemainderSpace_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_responsive_spec_4)
val resourceHelper = TestResourceHelper(context, "invalid_responsive_spec_4".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_invalidAvailableSpace_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_responsive_spec_5)
val resourceHelper = TestResourceHelper(context, "invalid_responsive_spec_5".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
}
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_invalidFixedSize_throwsError() {
val resourceHelper = TestResourceHelper(context, R.xml.invalid_responsive_spec_6)
val resourceHelper = TestResourceHelper(context, "invalid_responsive_spec_6".xmlToId())
ResponsiveSpecsProvider.create(resourceHelper, ResponsiveSpecType.Workspace)
}

View File

@@ -22,7 +22,6 @@ import androidx.test.filters.SmallTest
import androidx.test.platform.app.InstrumentationRegistry
import com.android.launcher3.AbstractDeviceProfileTest
import com.android.launcher3.responsive.ResponsiveSpec.Companion.ResponsiveSpecType
import com.android.launcher3.tests.R as TestR
import com.android.launcher3.util.TestResourceHelper
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -45,7 +44,7 @@ class WorkspaceSpecsTest : AbstractDeviceProfileTest() {
fun parseValidFile() {
val workspaceSpecs =
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.valid_workspace_file),
TestResourceHelper(context, "valid_workspace_file".xmlToId()),
ResponsiveSpecType.Workspace
)
@@ -169,7 +168,7 @@ class WorkspaceSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_missingTag_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_workspace_file_case_1),
TestResourceHelper(context, "invalid_workspace_file_case_1".xmlToId()),
ResponsiveSpecType.Workspace
)
}
@@ -177,7 +176,7 @@ class WorkspaceSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_moreThanOneValuePerTag_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_workspace_file_case_2),
TestResourceHelper(context, "invalid_workspace_file_case_2".xmlToId()),
ResponsiveSpecType.Workspace
)
}
@@ -185,7 +184,7 @@ class WorkspaceSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_valueBiggerThan1_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_workspace_file_case_3),
TestResourceHelper(context, "invalid_workspace_file_case_3".xmlToId()),
ResponsiveSpecType.Workspace
)
}
@@ -193,7 +192,7 @@ class WorkspaceSpecsTest : AbstractDeviceProfileTest() {
@Test(expected = IllegalStateException::class)
fun parseInvalidFile_matchWorkspace_true_throwsError() {
ResponsiveSpecsProvider.create(
TestResourceHelper(context, TestR.xml.invalid_workspace_file_case_4),
TestResourceHelper(context, "invalid_workspace_file_case_4".xmlToId()),
ResponsiveSpecType.Workspace
)
}

View File

@@ -19,24 +19,41 @@ package com.android.launcher3.util
import android.content.Context
import android.content.res.TypedArray
import android.util.AttributeSet
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
import com.android.launcher3.R
import com.android.launcher3.tests.R as TestR
import kotlin.IntArray
class TestResourceHelper(private val context: Context, specsFileId: Int) :
ResourceHelper(context, specsFileId) {
val responsiveStyleables = listOf(
R.styleable.SizeSpec,
R.styleable.WorkspaceSpec,
R.styleable.FolderSpec,
R.styleable.AllAppsSpec,
R.styleable.ResponsiveSpecGroup
)
override fun obtainStyledAttributes(attrs: AttributeSet, styleId: IntArray): TypedArray {
val clone =
when {
styleId.contentEquals(R.styleable.SizeSpec) -> TestR.styleable.SizeSpec
styleId.contentEquals(R.styleable.WorkspaceSpec) -> TestR.styleable.WorkspaceSpec
styleId.contentEquals(R.styleable.FolderSpec) -> TestR.styleable.FolderSpec
styleId.contentEquals(R.styleable.AllAppsSpec) -> TestR.styleable.AllAppsSpec
styleId.contentEquals(R.styleable.ResponsiveSpecGroup) ->
TestR.styleable.ResponsiveSpecGroup
else -> styleId.clone()
}
if (responsiveStyleables.any { styleId.contentEquals(it) }) {
convertStyleId(styleId)
} else {
styleId.clone()
}
return context.obtainStyledAttributes(attrs, clone)
}
private fun convertStyleId(styleableArr: IntArray): IntArray {
val targetContextRes = getInstrumentation().targetContext.resources
val context = getInstrumentation().context
return styleableArr
.map { attrId -> targetContextRes.getResourceName(attrId).split(":").last() }
.map { attrName ->
// Get required attr from context instead of targetContext
context.resources.getIdentifier(attrName, null, context.packageName)
}
.toIntArray()
}
}