aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java')
-rw-r--r--tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java141
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;
}
}