Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9197994d authored by Michael Mikhail's avatar Michael Mikhail
Browse files

Fix failing test in MediaControlPanel

Calculate the value of the number of cards in runtime instead of setting
it to 2. And add new test for landscape orientation.

Fixes: 277334019
Test: atest MediaControlPanelTest
Change-Id: I7b3fd26d3eee2b83389f4f2fd7c65879308f51cf
parent fa337258
Loading
Loading
Loading
Loading
+78 −10
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
@@ -42,6 +43,7 @@ import android.os.Bundle
import android.provider.Settings.ACTION_MEDIA_CONTROLS_SETTINGS
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.util.TypedValue
import android.view.View
import android.view.ViewGroup
import android.view.animation.Interpolator
@@ -101,7 +103,6 @@ import dagger.Lazy
import junit.framework.Assert.assertTrue
import org.junit.After
import org.junit.Before
import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -2200,8 +2201,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
    }

    @Test
    @Ignore("b/276920368")
    fun bindRecommendation_carouselNotFitThreeRecs() {
    fun bindRecommendation_carouselNotFitThreeRecs_OrientationPortrait() {
        useRealConstraintSets()
        setupUpdatedRecommendationViewHolder()
        val albumArt = getColorIcon(Color.RED)
@@ -2229,16 +2229,84 @@ public class MediaControlPanelTest : SysuiTestCase() {

        // set the screen width less than the width of media controls.
        player.context.resources.configuration.screenWidthDp = 350
        player.context.resources.configuration.orientation = Configuration.ORIENTATION_PORTRAIT
        player.attachRecommendation(recommendationViewHolder)
        player.bindRecommendation(data)

        assertThat(player.numberOfFittedRecommendations).isEqualTo(2)
        assertThat(expandedSet.getVisibility(coverContainer1.id)).isEqualTo(ConstraintSet.VISIBLE)
        assertThat(collapsedSet.getVisibility(coverContainer1.id)).isEqualTo(ConstraintSet.VISIBLE)
        assertThat(expandedSet.getVisibility(coverContainer2.id)).isEqualTo(ConstraintSet.VISIBLE)
        assertThat(collapsedSet.getVisibility(coverContainer2.id)).isEqualTo(ConstraintSet.VISIBLE)
        assertThat(expandedSet.getVisibility(coverContainer3.id)).isEqualTo(ConstraintSet.GONE)
        assertThat(collapsedSet.getVisibility(coverContainer3.id)).isEqualTo(ConstraintSet.GONE)
        val res = player.context.resources
        val displayAvailableWidth =
            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 350f, res.displayMetrics).toInt()
        val recCoverWidth: Int =
            (res.getDimensionPixelSize(R.dimen.qs_media_rec_album_width) +
                res.getDimensionPixelSize(R.dimen.qs_media_info_spacing) * 2)
        val numOfRecs = displayAvailableWidth / recCoverWidth

        assertThat(player.numberOfFittedRecommendations).isEqualTo(numOfRecs)
        recommendationViewHolder.mediaCoverContainers.forEachIndexed { index, container ->
            if (index < numOfRecs) {
                assertThat(expandedSet.getVisibility(container.id)).isEqualTo(ConstraintSet.VISIBLE)
                assertThat(collapsedSet.getVisibility(container.id))
                    .isEqualTo(ConstraintSet.VISIBLE)
            } else {
                assertThat(expandedSet.getVisibility(container.id)).isEqualTo(ConstraintSet.GONE)
                assertThat(collapsedSet.getVisibility(container.id)).isEqualTo(ConstraintSet.GONE)
            }
        }
    }

    @Test
    fun bindRecommendation_carouselNotFitThreeRecs_OrientationLandscape() {
        useRealConstraintSets()
        setupUpdatedRecommendationViewHolder()
        val albumArt = getColorIcon(Color.RED)
        val data =
            smartspaceData.copy(
                recommendations =
                    listOf(
                        SmartspaceAction.Builder("id1", "title1")
                            .setSubtitle("subtitle1")
                            .setIcon(albumArt)
                            .setExtras(Bundle.EMPTY)
                            .build(),
                        SmartspaceAction.Builder("id2", "title2")
                            .setSubtitle("subtitle1")
                            .setIcon(albumArt)
                            .setExtras(Bundle.EMPTY)
                            .build(),
                        SmartspaceAction.Builder("id3", "title3")
                            .setSubtitle("subtitle1")
                            .setIcon(albumArt)
                            .setExtras(Bundle.EMPTY)
                            .build()
                    )
            )

        // set the screen width less than the width of media controls.
        // We should have dp width less than 378 to test. In landscape we should have 2x.
        player.context.resources.configuration.screenWidthDp = 700
        player.context.resources.configuration.orientation = Configuration.ORIENTATION_LANDSCAPE
        player.attachRecommendation(recommendationViewHolder)
        player.bindRecommendation(data)

        val res = player.context.resources
        val displayAvailableWidth =
            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 350f, res.displayMetrics).toInt()
        val recCoverWidth: Int =
            (res.getDimensionPixelSize(R.dimen.qs_media_rec_album_width) +
                res.getDimensionPixelSize(R.dimen.qs_media_info_spacing) * 2)
        val numOfRecs = displayAvailableWidth / recCoverWidth

        assertThat(player.numberOfFittedRecommendations).isEqualTo(numOfRecs)
        recommendationViewHolder.mediaCoverContainers.forEachIndexed { index, container ->
            if (index < numOfRecs) {
                assertThat(expandedSet.getVisibility(container.id)).isEqualTo(ConstraintSet.VISIBLE)
                assertThat(collapsedSet.getVisibility(container.id))
                    .isEqualTo(ConstraintSet.VISIBLE)
            } else {
                assertThat(expandedSet.getVisibility(container.id)).isEqualTo(ConstraintSet.GONE)
                assertThat(collapsedSet.getVisibility(container.id)).isEqualTo(ConstraintSet.GONE)
            }
        }
    }

    @Test