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

Commit 78674da3 authored by AI test gen's avatar AI test gen Committed by Ang Li
Browse files

Add test for InputMethodSubtypeSwitchingController#getItems

Adds a unit test for the `getItems` method to verify its filtering logic based on the `forMenu` and `includeAuxiliary` parameters.

This improves test coverage for a public method that was previously untested.


Please help fill out the survey for feedback: https://docs.google.com/forms/d/e/1FAIpQLSeKFKpHImCAqZIa_OR801cw72HQUreM2oGM25C3mKKT2tBFnw/viewform?usp=pp_url&entry.1586624956=ag/35397290

Original Change: ag/34663935 (Note that tests are based on the original CL but may add coverage beyond the specific changes to improve overall code health, especially when the original change restructured the code)
Test: ATP tests passed http://go/forrest-run/L89200030017347546
Bug: 431235865
Flag: TEST_ONLY

Change-Id: Iaf1c6d87163c65219f74b75dfa2629ee384d10ee
parent 63e3f02e
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.server.inputmethod.InputMethodSubtypeSwitchingController.ImeS

import org.junit.Test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

@@ -348,6 +349,49 @@ public final class InputMethodSubtypeSwitchingControllerTest {
                List.of(hardIme));
    }

    /** Verifies that items are filtered correctly. */
    @Test
    public void testGetItems() throws Exception {
        final var controller = new InputMethodSubtypeSwitchingController();

        final var normalItem = createTestItem("Normal", true /* showInImeSwitcherMenu */,
                false /* isAuxiliary */);
        final var hiddenItem = createTestItem("Hidden", false /* showInImeSwitcherMenu */,
                false /* isAuxiliary */);
        final var auxItem = createTestItem("Aux", true /* showInImeSwitcherMenu */,
                true /* isAuxiliary */);
        final var hiddenAuxItem = createTestItem("HiddenAux", false /* showInImeSwitcherMenu */,
                true /* isAuxiliary */);

        final var allItems = List.of(normalItem, hiddenItem, auxItem, hiddenAuxItem);

        // Use reflection to set the private mEnabledItems field for testing.
        final Field enabledItemsField =
                InputMethodSubtypeSwitchingController.class.getDeclaredField("mEnabledItems");
        enabledItemsField.setAccessible(true);
        enabledItemsField.set(controller, allItems);

        // Test case 1: getItems(forMenu=false, includeAuxiliary=false)
        // Should return non-auxiliary items.
        var result = controller.getItems(false /* forMenu */, false /* includeAuxiliary */);
        assertEquals(List.of(normalItem, hiddenItem), result);

        // Test case 2: getItems(forMenu=true, includeAuxiliary=false)
        // Should return non-auxiliary items that are shown in the menu.
        result = controller.getItems(true /* forMenu */, false /* includeAuxiliary */);
        assertEquals(List.of(normalItem), result);

        // Test case 3: getItems(forMenu=false, includeAuxiliary=true)
        // Should return all items.
        result = controller.getItems(false /* forMenu */, true /* includeAuxiliary */);
        assertEquals(allItems, result);

        // Test case 4: getItems(forMenu=true, includeAuxiliary=true)
        // Should return all items that are shown in the menu.
        result = controller.getItems(true /* forMenu */, true /* includeAuxiliary */);
        assertEquals(List.of(normalItem, auxItem), result);
    }

    /** Verifies that switch aware and switch unaware IMEs are combined together. */
    @Test
    public void testSwitchAwareAndUnawareCombined() {
@@ -648,6 +692,16 @@ public final class InputMethodSubtypeSwitchingControllerTest {
                true /* suitableForHardware */);
    }

    private static ImeSubtypeListItem createTestItem(@NonNull String imeName,
            boolean showInImeSwitcherMenu, boolean isAuxiliary) {
        final var componentName = new ComponentName(TEST_PACKAGE_NAME, imeName);
        final var imi = createTestImi(componentName, null /* subtypes */,
                true /* supportsSwitchingToNextInputMethod */);
        return new ImeSubtypeListItem(imeName, null /* subtypeName */, null /* layoutName */,
                imi, NOT_A_SUBTYPE_INDEX, showInImeSwitcherMenu, isAuxiliary,
                false /* suitableForHardware */);
    }

    /**
     * Creates a test {@link InputMethodInfo} from the component name and subtypes.
     *