diff options
author | Hannah Chu <hanchu@google.com> | 2022-01-24 16:13:10 -0800 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-03-02 00:58:47 +0000 |
commit | fbc28dea102bd89c77ff0aafbd7c444e870279ba (patch) | |
tree | 1f40301537fd15329e0758b98df24ca372b7333d /device-manager | |
parent | 3cb5e13083b449f48bc924308f9d3778b040000c (diff) | |
download | idea-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.java | 34 | ||||
-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.java | 1 | ||||
-rw-r--r-- | device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDeviceDetailsPanelTest.java | 1 | ||||
-rw-r--r-- | device-manager/testSrc/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanelTest.java | 1 | ||||
-rw-r--r-- | device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableTest.java | 58 |
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); } } |