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

Commit 55ea2b62 authored by Grace's avatar Grace
Browse files

Testing for Region Sampling Instance

This change adds a testing file to supplement the new Region
Sampling Instance class.

Bug: 202758428
Test: atest RegionSamplingInstanceTest
Change-Id: I83bd0400c6c4528f6dce52310f8ce0e79e06e3ed
parent a57e4ce3
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -128,6 +128,14 @@ public class RegionSamplingHelper implements View.OnAttachStateChangeListener,
        mCallback = samplingCallback;
    }

    /**
     * Make callback accessible
     */
    @VisibleForTesting
    public SamplingCallback getCallback() {
        return mCallback;
    }

    private void onDraw() {
        if (mWaitingOnDraw) {
            mWaitingOnDraw = false;
+14 −10
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.systemui.shared.regionsampling

import android.graphics.Rect
import android.view.View
import androidx.annotation.VisibleForTesting
import com.android.systemui.plugins.RegionDarkness
import com.android.systemui.shared.navigationbar.RegionSamplingHelper
import com.android.systemui.shared.navigationbar.RegionSamplingHelper.SamplingCallback
@@ -26,7 +27,7 @@ import java.util.concurrent.Executor
/**
 * Class for instance of RegionSamplingHelper
 */
class RegionSamplingInstance(
open class RegionSamplingInstance(
        sampledView: View?,
        mainExecutor: Executor?,
        bgExecutor: Executor?,
@@ -35,7 +36,7 @@ class RegionSamplingInstance(
) {
    private var isDark = RegionDarkness.DEFAULT
    private var samplingBounds = Rect()
    private var regionSampler: RegionSamplingHelper? = null
    @VisibleForTesting var regionSampler: RegionSamplingHelper? = null

    /**
     * Interface for method to be passed into RegionSamplingHelper
@@ -48,6 +49,16 @@ class RegionSamplingInstance(
        fun updateColors()
    }

    @VisibleForTesting
    open fun createRegionSamplingHelper(
            sampledView: View,
            callback: SamplingCallback,
            mainExecutor: Executor?,
            bgExecutor: Executor?
    ): RegionSamplingHelper {
        return RegionSamplingHelper(sampledView, callback, mainExecutor, bgExecutor)
    }

    private fun convertToClockDarkness(isRegionDark: Boolean): RegionDarkness {
        return if (isRegionDark) {
            RegionDarkness.DARK
@@ -81,16 +92,9 @@ class RegionSamplingInstance(
        regionSampler?.dump(pw)
    }

    /**
     * Restart
     */
    fun restart(sampledView: View?) {
        regionSampler?.onViewAttachedToWindow(sampledView)
    }

    init {
        if (regionSamplingEnabled && sampledView != null) {
            regionSampler = RegionSamplingHelper(sampledView,
            regionSampler = createRegionSamplingHelper(sampledView,
                    object : SamplingCallback {
                        override fun onRegionDarknessChanged(isRegionDark: Boolean) {
                            isDark = convertToClockDarkness(isRegionDark)
+113 −0
Original line number Diff line number Diff line
package com.android.systemui.shared.regionsampling

import android.graphics.Rect
import android.testing.AndroidTestingRunner
import android.view.View
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.shared.navigationbar.RegionSamplingHelper
import java.io.PrintWriter
import java.util.concurrent.Executor
import org.junit.Assert
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit

@RunWith(AndroidTestingRunner::class)
@SmallTest
class RegionSamplingInstanceTest : SysuiTestCase() {

    @JvmField @Rule
    val mockito = MockitoJUnit.rule()

    @Mock private lateinit var sampledView: View
    @Mock private lateinit var mainExecutor: Executor
    @Mock private lateinit var bgExecutor: Executor
    @Mock private lateinit var regionSampler: RegionSamplingHelper
    @Mock private lateinit var updateFun: RegionSamplingInstance.UpdateColorCallback
    @Mock private lateinit var pw: PrintWriter
    @Mock private lateinit var callback: RegionSamplingHelper.SamplingCallback

    private lateinit var regionSamplingInstance: RegionSamplingInstance

    @Before
    fun setUp() {
        whenever(sampledView.isAttachedToWindow).thenReturn(true)
        whenever(regionSampler.callback).thenReturn(this@RegionSamplingInstanceTest.callback)

        regionSamplingInstance = object : RegionSamplingInstance(
                sampledView,
                mainExecutor,
                bgExecutor,
                true,
                updateFun
        ) {
            override fun createRegionSamplingHelper(
                    sampledView: View,
                    callback: RegionSamplingHelper.SamplingCallback,
                    mainExecutor: Executor?,
                    bgExecutor: Executor?
            ): RegionSamplingHelper {
                return this@RegionSamplingInstanceTest.regionSampler
            }
        }
    }

    @Test
    fun testStartRegionSampler() {
        regionSamplingInstance.startRegionSampler()

        verify(regionSampler).start(Rect(0, 0, 0, 0))
    }

    @Test
    fun testStopRegionSampler() {
        regionSamplingInstance.stopRegionSampler()

        verify(regionSampler).stop()
    }

    @Test
    fun testDump() {
        regionSamplingInstance.dump(pw)

        verify(regionSampler).dump(pw)
    }

    @Test
    fun testUpdateColorCallback() {
        regionSampler.callback.onRegionDarknessChanged(false)
        verify(regionSampler.callback).onRegionDarknessChanged(false)
        clearInvocations(regionSampler.callback)
        regionSampler.callback.onRegionDarknessChanged(true)
        verify(regionSampler.callback).onRegionDarknessChanged(true)
    }

    @Test
    fun testFlagFalse() {
        regionSamplingInstance = object : RegionSamplingInstance(
                sampledView,
                mainExecutor,
                bgExecutor,
                false,
                updateFun
        ) {
            override fun createRegionSamplingHelper(
                    sampledView: View,
                    callback: RegionSamplingHelper.SamplingCallback,
                    mainExecutor: Executor?,
                    bgExecutor: Executor?
            ): RegionSamplingHelper {
                return this@RegionSamplingInstanceTest.regionSampler
            }
        }

        Assert.assertEquals(regionSamplingInstance.regionSampler, null)
    }
}