package com.android.ide.common.rendering; import static com.android.ide.common.rendering.HardwareConfigHelper.getGenericLabel; import static com.android.ide.common.rendering.HardwareConfigHelper.getNexusLabel; import static com.android.ide.common.rendering.HardwareConfigHelper.isGeneric; import static com.android.ide.common.rendering.HardwareConfigHelper.isNexus; import static com.android.ide.common.rendering.HardwareConfigHelper.isTv; import static com.android.ide.common.rendering.HardwareConfigHelper.isWear; import static com.android.ide.common.rendering.HardwareConfigHelper.nexusRank; import com.android.sdklib.devices.Device; import com.android.sdklib.devices.DeviceManager; import com.android.utils.StdLogger; import com.google.common.collect.Lists; import junit.framework.TestCase; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class HardwareConfigHelperTest extends TestCase { private static DeviceManager getDeviceManager() { return DeviceManager.createInstance(null, new StdLogger(StdLogger.Level.INFO)); } public void testNexus() { DeviceManager deviceManager = getDeviceManager(); Device n1 = deviceManager.getDevice("Nexus One", "Google"); assertNotNull(n1); assertEquals("Nexus One", n1.getId()); //noinspection deprecation assertSame(n1.getId(), n1.getName()); assertEquals("Nexus One", n1.getDisplayName()); assertTrue(isNexus(n1)); assertEquals("Nexus One (3.7\", 480 \u00d7 800: hdpi)", getNexusLabel(n1)); assertFalse(isGeneric(n1)); assertFalse(isGeneric(n1)); } public void testNexus7() { DeviceManager deviceManager = getDeviceManager(); Device n7 = deviceManager.getDevice("Nexus 7", "Google"); Device n7b = deviceManager.getDevice("Nexus 7 2013", "Google"); assertNotNull(n7); assertNotNull(n7b); assertEquals("Nexus 7 (2012)", n7.getDisplayName()); assertEquals("Nexus 7", n7b.getDisplayName()); assertTrue(isNexus(n7)); assertTrue(isNexus(n7b)); assertTrue(nexusRank(n7b) > nexusRank(n7)); assertEquals("Nexus 7 (2012) (7.0\", 800 × 1280: tvdpi)", getNexusLabel(n7)); assertEquals("Nexus 7 (7.0\", 1200 × 1920: xhdpi)", getNexusLabel(n7b)); assertFalse(isGeneric(n7)); assertFalse(isGeneric(n7)); } public void testGeneric() { DeviceManager deviceManager = getDeviceManager(); Device qvga = deviceManager.getDevice("2.7in QVGA", "Generic"); assertNotNull(qvga); assertEquals("2.7\" QVGA", qvga.getDisplayName()); assertEquals("2.7in QVGA", qvga.getId()); assertFalse(isNexus(qvga)); assertEquals(" 2.7\" QVGA (240 \u00d7 320: ldpi)", getGenericLabel(qvga)); assertTrue(isGeneric(qvga)); assertFalse(isNexus(qvga)); } public void testIsWearIsTvIsRound() { DeviceManager deviceManager = getDeviceManager(); Device qvga = deviceManager.getDevice("2.7in QVGA", "Generic"); assertNotNull(qvga); assertFalse(isWear(qvga)); assertFalse(isTv(qvga)); assertFalse(qvga.isScreenRound()); Device nexus5 = deviceManager.getDevice("Nexus 5", "Google"); assertNotNull(nexus5); assertFalse(isWear(nexus5)); assertFalse(isTv(nexus5)); assertFalse(nexus5.isScreenRound()); Device square = deviceManager.getDevice("wear_square", "Google"); assertNotNull(square); assertTrue(isWear(square)); assertFalse(square.isScreenRound()); assertFalse(isTv(square)); Device round = deviceManager.getDevice("wear_round", "Google"); assertNotNull(round); assertTrue(isWear(round)); assertTrue(round.isScreenRound()); assertFalse(isTv(round)); Device tv1080p = deviceManager.getDevice("tv_1080p", "Google"); assertNotNull(tv1080p); assertTrue(isTv(tv1080p)); assertFalse(isWear(tv1080p)); assertFalse(tv1080p.isScreenRound()); Device tv720p = deviceManager.getDevice("tv_1080p", "Google"); assertNotNull(tv720p); assertFalse(isWear(tv720p)); assertTrue(isTv(tv720p)); assertFalse(tv720p.isScreenRound()); } public void testNexusRank() { List<Device> devices = Lists.newArrayList(); DeviceManager deviceManager = getDeviceManager(); for (String id : new String[] { "Nexus 7 2013", "Nexus 5", "Nexus 10", "Nexus 4", "Nexus 7", "Galaxy Nexus", "Nexus S", "Nexus One"}) { Device device = deviceManager.getDevice(id, "Google"); assertNotNull(device); devices.add(device); } Collections.sort(devices, new Comparator<Device>() { @Override public int compare(Device device, Device device2) { return nexusRank(device) - nexusRank(device2); } }); List<String> ids = Lists.newArrayList(); for (Device device : devices) { ids.add(device.getId()); } assertEquals(Arrays.asList( "Nexus One", "Nexus S", "Galaxy Nexus", "Nexus 7", "Nexus 10", "Nexus 4", "Nexus 7 2013", "Nexus 5" ), ids); } }