Test for null executor in createVirtualDisplay

Bug: 218717272
Test: atest CtsVirtualDevicesTestCases
Change-Id: I44c3b9c0b9b6b72fefea4284c4e5164c7f157bdb
diff --git a/tests/tests/virtualdevice/src/android/virtualdevice/cts/CreateVirtualDisplayTest.java b/tests/tests/virtualdevice/src/android/virtualdevice/cts/CreateVirtualDisplayTest.java
index 63ba77e..13fe872 100644
--- a/tests/tests/virtualdevice/src/android/virtualdevice/cts/CreateVirtualDisplayTest.java
+++ b/tests/tests/virtualdevice/src/android/virtualdevice/cts/CreateVirtualDisplayTest.java
@@ -27,6 +27,8 @@
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
+import static org.junit.Assert.assertThrows;
+
 import android.annotation.Nullable;
 import android.companion.virtual.VirtualDeviceManager;
 import android.companion.virtual.VirtualDeviceManager.VirtualDevice;
@@ -71,7 +73,8 @@
     public FakeAssociationRule mFakeAssociationRule = new FakeAssociationRule();
 
     private VirtualDeviceManager mVirtualDeviceManager;
-    @Nullable private VirtualDevice mVirtualDevice;
+    @Nullable
+    private VirtualDevice mVirtualDevice;
     @Mock
     private VirtualDisplay.Callback mVirtualDisplayCallback;
 
@@ -139,4 +142,39 @@
                 .that(displayFlags & Display.FLAG_ALWAYS_UNLOCKED)
                 .isNotEqualTo(0);
     }
+
+    @Test
+    public void createVirtualDisplay_nullExecutorAndCallback_shouldSucceed() {
+        mVirtualDevice =
+                mVirtualDeviceManager.createVirtualDevice(
+                        mFakeAssociationRule.getAssociationInfo().getId(),
+                        DEFAULT_VIRTUAL_DEVICE_PARAMS);
+        VirtualDisplay virtualDisplay = mVirtualDevice.createVirtualDisplay(
+                /* width= */ 100,
+                /* height= */ 100,
+                /* densityDpi= */ 240,
+                /* surface= */ null,
+                /* flags= */ 0,
+                /* executor= */ null,
+                /* callback= */ null);
+        assertThat(virtualDisplay).isNotNull();
+    }
+
+    @Test
+    public void createVirtualDisplay_nullExecutorButNonNullCallback_shouldThrow() {
+        mVirtualDevice =
+                mVirtualDeviceManager.createVirtualDevice(
+                        mFakeAssociationRule.getAssociationInfo().getId(),
+                        DEFAULT_VIRTUAL_DEVICE_PARAMS);
+
+        assertThrows(NullPointerException.class, () ->
+                mVirtualDevice.createVirtualDisplay(
+                        /* width= */ 100,
+                        /* height= */ 100,
+                        /* densityDpi= */ 240,
+                        /* surface= */ null,
+                        /* flags= */ 0,
+                        /* executor= */ null,
+                        mVirtualDisplayCallback));
+    }
 }