[CTS] Add test for speaker Id egress for hds and vqds

Add unit and integration test for speaker Id egress for
HotwordDetectionService and VisualQueryDetectionService.

Bug: 318617199
Test: atest CtsVoiceInteractionTestCases
Flag: FLAG_ALLOW_SPEAKER_ID_EGRESS, FLAG_ALLOW_COMPLEX_RESULTS_EGRESS_FROM_VQDS
Change-Id: I4fda5562fe9c13046fa4a7facee1324b56544505
diff --git a/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/HotwordDetectedResultTest.java b/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/HotwordDetectedResultTest.java
index 9e33cf7..07137c0 100644
--- a/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/HotwordDetectedResultTest.java
+++ b/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/HotwordDetectedResultTest.java
@@ -183,6 +183,15 @@
     }
 
     @Test
+    public void testHotwordDetectedResult_setInvalidSpeakerId() throws Exception {
+        assertThrows(IllegalArgumentException.class,
+                () -> new HotwordDetectedResult.Builder().setSpeakerId(-1).build());
+        assertThrows(IllegalArgumentException.class,
+                () -> new HotwordDetectedResult.Builder().setSpeakerId(
+                        HotwordDetectedResult.getMaxSpeakerId() + 1).build());
+    }
+
+    @Test
     public void testHotwordDetectedResultBuilder() throws Exception {
         final ParcelFileDescriptor[] fakeAudioStreamPipe = createFakeAudioStreamPipe(
                 FAKE_HOTWORD_AUDIO_STREAM_DATA);
@@ -205,7 +214,8 @@
                             /* hotwordPhraseId= */ 1,
                             audioStreams,
                             new PersistableBundle(),
-                            /* backgroundAudioPower= */ 100);
+                            /* backgroundAudioPower= */ 100,
+                            /* speakerId= */ 1);
 
             assertHotwordDetectedResult(hotwordDetectedResult);
             HotwordAudioStream result = hotwordDetectedResult.getAudioStreams().get(0);
@@ -239,7 +249,8 @@
                             /* hotwordPhraseId= */ 1,
                             audioStreams,
                             new PersistableBundle(),
-                            /* backgroundAudioPower= */ 100);
+                            /* backgroundAudioPower= */ 100,
+                            /* speakerId= */ 1);
 
             final Parcel p = Parcel.obtain();
             hotwordDetectedResult.writeToParcel(p, 0);
@@ -270,7 +281,8 @@
             int hotwordPhraseId,
             List<HotwordAudioStream> audioStreams,
             PersistableBundle extras,
-            int backgroundAudioPower) {
+            int backgroundAudioPower,
+            int speakerId) {
         return new HotwordDetectedResult.Builder()
                 .setConfidenceLevel(confidenceLevel)
                 .setMediaSyncEvent(mediaSyncEvent)
@@ -284,6 +296,7 @@
                 .setAudioStreams(audioStreams)
                 .setExtras(extras)
                 .setBackgroundAudioPower(backgroundAudioPower)
+                .setSpeakerId(speakerId)
                 .build();
     }
 
@@ -301,6 +314,7 @@
         assertThat(hotwordDetectedResult.getAudioStreams()).isNotNull();
         assertThat(hotwordDetectedResult.getExtras()).isNotNull();
         assertThat(hotwordDetectedResult.getBackgroundAudioPower()).isEqualTo(100);
+        assertThat(hotwordDetectedResult.getSpeakerId()).isEqualTo(1);
     }
 
     private static void assertHotwordAudioStream(HotwordAudioStream hotwordAudioStream,
diff --git a/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/VisualQueryDetectedResultTest.java b/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/VisualQueryDetectedResultTest.java
index 7df8ba2..3e98c66 100644
--- a/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/VisualQueryDetectedResultTest.java
+++ b/tests/tests/voiceinteraction/src/android/voiceinteraction/cts/unittests/VisualQueryDetectedResultTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.testng.Assert.assertThrows;
+
 import android.os.Parcel;
 import android.service.voice.VisualQueryDetectedResult;
 
@@ -32,16 +34,30 @@
     private static final String TEST_QUERY = "What time is it?";
 
     @Test
+    public void testVisualQueryDetectedResult_setInvalidSpeakerId() throws Exception {
+        assertThrows(IllegalArgumentException.class,
+                () -> new VisualQueryDetectedResult.Builder().setSpeakerId(-1).build());
+        assertThrows(IllegalArgumentException.class,
+                () -> new VisualQueryDetectedResult.Builder().setSpeakerId(
+                        VisualQueryDetectedResult.getMaxSpeakerId() + 1).build());
+    }
+
+    @Test
     public void testVisualQueryDetectedResultBuilder() throws Exception {
         final VisualQueryDetectedResult visualQueryDetectedResult =
-                buildVisualQueryDetectedResult(/* partialQuery= */ TEST_QUERY);
+                buildVisualQueryDetectedResult(
+                        /* partialQuery= */ TEST_QUERY,
+                        /* speakerId= */ 1);
         assertVisualQueryDetectedResult(visualQueryDetectedResult);
+
     }
 
     @Test
     public void testHotwordDetectedResultParcelizeDeparcelize() throws Exception {
         final VisualQueryDetectedResult visualQueryDetectedResult =
-                buildVisualQueryDetectedResult(/* partialQuery= */ TEST_QUERY);
+                buildVisualQueryDetectedResult(
+                        /* partialQuery= */ TEST_QUERY,
+                        /* speakerId= */ 1);
         final Parcel p = Parcel.obtain();
         visualQueryDetectedResult.writeToParcel(p, 0);
         p.setDataPosition(0);
@@ -52,14 +68,18 @@
         assertVisualQueryDetectedResult(targetVisualQueryDetectedResult);
     }
 
-    private VisualQueryDetectedResult buildVisualQueryDetectedResult(String partialQuery) {
+    private VisualQueryDetectedResult buildVisualQueryDetectedResult(
+            String partialQuery,
+            int speakerId) {
         return new VisualQueryDetectedResult.Builder()
                 .setPartialQuery(TEST_QUERY)
+                .setSpeakerId(speakerId)
                 .build();
     }
 
     private void assertVisualQueryDetectedResult(
             VisualQueryDetectedResult visualQueryDetectedResult) {
         assertThat(visualQueryDetectedResult.getPartialQuery()).isEqualTo(TEST_QUERY);
+        assertThat(visualQueryDetectedResult.getSpeakerId()).isEqualTo(1);
     }
 }