CEC CTS: Add BaseHdmiCecCtsTest class for CEC CTS tests.
Create a new BaseHdmiCecCtsTest class and move the common test
setup for all the CEC CTS tests to this class.
Bug: None
Test: atest CtsHdmiCecHostTestCases
Change-Id: I815abca4f907b5d82c03210edc5daa6401af8746
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java
new file mode 100644
index 0000000..e7389e1
--- /dev/null
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hdmicec.cts;
+
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.rules.TestRule;
+
+/** Base class for all HDMI CEC CTS tests. */
+public class BaseHdmiCecCtsTest extends BaseHostJUnit4Test {
+
+ public final HdmiCecClientWrapper hdmiCecClient;
+
+ /**
+ * Constructor for BaseHdmiCecCtsTest.
+ *
+ * @param dutLogicalAddress The logical address that the DUT will have.
+ * @param clientParams Extra parameters to use when launching cec-client
+ */
+ public BaseHdmiCecCtsTest(LogicalAddress dutLogicalAddress, String ...clientParams) {
+ this.hdmiCecClient = new HdmiCecClientWrapper(dutLogicalAddress, clientParams);
+ }
+
+ /** Class with predefined rules which can be used by HDMI CEC CTS tests. */
+ public static class CecRules {
+
+ public static TestRule requiresCec(BaseHostJUnit4Test testPointer) {
+ return new RequiredFeatureRule(testPointer, HdmiCecConstants.HDMI_CEC_FEATURE);
+ }
+
+ public static TestRule requiresLeanback(BaseHostJUnit4Test testPointer) {
+ return new RequiredFeatureRule(testPointer, HdmiCecConstants.LEANBACK_FEATURE);
+ }
+
+ public static TestRule requiresDeviceType(BaseHostJUnit4Test testPointer,
+ LogicalAddress dutLogicalAddress) {
+ return RequiredPropertyRule.asCsvContainsValue(
+ testPointer,
+ HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
+ dutLogicalAddress.getDeviceType());
+ }
+ }
+}
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecAudioReturnChannelControlTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecAudioReturnChannelControlTest.java
index b246a9d..c6f8c09 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecAudioReturnChannelControlTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecAudioReturnChannelControlTest.java
@@ -18,6 +18,7 @@
import static org.junit.Assume.assumeNoException;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -27,7 +28,6 @@
import android.hdmicec.cts.RequiredFeatureRule;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -36,21 +36,20 @@
/** HDMI CEC test to test audio return channel control (Section 11.2.17) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecAudioReturnChannelControlTest extends BaseHostJUnit4Test {
+public final class HdmiCecAudioReturnChannelControlTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress AUDIO_DEVICE = LogicalAddress.AUDIO_SYSTEM;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(AUDIO_DEVICE);
+ public HdmiCecAudioReturnChannelControlTest() {
+ super(AUDIO_DEVICE);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- AUDIO_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, AUDIO_DEVICE))
.around(hdmiCecClient);
private void checkArcIsInitiated(){
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecInvalidMessagesTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecInvalidMessagesTest.java
index 6131b5d..6b349e3 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecInvalidMessagesTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecInvalidMessagesTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assume.assumeNoException;
import static org.junit.Assume.assumeTrue;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -31,7 +32,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.Test;
@@ -40,7 +40,7 @@
/** HDMI CEC test to verify that device ignores invalid messages (Section 12) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecInvalidMessagesTest extends BaseHostJUnit4Test {
+public final class HdmiCecInvalidMessagesTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress AUDIO_DEVICE = LogicalAddress.AUDIO_SYSTEM;
private static final String PROPERTY_LOCALE = "persist.sys.locale";
@@ -58,17 +58,16 @@
/** The command to clear the main activity. */
private static final String CLEAR_COMMAND = String.format("pm clear %s", PACKAGE);
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(AUDIO_DEVICE);
+ public HdmiCecInvalidMessagesTest() {
+ super(AUDIO_DEVICE);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- AUDIO_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, AUDIO_DEVICE))
.around(hdmiCecClient);
private String getSystemLocale() throws Exception {
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecLogicalAddressTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecLogicalAddressTest.java
index 1c15f97..5ee1045 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecLogicalAddressTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecLogicalAddressTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -37,21 +37,20 @@
/** HDMI CEC test to verify logical address after device reboot (Section 10.2.5) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecLogicalAddressTest extends BaseHostJUnit4Test {
+public final class HdmiCecLogicalAddressTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress AUDIO_DEVICE = LogicalAddress.AUDIO_SYSTEM;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(AUDIO_DEVICE);
+ public HdmiCecLogicalAddressTest() {
+ super(AUDIO_DEVICE);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- AUDIO_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, AUDIO_DEVICE))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecRemoteControlPassThroughTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecRemoteControlPassThroughTest.java
index 8ff9c38..38eade7 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecRemoteControlPassThroughTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecRemoteControlPassThroughTest.java
@@ -16,6 +16,7 @@
package android.hdmicec.cts.audio;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.HdmiCecClientWrapper;
import android.hdmicec.cts.HdmiCecConstants;
import android.hdmicec.cts.LogHelper;
@@ -25,7 +26,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -33,7 +33,7 @@
import org.junit.Test;
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecRemoteControlPassThroughTest extends BaseHostJUnit4Test {
+public final class HdmiCecRemoteControlPassThroughTest extends BaseHdmiCecCtsTest {
/** The package name of the APK. */
private static final String PACKAGE = "android.hdmicec.app";
@@ -48,17 +48,16 @@
/** The command to clear the main activity. */
private static final String CLEAR_COMMAND = String.format("pm clear %s", PACKAGE);
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.AUDIO_SYSTEM);
+ public HdmiCecRemoteControlPassThroughTest() {
+ super(LogicalAddress.AUDIO_SYSTEM);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.AUDIO_SYSTEM.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.AUDIO_SYSTEM))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecSystemAudioModeTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecSystemAudioModeTest.java
index d2175ac..1089731 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecSystemAudioModeTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/audio/HdmiCecSystemAudioModeTest.java
@@ -21,6 +21,7 @@
import com.google.common.collect.Range;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -32,7 +33,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.After;
import org.junit.Rule;
@@ -47,7 +47,7 @@
/** HDMI CEC test to test system audio mode (Section 11.2.15) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecSystemAudioModeTest extends BaseHostJUnit4Test {
+public final class HdmiCecSystemAudioModeTest extends BaseHdmiCecCtsTest {
/** The package name of the APK. */
private static final String PACKAGE = "android.hdmicec.app";
@@ -70,17 +70,16 @@
private List<Integer> mSupportedAudioFormats = null;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(AUDIO_DEVICE, "-t", "t");
+ public HdmiCecSystemAudioModeTest() {
+ super(AUDIO_DEVICE, "-t", "t");
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- AUDIO_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, AUDIO_DEVICE))
.around(hdmiCecClient);
private String getRequestSadFormatsParams(boolean sendValidFormats) throws Exception {
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecDeviceOsdNameTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecDeviceOsdNameTest.java
index 3c3b6fc..2c76ce4 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecDeviceOsdNameTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecDeviceOsdNameTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -37,21 +37,20 @@
/** HDMI CEC tests related to the device reporting the device OSD name (Section 11.2.11) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecDeviceOsdNameTest extends BaseHostJUnit4Test {
+public final class HdmiCecDeviceOsdNameTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress PLAYBACK_DEVICE = LogicalAddress.PLAYBACK_1;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecDeviceOsdNameTest() {
+ super(PLAYBACK_DEVICE);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, PLAYBACK_DEVICE))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecLogicalAddressTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecLogicalAddressTest.java
index 0ba9031..40b2d37 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecLogicalAddressTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecLogicalAddressTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -37,21 +37,20 @@
/** HDMI CEC test to verify physical address after device reboot (Section 10.2.3) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecLogicalAddressTest extends BaseHostJUnit4Test {
+public final class HdmiCecLogicalAddressTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress PLAYBACK_DEVICE = LogicalAddress.PLAYBACK_1;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecLogicalAddressTest() {
+ super(PLAYBACK_DEVICE);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, PLAYBACK_DEVICE))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecOneTouchPlayTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecOneTouchPlayTest.java
index 3795a32..b35f41f 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecOneTouchPlayTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecOneTouchPlayTest.java
@@ -16,6 +16,9 @@
package android.hdmicec.cts.playback;
+import static com.google.common.truth.Truth.assertThat;
+
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -26,18 +29,15 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.RuleChain;
import org.junit.runner.RunWith;
-import static com.google.common.truth.Truth.assertThat;
-
/** HDMI CEC tests for One Touch Play (Section 11.2.1) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecOneTouchPlayTest extends BaseHostJUnit4Test {
+public final class HdmiCecOneTouchPlayTest extends BaseHdmiCecCtsTest {
private static final int PHYSICAL_ADDRESS = 0x1000;
/**
@@ -69,17 +69,16 @@
/** The command to stop an app. */
private static final String FORCE_STOP_COMMAND = "am force-stop ";
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecOneTouchPlayTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPhysicalAddressTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPhysicalAddressTest.java
index 013900f..4f51e83 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPhysicalAddressTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPhysicalAddressTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -37,21 +37,19 @@
/** HDMI CEC test to verify physical address after device reboot (Section 10.1.2) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecPhysicalAddressTest extends BaseHostJUnit4Test {
+public final class HdmiCecPhysicalAddressTest extends BaseHdmiCecCtsTest {
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecPhysicalAddressTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
-
/**
* Test 10.1.2-1
* Tests that the device broadcasts a <REPORT_PHYSICAL_ADDRESS> after a reboot and that the
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java
index cf8acf7..4484ee8 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -39,7 +39,7 @@
/** HDMI CEC test to check if the device reports power status correctly (Section 11.2.14) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecPowerStatusTest extends BaseHostJUnit4Test {
+public final class HdmiCecPowerStatusTest extends BaseHdmiCecCtsTest {
private static final int ON = 0x0;
private static final int OFF = 0x1;
@@ -49,17 +49,16 @@
private static final int WAIT_TIME = 5;
private static final int MAX_SLEEP_TIME = 8;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecPowerStatusTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRemoteControlPassThroughTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRemoteControlPassThroughTest.java
index a6f3973..62cb442 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRemoteControlPassThroughTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRemoteControlPassThroughTest.java
@@ -16,6 +16,7 @@
package android.hdmicec.cts.playback;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.HdmiCecClientWrapper;
import android.hdmicec.cts.HdmiCecConstants;
import android.hdmicec.cts.LogHelper;
@@ -25,7 +26,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -34,7 +34,7 @@
/** HDMI CEC test to check if the device reports power status correctly (Section 11.2.13) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecRemoteControlPassThroughTest extends BaseHostJUnit4Test {
+public final class HdmiCecRemoteControlPassThroughTest extends BaseHdmiCecCtsTest {
/**
* The package name of the APK.
@@ -54,17 +54,16 @@
*/
private static final String CLEAR_COMMAND = String.format("pm clear %s", PACKAGE);
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecRemoteControlPassThroughTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java
index aae4b55..2657152 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -39,21 +39,20 @@
/** HDMI CEC test to test routing control (Section 11.2.2) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecRoutingControlTest extends BaseHostJUnit4Test {
+public final class HdmiCecRoutingControlTest extends BaseHdmiCecCtsTest {
private static final int PHYSICAL_ADDRESS = 0x1000;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecRoutingControlTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecStartupTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecStartupTest.java
index 5924795..f9f5ca2 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecStartupTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecStartupTest.java
@@ -20,6 +20,7 @@
import static com.google.common.truth.Truth.assertWithMessage;
import static org.junit.Assume.assumeTrue;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
import android.hdmicec.cts.HdmiCecConstants;
@@ -29,7 +30,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
@@ -46,7 +46,7 @@
* HDMI CEC test to verify physical address after device reboot (Section 10.2.3)
*/
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecStartupTest extends BaseHostJUnit4Test {
+public final class HdmiCecStartupTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress PLAYBACK_DEVICE = LogicalAddress.PLAYBACK_1;
private static final ImmutableList<CecOperand> necessaryMessages =
@@ -59,18 +59,17 @@
CecOperand.DEVICE_VENDOR_ID, CecOperand.GIVE_POWER_STATUS,
CecOperand.GET_MENU_LANGUAGE).build();
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecStartupTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
- @Rule
- public RuleChain ruleChain =
- RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- PLAYBACK_DEVICE.getDeviceType()))
- .around(hdmiCecClient);
+ @Rule
+ public RuleChain ruleChain =
+ RuleChain
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
+ .around(hdmiCecClient);
/**
* Tests that the device sends all the messages that should be sent on startup. It also ensures
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemAudioControlTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemAudioControlTest.java
index 1cbb035..6945249 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemAudioControlTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemAudioControlTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -37,22 +37,20 @@
/** HDMI CEC test to verify system audio control commands (Section 11.2.15) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecSystemAudioControlTest extends BaseHostJUnit4Test {
+public final class HdmiCecSystemAudioControlTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress PLAYBACK_DEVICE = LogicalAddress.PLAYBACK_1;
- public HdmiCecClientWrapper hdmiCecClient =
- new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1, "-t", "a");
+ public HdmiCecSystemAudioControlTest() {
+ super(LogicalAddress.PLAYBACK_1, "-t", "a");
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- PLAYBACK_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemInformationTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemInformationTest.java
index a32c703..9d26958 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemInformationTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemInformationTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assume.assumeTrue;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecClientMessage;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
@@ -31,7 +32,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -40,24 +40,23 @@
/** HDMI CEC system information tests (Section 11.2.6) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecSystemInformationTest extends BaseHostJUnit4Test {
+public final class HdmiCecSystemInformationTest extends BaseHdmiCecCtsTest {
/** The version number 0x05 refers to CEC v1.4 */
private static final int CEC_VERSION_NUMBER = 0x05;
private static final String PROPERTY_LOCALE = "persist.sys.locale";
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecSystemInformationTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- LogicalAddress.PLAYBACK_1.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemStandbyTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemStandbyTest.java
index 68191df..96a895e 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemStandbyTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecSystemStandbyTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
import android.hdmicec.cts.HdmiCecConstants;
@@ -27,7 +28,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -38,24 +38,23 @@
/** HDMI CEC test to verify the device handles standby correctly (Section 11.2.3) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecSystemStandbyTest extends BaseHostJUnit4Test {
+public final class HdmiCecSystemStandbyTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress PLAYBACK_DEVICE = LogicalAddress.PLAYBACK_1;
private static final String HDMI_CONTROL_DEVICE_AUTO_OFF =
"hdmi_control_auto_device_off_enabled";
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecSystemStandbyTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- PLAYBACK_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
private boolean setHdmiControlDeviceAutoOff(boolean turnOn) throws Exception {
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecVendorCommandsTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecVendorCommandsTest.java
index 25c06c7..4a850e9 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecVendorCommandsTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecVendorCommandsTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.hdmicec.cts.BaseHdmiCecCtsTest;
import android.hdmicec.cts.CecMessage;
import android.hdmicec.cts.CecOperand;
import android.hdmicec.cts.HdmiCecClientWrapper;
@@ -28,7 +29,6 @@
import com.android.tradefed.device.ITestDevice;
import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
import org.junit.Rule;
import org.junit.rules.RuleChain;
@@ -37,22 +37,21 @@
/** HDMI CEC test to verify device vendor specific commands (Section 11.2.9) */
@RunWith(DeviceJUnit4ClassRunner.class)
-public final class HdmiCecVendorCommandsTest extends BaseHostJUnit4Test {
+public final class HdmiCecVendorCommandsTest extends BaseHdmiCecCtsTest {
private static final LogicalAddress PLAYBACK_DEVICE = LogicalAddress.PLAYBACK_1;
private static final int INCORRECT_VENDOR_ID = 0x0;
- public HdmiCecClientWrapper hdmiCecClient = new HdmiCecClientWrapper(LogicalAddress.PLAYBACK_1);
+ public HdmiCecVendorCommandsTest() {
+ super(LogicalAddress.PLAYBACK_1);
+ }
@Rule
public RuleChain ruleChain =
RuleChain
- .outerRule(new RequiredFeatureRule(this, HdmiCecConstants.HDMI_CEC_FEATURE))
- .around(new RequiredFeatureRule(this, HdmiCecConstants.LEANBACK_FEATURE))
- .around(RequiredPropertyRule.asCsvContainsValue(
- this,
- HdmiCecConstants.HDMI_DEVICE_TYPE_PROPERTY,
- PLAYBACK_DEVICE.getDeviceType()))
+ .outerRule(CecRules.requiresCec(this))
+ .around(CecRules.requiresLeanback(this))
+ .around(CecRules.requiresDeviceType(this, LogicalAddress.PLAYBACK_1))
.around(hdmiCecClient);
/**