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

Commit 07f0a432 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Improve test using Mockito.argThat() matcher

Instead of matching any() display, this CL uses argThat() matcher to
verify only for DEFAULT_DISPLAY.

Note that initializeDisplayManger() helper does nothing in those tests
because DisplayManager instance in NavigationBarController is already
initialized in @Before and can't be replaced with a mock.

Bug: 142293903
Test: atest SystemUITests:NavigationBarControllerTest
Change-Id: Ic203f06a9612681ca41025596800b320c2307c09
parent e29d2e79
Loading
Loading
Loading
Loading
+5 −19
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
@@ -31,15 +32,10 @@ import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.hardware.display.DisplayManager;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
import android.util.SparseArray;
import android.view.Display;
import android.view.WindowManager;

import androidx.test.filters.SmallTest;

@@ -59,7 +55,6 @@ import org.junit.runner.RunWith;
public class NavigationBarControllerTest extends SysuiTestCase {

    private NavigationBarController mNavigationBarController;
    private Display mDisplay;
    private NavigationBarFragment mDefaultNavBar;
    private NavigationBarFragment mSecondaryNavBar;

@@ -89,37 +84,28 @@ public class NavigationBarControllerTest extends SysuiTestCase {
    @After
    public void tearDown() {
        mNavigationBarController = null;
        mDisplay = null;
        mDefaultNavBar = null;
        mSecondaryNavBar = null;
    }

    @Test
    public void testCreateNavigationBarsIncludeDefaultTrue() {
        initializeDisplayManager();
        doNothing().when(mNavigationBarController).createNavigationBar(any(), any());

        mNavigationBarController.createNavigationBars(true, null);

        verify(mNavigationBarController).createNavigationBar(any(Display.class), any());
        verify(mNavigationBarController).createNavigationBar(
                argThat(display -> display.getDisplayId() == DEFAULT_DISPLAY), any());
    }

    @Test
    public void testCreateNavigationBarsIncludeDefaultFalse() {
        initializeDisplayManager();
        doNothing().when(mNavigationBarController).createNavigationBar(any(), any());

        mNavigationBarController.createNavigationBars(false, null);

        verify(mNavigationBarController, never()).createNavigationBar(any(), any());
    }

    private void initializeDisplayManager() {
        DisplayManager displayManager = mock(DisplayManager.class);
        mDisplay = mContext.getSystemService(WindowManager.class).getDefaultDisplay();
        Display[] displays = {mDisplay};
        when(displayManager.getDisplays()).thenReturn(displays);
        mContext.addMockSystemService(Context.DISPLAY_SERVICE, displayManager);
        verify(mNavigationBarController, never()).createNavigationBar(
                argThat(display -> display.getDisplayId() == DEFAULT_DISPLAY), any());
    }

    // Tests if NPE occurs when call checkNavBarModes() with invalid display.