diff options
author | Steve Kondik <steve@cyngn.com> | 2016-04-26 01:12:56 -0700 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2016-04-26 01:18:19 -0700 |
commit | 4595cfde0bc2a837964a1723e71ab5fbcb0ee90d (patch) | |
tree | 0183cfa1d05e50a5252df7e2277f476f546ea611 /tests | |
parent | 35315d3c0f3a04fdcc46619987734cebe3b9ffeb (diff) | |
download | vendor_cmsdk-4595cfde0bc2a837964a1723e71ab5fbcb0ee90d.zip vendor_cmsdk-4595cfde0bc2a837964a1723e71ab5fbcb0ee90d.tar.gz vendor_cmsdk-4595cfde0bc2a837964a1723e71ab5fbcb0ee90d.tar.bz2 |
livedisplay: Add some unit tests
* Test color temperature control and mode selection
Change-Id: Icc4fffef4c64cf3424e30890b5a4a37154482b3a
Diffstat (limited to 'tests')
-rw-r--r-- | tests/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | tests/src/org/cyanogenmod/tests/hardware/unit/LiveDisplayManagerTest.java | 152 |
2 files changed, 154 insertions, 0 deletions
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index 9f241e4..c5a499c 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -7,6 +7,7 @@ <uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="com.android.alarm.permission.SET_ALARM" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> + <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="cyanogenmod.permission.PUBLISH_CUSTOM_TILE" /> <uses-permission android:name="cyanogenmod.permission.WRITE_SETTINGS"/> @@ -24,6 +25,7 @@ <uses-permission android:name="cyanogenmod.permission.READ_THEMES" /> <uses-permission android:name="cyanogenmod.permission.WRITE_THEMES" /> <uses-permission android:name="cyanogenmod.permission.ACCESS_THEME_MANAGER" /> + <uses-permission android:name="cyanogenmod.permission.MANAGE_LIVEDISPLAY" /> <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" /> diff --git a/tests/src/org/cyanogenmod/tests/hardware/unit/LiveDisplayManagerTest.java b/tests/src/org/cyanogenmod/tests/hardware/unit/LiveDisplayManagerTest.java new file mode 100644 index 0000000..09d74f3 --- /dev/null +++ b/tests/src/org/cyanogenmod/tests/hardware/unit/LiveDisplayManagerTest.java @@ -0,0 +1,152 @@ +package org.cyanogenmod.tests.hardware.unit; + +import android.content.Context; +import android.os.PowerManager; +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; + +import org.junit.Assume; + +import cyanogenmod.app.CMContextConstants; +import cyanogenmod.hardware.CMHardwareManager; +import cyanogenmod.hardware.ILiveDisplayService; +import cyanogenmod.hardware.LiveDisplayConfig; +import cyanogenmod.hardware.LiveDisplayManager; +import cyanogenmod.util.ColorUtils; + +public class LiveDisplayManagerTest extends AndroidTestCase { + + private static final String TAG = "LiveDisplayManagerTest"; + + private LiveDisplayManager mLiveDisplay; + private CMHardwareManager mHardware; + + private PowerManager mPower; + private PowerManager.WakeLock mWakeLock; + + private LiveDisplayConfig mConfig; + private int mInitialMode; + + @SuppressWarnings("deprecation") + @Override + protected void setUp() throws Exception { + super.setUp(); + + Assume.assumeTrue(mContext.getPackageManager().hasSystemFeature( + CMContextConstants.Features.LIVEDISPLAY)); + + mLiveDisplay = LiveDisplayManager.getInstance(mContext); + if (mLiveDisplay.getConfig().hasModeSupport()) { + mInitialMode = mLiveDisplay.getMode(); + } + mConfig = mLiveDisplay.getConfig(); + + mHardware = CMHardwareManager.getInstance(mContext); + mPower = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); + mWakeLock = mPower.newWakeLock( + PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, TAG); + mWakeLock.acquire(); + } + + @Override + protected void tearDown() { + mLiveDisplay.setMode(mInitialMode); + mWakeLock.release(); + } + + @SmallTest + public void testManagerExists() { + assertNotNull(mLiveDisplay); + } + + @SmallTest + public void testManagerServiceIsAvailable() { + ILiveDisplayService service = LiveDisplayManager.getService(); + assertNotNull(service); + } + + @SmallTest + public void testConfig() { + assertNotNull(mConfig); + + // at least GPU mode should be available + assertTrue(mConfig.isAvailable()); + } + + @SmallTest + public void testNightMode() throws Exception { + Assume.assumeTrue(mConfig.hasModeSupport()); + + int day = mLiveDisplay.getDayColorTemperature(); + int night = mLiveDisplay.getNightColorTemperature(); + + mLiveDisplay.setMode(LiveDisplayManager.MODE_NIGHT); + assertColorTemperature(night); + + // custom value + mLiveDisplay.setNightColorTemperature(3300); + assertColorTemperature(3300); + + // "default" + mLiveDisplay.setNightColorTemperature(mConfig.getDefaultNightTemperature()); + assertColorTemperature(mConfig.getDefaultNightTemperature()); + + mLiveDisplay.setNightColorTemperature(night); + + // day should not have changed + assertEquals(day, mLiveDisplay.getDayColorTemperature()); + } + + @SmallTest + public void testDayMode() throws Exception { + Assume.assumeTrue(mConfig.hasModeSupport()); + + int day = mLiveDisplay.getDayColorTemperature(); + int night = mLiveDisplay.getNightColorTemperature(); + + mLiveDisplay.setMode(LiveDisplayManager.MODE_DAY); + assertColorTemperature(day); + + // custom value + mLiveDisplay.setDayColorTemperature(8000); + assertColorTemperature(8000); + + // "default" + mLiveDisplay.setDayColorTemperature(mConfig.getDefaultDayTemperature()); + assertColorTemperature(mConfig.getDefaultDayTemperature()); + + mLiveDisplay.setDayColorTemperature(day); + + // night should not have changed + assertEquals(night, mLiveDisplay.getNightColorTemperature()); + } + + @SmallTest + public void testOutdoorMode() throws Exception { + Assume.assumeTrue(mConfig.hasFeature(LiveDisplayManager.MODE_OUTDOOR)); + + assertTrue(mHardware.isSupported(CMHardwareManager.FEATURE_SUNLIGHT_ENHANCEMENT)); + + mLiveDisplay.setMode(LiveDisplayManager.MODE_OUTDOOR); + Thread.sleep(1000); + assertTrue(mHardware.get(CMHardwareManager.FEATURE_SUNLIGHT_ENHANCEMENT)); + + mLiveDisplay.setMode(LiveDisplayManager.MODE_OFF); + Thread.sleep(1000); + assertFalse(mHardware.get(CMHardwareManager.FEATURE_SUNLIGHT_ENHANCEMENT)); + } + + private void assertColorTemperature(int degK) throws Exception { + Thread.sleep(2000); + assertEquals(degK, LiveDisplayManager.getService().getColorTemperature()); + checkHardwareValue(ColorUtils.temperatureToRGB(degK)); + } + + private void checkHardwareValue(float[] expected) { + int[] hardware = mHardware.getDisplayColorCalibration(); + int max = mHardware.getDisplayColorCalibrationMax(); + assertEquals((int)Math.floor(expected[0] * max), hardware[0]); + assertEquals((int)Math.floor(expected[1] * max), hardware[1]); + assertEquals((int)Math.floor(expected[2] * max), hardware[2]); + } +} |