livedisplay: Add some unit tests
* Test color temperature control and mode selection Change-Id: Icc4fffef4c64cf3424e30890b5a4a37154482b3a
This commit is contained in:
parent
35315d3c0f
commit
4595cfde0b
@ -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" />
|
||||
|
||||
|
@ -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]);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user