summaryrefslogtreecommitdiff
path: root/device-manager
diff options
context:
space:
mode:
authorHannah Chu <hanchu@google.com>2022-01-24 16:13:10 -0800
committerTreeHugger Robot <treehugger-gerrit@google.com>2022-03-02 00:58:47 +0000
commitfbc28dea102bd89c77ff0aafbd7c444e870279ba (patch)
tree1f40301537fd15329e0758b98df24ca372b7333d /device-manager
parent3cb5e13083b449f48bc924308f9d3778b040000c (diff)
downloadidea-fbc28dea102bd89c77ff0aafbd7c444e870279ba.tar.gz
[DM] Add test in VirtualDeviceTableTest
Increases coverage for multiple classes because we can (finally) touch the VirtualDeviceTable without SizeOnDisk getting in the way Bug: 179803112 Test: this Change-Id: I4b34930a7c9baba78422a8822a2828fc3ad1cee8
Diffstat (limited to 'device-manager')
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTable.java34
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java (renamed from device-manager/src/com/android/tools/idea/devicemanager/physicaltab/CountDownLatchFutureCallback.java)6
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceChangeListenerTest.java1
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceDetailsPanelTest.java1
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanelTest.java1
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableTest.java58
6 files changed, 70 insertions, 31 deletions
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTable.java b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTable.java
index b6eae9f0a80..4583d1ce798 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTable.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTable.java
@@ -24,7 +24,6 @@ import com.android.tools.idea.devicemanager.ActivateDeviceFileExplorerWindowValu
import com.android.tools.idea.devicemanager.ApiTableCellRenderer;
import com.android.tools.idea.devicemanager.Device;
import com.android.tools.idea.devicemanager.DeviceManagerUsageTracker;
-import com.android.tools.idea.devicemanager.DevicePanel;
import com.android.tools.idea.devicemanager.DeviceTable;
import com.android.tools.idea.devicemanager.IconButtonTableCellRenderer;
import com.android.tools.idea.devicemanager.MergedTableColumn;
@@ -70,11 +69,14 @@ import org.jetbrains.annotations.Nullable;
public final class VirtualDeviceTable extends DeviceTable<VirtualDevice> implements AvdRefreshProvider, AvdInfoProvider {
private final @NotNull VirtualDevicePanel myPanel;
private final @NotNull VirtualDeviceAsyncSupplier myAsyncSupplier;
+ private final @NotNull NewSetDevices myNewSetDevices;
- private static final class SetDevices implements FutureCallback<List<VirtualDevice>> {
+ @VisibleForTesting
+ static final class SetDevices implements FutureCallback<List<VirtualDevice>> {
private final @NotNull VirtualDeviceTableModel myModel;
- private SetDevices(@NotNull VirtualDeviceTableModel model) {
+ @VisibleForTesting
+ SetDevices(@NotNull VirtualDeviceTableModel model) {
myModel = model;
}
@@ -97,18 +99,26 @@ public final class VirtualDeviceTable extends DeviceTable<VirtualDevice> impleme
}
}
+ @VisibleForTesting
+ interface NewSetDevices {
+ @NotNull FutureCallback<@NotNull List<@NotNull VirtualDevice>> apply(@NotNull VirtualDeviceTableModel model);
+ }
+
VirtualDeviceTable(@NotNull VirtualDevicePanel panel) {
- this(panel, new VirtualDeviceTableModel());
+ this(panel, new VirtualDeviceAsyncSupplier(), SetDevices::new);
}
@VisibleForTesting
- VirtualDeviceTable(@NotNull VirtualDevicePanel panel, @NotNull VirtualDeviceTableModel model) {
- super(model, VirtualDevice.class, VirtualDeviceTableModel.DEVICE_MODEL_COLUMN_INDEX);
+ VirtualDeviceTable(@NotNull VirtualDevicePanel panel,
+ @NotNull VirtualDeviceAsyncSupplier asyncSupplier,
+ @NotNull NewSetDevices newSetDevices) {
+ super(new VirtualDeviceTableModel(), VirtualDevice.class, VirtualDeviceTableModel.DEVICE_MODEL_COLUMN_INDEX);
myPanel = panel;
- myAsyncSupplier = new VirtualDeviceAsyncSupplier();
+ myAsyncSupplier = asyncSupplier;
+ myNewSetDevices = newSetDevices;
- model.addTableModelListener(event -> sizeWidthsToFit());
+ dataModel.addTableModelListener(event -> sizeWidthsToFit());
Project project = panel.getProject();
@@ -133,7 +143,7 @@ public final class VirtualDeviceTable extends DeviceTable<VirtualDevice> impleme
setDefaultRenderer(EditValue.class, new IconButtonTableCellRenderer(AllIcons.Actions.Edit, "Edit this AVD"));
setDefaultRenderer(PopUpMenuValue.class, new IconButtonTableCellRenderer(AllIcons.Actions.More));
- setRowSorter(newRowSorter(model));
+ setRowSorter(newRowSorter(dataModel));
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
setShowGrid(false);
@@ -185,10 +195,6 @@ public final class VirtualDeviceTable extends DeviceTable<VirtualDevice> impleme
return sorter;
}
- public @NotNull DevicePanel getPanel() {
- return myPanel;
- }
-
@Override
public @NotNull VirtualDeviceTableModel getModel() {
return (VirtualDeviceTableModel)dataModel;
@@ -261,7 +267,7 @@ public final class VirtualDeviceTable extends DeviceTable<VirtualDevice> impleme
@Override
public void refreshAvds() {
- FutureUtils.addCallback(myAsyncSupplier.get(), EdtExecutorService.getInstance(), new SetDevices(getModel()));
+ FutureUtils.addCallback(myAsyncSupplier.get(), EdtExecutorService.getInstance(), myNewSetDevices.apply(getModel()));
}
@Override
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/physicaltab/CountDownLatchFutureCallback.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java
index 599c277d129..5ec8281c0b8 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/physicaltab/CountDownLatchFutureCallback.java
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java
@@ -13,18 +13,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.tools.idea.devicemanager.physicaltab;
+package com.android.tools.idea.devicemanager;
import com.google.common.util.concurrent.FutureCallback;
import java.util.concurrent.CountDownLatch;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-final class CountDownLatchFutureCallback<V> implements FutureCallback<V> {
+public final class CountDownLatchFutureCallback<V> implements FutureCallback<V> {
private final @NotNull FutureCallback<@Nullable V> myDelegate;
private final @NotNull CountDownLatch myLatch;
- CountDownLatchFutureCallback(@NotNull FutureCallback<@Nullable V> delegate, @NotNull CountDownLatch latch) {
+ public CountDownLatchFutureCallback(@NotNull FutureCallback<@Nullable V> delegate, @NotNull CountDownLatch latch) {
myDelegate = delegate;
myLatch = latch;
}
diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceChangeListenerTest.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceChangeListenerTest.java
index 3d6147dbdbf..b51fe3c2f05 100644
--- a/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceChangeListenerTest.java
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceChangeListenerTest.java
@@ -18,6 +18,7 @@ package com.android.tools.idea.devicemanager.physicaltab;
import com.android.ddmlib.AndroidDebugBridge.IDeviceChangeListener;
import com.android.ddmlib.IDevice;
import com.android.tools.idea.devicemanager.CountDownLatchAssert;
+import com.android.tools.idea.devicemanager.CountDownLatchFutureCallback;
import com.android.tools.idea.devicemanager.DeviceManagerAndroidDebugBridge;
import com.android.tools.idea.devicemanager.physicaltab.PhysicalDeviceChangeListener.AddOrSet;
import com.google.common.util.concurrent.FutureCallback;
diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceDetailsPanelTest.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceDetailsPanelTest.java
index 4861d2d5d81..4a849e773e5 100644
--- a/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceDetailsPanelTest.java
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceDetailsPanelTest.java
@@ -19,6 +19,7 @@ import static org.junit.Assert.assertEquals;
import com.android.sdklib.AndroidVersion;
import com.android.tools.idea.devicemanager.CountDownLatchAssert;
+import com.android.tools.idea.devicemanager.CountDownLatchFutureCallback;
import com.android.tools.idea.devicemanager.DetailsPanel;
import com.android.tools.idea.devicemanager.Resolution;
import com.android.tools.idea.devicemanager.SerialNumber;
diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanelTest.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanelTest.java
index 45a4a922377..b7a394eb4cb 100644
--- a/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanelTest.java
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanelTest.java
@@ -25,6 +25,7 @@ import com.android.tools.idea.adb.wireless.WiFiPairingController;
import com.android.tools.idea.devicemanager.ActivateDeviceFileExplorerWindowValue;
import com.android.tools.idea.devicemanager.ConnectionType;
import com.android.tools.idea.devicemanager.CountDownLatchAssert;
+import com.android.tools.idea.devicemanager.CountDownLatchFutureCallback;
import com.android.tools.idea.devicemanager.DetailsPanel;
import com.android.tools.idea.devicemanager.PopUpMenuValue;
import com.android.tools.idea.devicemanager.physicaltab.PhysicalDevicePanel.SetDevices;
diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableTest.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableTest.java
index a00fadf3787..4fe7cba5e11 100644
--- a/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableTest.java
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableTest.java
@@ -15,12 +15,21 @@
*/
package com.android.tools.idea.devicemanager.virtualtab;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertEquals;
import com.android.sdklib.internal.avd.AvdInfo;
import com.android.sdklib.repository.targets.SystemImage;
+import com.android.tools.idea.avdmanager.AvdManagerConnection;
+import com.android.tools.idea.devicemanager.CountDownLatchAssert;
+import com.android.tools.idea.devicemanager.CountDownLatchFutureCallback;
+import com.android.tools.idea.devicemanager.virtualtab.VirtualDeviceTable.SetDevices;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
import java.nio.file.Paths;
import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CountDownLatch;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -30,26 +39,47 @@ import org.mockito.Mockito;
@RunWith(JUnit4.class)
public final class VirtualDeviceTableTest {
private final @NotNull VirtualDevicePanel myPanel = Mockito.mock(VirtualDevicePanel.class);
+ private final CountDownLatch myLatch = new CountDownLatch(1);
@Test
- public void emptyTable() {
- VirtualDeviceTableModel model = new VirtualDeviceTableModel(Collections.emptyList());
- VirtualDeviceTable table = new VirtualDeviceTable(myPanel, model);
+ public void emptyTable() throws InterruptedException {
+ VirtualDeviceTable table = new VirtualDeviceTable(myPanel, mockSupplier(Collections.emptyList()), this::newSetDevices);
- assertFalse(table.getSelectedDevice().isPresent());
+ CountDownLatchAssert.await(myLatch);
+
+ assertEquals(Optional.empty(), table.getSelectedDevice());
}
@Test
- public void unselectedDevice() {
- AvdInfo device = new AvdInfo("Pixel 5",
- Paths.get("ini", "file"),
- Paths.get("data", "folder", "path"),
- Mockito.mock(SystemImage.class),
- null);
+ public void selectDevice() throws InterruptedException {
+ AvdInfo avdInfo = new AvdInfo("Pixel 5",
+ Paths.get("ini", "file"),
+ Paths.get("data", "folder", "path"),
+ Mockito.mock(SystemImage.class),
+ null);
+
+ AvdManagerConnection avdManagerConnection = Mockito.mock(AvdManagerConnection.class);
+
+ VirtualDevice device = TestVirtualDevices.pixel5Api31(avdInfo,
+ () -> avdManagerConnection);
+
+ VirtualDeviceTable table = new VirtualDeviceTable(myPanel, mockSupplier(Collections.singletonList(device)), this::newSetDevices);
+
+ CountDownLatchAssert.await(myLatch);
- VirtualDeviceTableModel model = new VirtualDeviceTableModel(Collections.singletonList(TestVirtualDevices.pixel5Api31(device)));
- VirtualDeviceTable table = new VirtualDeviceTable(myPanel, model);
+ assertEquals(Optional.empty(), table.getSelectedDevice());
+
+ table.setRowSelectionInterval(0, 0);
+ assertEquals(Optional.of(device), table.getSelectedDevice());
+ }
+
+ private static @NotNull VirtualDeviceAsyncSupplier mockSupplier(@NotNull List<@NotNull VirtualDevice> devices) {
+ VirtualDeviceAsyncSupplier supplier = Mockito.mock(VirtualDeviceAsyncSupplier.class);
+ Mockito.when(supplier.get()).thenReturn(Futures.immediateFuture(devices));
+ return supplier;
+ }
- assertFalse(table.getSelectedDevice().isPresent());
+ private @NotNull FutureCallback<@NotNull List<@NotNull VirtualDevice>> newSetDevices(@NotNull VirtualDeviceTableModel model) {
+ return new CountDownLatchFutureCallback<>(new SetDevices(model), myLatch);
}
}