summaryrefslogtreecommitdiff
path: root/device-manager/testSrc
diff options
context:
space:
mode:
Diffstat (limited to 'device-manager/testSrc')
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java42
-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
5 files changed, 89 insertions, 14 deletions
diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java
new file mode 100644
index 00000000000..5ec8281c0b8
--- /dev/null
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/CountDownLatchFutureCallback.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+
+public final class CountDownLatchFutureCallback<V> implements FutureCallback<V> {
+ private final @NotNull FutureCallback<@Nullable V> myDelegate;
+ private final @NotNull CountDownLatch myLatch;
+
+ public CountDownLatchFutureCallback(@NotNull FutureCallback<@Nullable V> delegate, @NotNull CountDownLatch latch) {
+ myDelegate = delegate;
+ myLatch = latch;
+ }
+
+ @Override
+ public void onSuccess(@Nullable V result) {
+ myDelegate.onSuccess(result);
+ myLatch.countDown();
+ }
+
+ @Override
+ public void onFailure(@NotNull Throwable throwable) {
+ myDelegate.onFailure(throwable);
+ }
+}
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);
}
}