diff options
Diffstat (limited to 'tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java')
-rw-r--r-- | tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java | 141 |
1 files changed, 119 insertions, 22 deletions
diff --git a/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java b/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java index ba1e0b0b..404ee5d3 100644 --- a/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java +++ b/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java @@ -16,58 +16,155 @@ package com.android.tv.util; +import static android.support.test.InstrumentationRegistry.getContext; + import android.content.pm.ResolveInfo; import android.media.tv.TvInputInfo; import android.support.test.filters.SmallTest; -import android.support.test.filters.Suppress; -import android.test.AndroidTestCase; import com.android.tv.testing.ComparatorTester; +import org.junit.Test; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -import java.util.LinkedHashMap; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; /** * Test for {@link TvInputManagerHelper} */ @SmallTest -public class TvInputManagerHelperTest extends AndroidTestCase { - public void testComparator() throws Exception { - final LinkedHashMap<String, Boolean> INPUT_ID_TO_PARTNER_INPUT = new LinkedHashMap<>(); - INPUT_ID_TO_PARTNER_INPUT.put("2_partner_input", true); - INPUT_ID_TO_PARTNER_INPUT.put("3_partner_input", true); - INPUT_ID_TO_PARTNER_INPUT.put("1_3rd_party_input", false); - INPUT_ID_TO_PARTNER_INPUT.put("4_3rd_party_input", false); +public class TvInputManagerHelperTest { + final HashMap<String, TvInputInfoWrapper> TEST_INPUT_MAP = new HashMap<>(); + + @Test + public void testComparatorInternal() { + ResolveInfo resolveInfo = TestUtils.createResolveInfo("test", "test"); + + List<TvInputInfo> inputs = new ArrayList<>(); + inputs.add(createTvInputInfo(resolveInfo, "2_partner_input", null, 0, false, + "2_partner_input", null, true)); + inputs.add(createTvInputInfo(resolveInfo, "3_partner_input", null, 0, false, + "3_partner_input", null, true)); + inputs.add(createTvInputInfo(resolveInfo, "1_3rd_party_input", null, 0, false, + "1_3rd_party_input", null, false)); + inputs.add(createTvInputInfo(resolveInfo, "4_3rd_party_input", null, 0, false, + "4_3rd_party_input", null, false)); + + TvInputManagerHelper manager = createMockTvInputManager(); + + ComparatorTester<TvInputInfo> comparatorTester = ComparatorTester.withoutEqualsTest( + new TvInputManagerHelper.InputComparatorInternal(manager)); + for (TvInputInfo input : inputs) { + comparatorTester.addComparableGroup(input); + } + comparatorTester.test(); + } + + @Test + public void testHardwareInputComparatorHdmi() { + ResolveInfo resolveInfo = TestUtils.createResolveInfo("test", "test"); + + TvInputInfo hdmi1 = createTvInputInfo(resolveInfo, "HDMI1", null, TvInputInfo.TYPE_HDMI, + true, "HDMI1", null, false); + TvInputInfo hdmi2 = createTvInputInfo(resolveInfo, "HDMI2", null, TvInputInfo.TYPE_HDMI, + true, "HDMI2", "DVD", false); + TvInputInfo hdmi3 = createTvInputInfo(resolveInfo, "HDMI3", null, TvInputInfo.TYPE_HDMI, + true, "HDMI3", "Cable", false); + TvInputInfo hdmi4 = createTvInputInfo(resolveInfo, "HDMI4", null, TvInputInfo.TYPE_HDMI, + true, "HDMI4", null, false); + + TvInputManagerHelper manager = createMockTvInputManager(); + + ComparatorTester<TvInputInfo> comparatorTester = ComparatorTester.withoutEqualsTest( + new TvInputManagerHelper.HardwareInputComparator(getContext(), manager)); + comparatorTester.addComparableGroup(hdmi3) + .addComparableGroup(hdmi2) + .addComparableGroup(hdmi1) + .addComparableGroup(hdmi4) + .test(); + } + + @Test + public void testHardwareInputComparatorCec() { + ResolveInfo resolveInfo = TestUtils.createResolveInfo("test", "test"); + + TvInputInfo hdmi1 = createTvInputInfo(resolveInfo, "HDMI1", null, TvInputInfo.TYPE_HDMI, + true, "HDMI1", null, false); + TvInputInfo hdmi2 = createTvInputInfo(resolveInfo, "HDMI2", null, TvInputInfo.TYPE_HDMI, + true, "HDMI2", null, false); + TvInputInfo cec1 = createTvInputInfo(resolveInfo, "2_cec", "HDMI1", TvInputInfo.TYPE_HDMI, + true, "2_cec", null, false); + TvInputInfo cec2 = createTvInputInfo(resolveInfo, "1_cec", "HDMI2", TvInputInfo.TYPE_HDMI, + true, "1_cec", null, false); + + TvInputManagerHelper manager = createMockTvInputManager(); + + ComparatorTester<TvInputInfo> comparatorTester = ComparatorTester.withoutEqualsTest( + new TvInputManagerHelper.HardwareInputComparator(getContext(), manager)); + comparatorTester.addComparableGroup(cec1) + .addComparableGroup(cec2) + .test(); + } + + private TvInputManagerHelper createMockTvInputManager() { TvInputManagerHelper manager = Mockito.mock(TvInputManagerHelper.class); Mockito.doAnswer(new Answer<Boolean>() { @Override public Boolean answer(InvocationOnMock invocation) throws Throwable { TvInputInfo info = (TvInputInfo) invocation.getArguments()[0]; - return INPUT_ID_TO_PARTNER_INPUT.get(info.getId()); + return TEST_INPUT_MAP.get(info.getId()).mIsPartnerInput; } }).when(manager).isPartnerInput(Mockito.<TvInputInfo>any()); Mockito.doAnswer(new Answer<String>() { @Override public String answer(InvocationOnMock invocation) throws Throwable { TvInputInfo info = (TvInputInfo) invocation.getArguments()[0]; - return info.getId(); + return TEST_INPUT_MAP.get(info.getId()).mLabel; } }).when(manager).loadLabel(Mockito.<TvInputInfo>any()); + Mockito.doAnswer(new Answer<String>() { + @Override + public String answer(InvocationOnMock invocation) throws Throwable { + TvInputInfo info = (TvInputInfo) invocation.getArguments()[0]; + return TEST_INPUT_MAP.get(info.getId()).mCustomLabel; + } + }).when(manager).loadCustomLabel(Mockito.<TvInputInfo>any()); + Mockito.doAnswer(new Answer<TvInputInfo>() { + @Override + public TvInputInfo answer(InvocationOnMock invocation) throws Throwable { + String inputId = (String) invocation.getArguments()[0]; + TvInputInfoWrapper inputWrapper = TEST_INPUT_MAP.get(inputId); + return inputWrapper == null ? null : inputWrapper.mInput; + } + }).when(manager).getTvInputInfo(Mockito.<String>any()); + return manager; + } - ComparatorTester<TvInputInfo> comparatorTester = - ComparatorTester.withoutEqualsTest( - new TvInputManagerHelper.TvInputInfoComparator(manager)); - ResolveInfo resolveInfo1 = TestUtils.createResolveInfo("1_test", "1_test"); - ResolveInfo resolveInfo2 = TestUtils.createResolveInfo("2_test", "2_test"); - for (String inputId : INPUT_ID_TO_PARTNER_INPUT.keySet()) { - TvInputInfo info1 = TestUtils.createTvInputInfo(resolveInfo1, inputId, null, 0, false); - TvInputInfo info2 = TestUtils.createTvInputInfo(resolveInfo2, inputId, null, 0, false); - comparatorTester.addComparableGroup(info1, info2); + private TvInputInfo createTvInputInfo(ResolveInfo service, String id, + String parentId, int type, boolean isHardwareInput, String label, String customLabel, + boolean isPartnerInput) { + TvInputInfoWrapper inputWrapper = new TvInputInfoWrapper(); + try { + inputWrapper.mInput = + TestUtils.createTvInputInfo(service, id, parentId, type, isHardwareInput); + } catch (Exception e) { } - comparatorTester.test(); + inputWrapper.mLabel = label; + inputWrapper.mIsPartnerInput = isPartnerInput; + inputWrapper.mCustomLabel = customLabel; + TEST_INPUT_MAP.put(id, inputWrapper); + return inputWrapper.mInput; + } + + private static class TvInputInfoWrapper { + TvInputInfo mInput; + String mLabel; + String mCustomLabel; + boolean mIsPartnerInput; } } |