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

Commit a173a3cc authored by Jacky Wang's avatar Jacky Wang
Browse files

Support preference widget change for CatalystScreenTestCase

Bug: 370394101
Flag: TEST_ONLY
Test: atest
Change-Id: I6da4f8e9a38c9a97949a705430661b04ba0d381e
parent 10c23d42
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import androidx.preference.PreferenceScreen
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import java.util.concurrent.atomic.AtomicBoolean
import org.junit.Test
import org.junit.runner.RunWith
@@ -47,13 +48,14 @@ abstract class CatalystScreenTestCase {
        enableCatalystScreen()
        assertThat(preferenceScreenCreator.isFlagEnabled(appContext)).isTrue()
        val catalystScreen = dumpPreferenceScreen()
        Log.i(TAG, catalystScreen)
        Log.i(TAG, "Catalyst screen: $catalystScreen")

        disableCatalystScreen()
        assertThat(preferenceScreenCreator.isFlagEnabled(appContext)).isFalse()
        val legacyScreen = dumpPreferenceScreen()

        assertThat(catalystScreen).isEqualTo(legacyScreen)
        assertWithMessage("Legacy screen: %s", legacyScreen)
            .that(catalystScreen)
            .isEqualTo(legacyScreen)
    }

    /** Enables the flag to test catalyst screen. */
@@ -94,7 +96,7 @@ abstract class CatalystScreenTestCase {
        FragmentScenario.launch(fragmentClass)

    private fun Preference.toString(builder: StringBuilder, indent: String = "") {
        val clazz = javaClass
        val clazz = getPreferenceClass(this)
        builder.append(indent).append(clazz).append(" {\n")
        val indent2 = "$indent  "
        if (clazz != PreferenceScreen::class.java) {
@@ -125,6 +127,13 @@ abstract class CatalystScreenTestCase {
        builder.append(indent).append("}\n")
    }

    /**
     * Returns the preference class to dump.
     *
     * Subclass could override to take care of preference widget change after migration.
     */
    protected open fun getPreferenceClass(preference: Preference): Class<*> = preference.javaClass

    companion object {
        const val TAG = "CatalystScreenTestCase"