diff options
Diffstat (limited to 'device-manager/testSrc')
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); } } |