Merge "Add System Api impl for subsequent pairing."
diff --git a/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java b/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java
index bfe71cd..e65c27a 100644
--- a/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java
+++ b/nearby/tests/cts/fastpair/src/android/nearby/cts/FastPairDataProviderBaseTest.java
@@ -16,9 +16,8 @@
 
 package android.nearby.cts;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.verify;
@@ -74,7 +73,7 @@
             "CONNECT_SUCCESS_COMPANION_APP_INSTALLED";
     private static final String CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED =
             "CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED";
-    private static final double DELTA = 0.000001;
+    private static final float DELTA = 0.001f;
     private static final int DEVICE_TYPE = 7;
     private static final String DOWNLOAD_COMPANION_APP_DESCRIPTION =
             "DOWNLOAD_COMPANION_APP_DESCRIPTION";
@@ -193,18 +192,18 @@
             HAPPY_PATH_FAST_PAIR_ANTI_SPOOF_KEY_DEVICE_METADATA =
             genHappyPathFastPairAntispoofkeyDeviceMetadata();
 
-    private @Captor ArgumentCaptor<FastPairEligibleAccountParcel[]>
+    @Captor private ArgumentCaptor<FastPairEligibleAccountParcel[]>
             mFastPairEligibleAccountParcelsArgumentCaptor;
-    private @Captor ArgumentCaptor<FastPairAccountKeyDeviceMetadataParcel[]>
+    @Captor private ArgumentCaptor<FastPairAccountKeyDeviceMetadataParcel[]>
             mFastPairAccountKeyDeviceMetadataParcelsArgumentCaptor;
 
-    private @Mock FastPairDataProviderBase mMockFastPairDataProviderBase;
-    private @Mock IFastPairAntispoofkeyDeviceMetadataCallback.Stub
+    @Mock private FastPairDataProviderBase mMockFastPairDataProviderBase;
+    @Mock private IFastPairAntispoofkeyDeviceMetadataCallback.Stub
             mAntispoofkeyDeviceMetadataCallback;
-    private @Mock IFastPairAccountDevicesMetadataCallback.Stub mAccountDevicesMetadataCallback;
-    private @Mock IFastPairEligibleAccountsCallback.Stub mEligibleAccountsCallback;
-    private @Mock IFastPairManageAccountCallback.Stub mManageAccountCallback;
-    private @Mock IFastPairManageAccountDeviceCallback.Stub mManageAccountDeviceCallback;
+    @Mock private IFastPairAccountDevicesMetadataCallback.Stub mAccountDevicesMetadataCallback;
+    @Mock private IFastPairEligibleAccountsCallback.Stub mEligibleAccountsCallback;
+    @Mock private IFastPairManageAccountCallback.Stub mManageAccountCallback;
+    @Mock private IFastPairManageAccountDeviceCallback.Stub mManageAccountDeviceCallback;
 
     private MyHappyPathProvider mHappyPathFastPairDataProvider;
     private MyErrorPathProvider mErrorPathFastPairDataProvider;
@@ -773,13 +772,13 @@
     /* Verifies Happy Path AntispoofkeyDeviceMetadataRequest. */
     private static void ensureHappyPathAsExpected(
             FastPairDataProviderBase.FastPairAntispoofkeyDeviceMetadataRequest request) {
-        assertEquals(REQUEST_MODEL_ID, request.getModelId());
+        assertThat(request.getModelId()).isEqualTo(REQUEST_MODEL_ID);
     }
 
     /* Verifies Happy Path AccountDevicesMetadataRequest. */
     private static void ensureHappyPathAsExpected(
             FastPairDataProviderBase.FastPairAccountDevicesMetadataRequest request) {
-        assertEquals(ACCOUNTDEVICES_METADATA_ACCOUNT, request.getAccount());
+        assertThat(request.getAccount()).isEqualTo(ACCOUNTDEVICES_METADATA_ACCOUNT);
     }
 
     /* Verifies Happy Path FastPairEligibleAccountsRequest. */
@@ -792,32 +791,32 @@
     /* Verifies Happy Path FastPairManageAccountRequest. */
     private static void ensureHappyPathAsExpected(
             FastPairDataProviderBase.FastPairManageAccountRequest request) {
-        assertEquals(MANAGE_ACCOUNT, request.getAccount());
-        assertEquals(MANAGE_ACCOUNT_REQUEST_TYPE, request.getRequestType());
+        assertThat(request.getAccount()).isEqualTo(MANAGE_ACCOUNT);
+        assertThat(request.getRequestType()).isEqualTo(MANAGE_ACCOUNT_REQUEST_TYPE);
     }
 
     /* Verifies Happy Path FastPairManageAccountDeviceRequest. */
     private static void ensureHappyPathAsExpected(
             FastPairDataProviderBase.FastPairManageAccountDeviceRequest request) {
-        assertEquals(MANAGE_ACCOUNT, request.getAccount());
-        assertEquals(MANAGE_ACCOUNT_REQUEST_TYPE, request.getRequestType());
-        assertEquals(BLE_ADDRESS, request.getBleAddress());
+        assertThat(request.getAccount()).isEqualTo(MANAGE_ACCOUNT);
+        assertThat(request.getRequestType()).isEqualTo(MANAGE_ACCOUNT_REQUEST_TYPE);
+        assertThat(request.getBleAddress()).isEqualTo(BLE_ADDRESS);
         ensureHappyPathAsExpected(request.getAccountKeyDeviceMetadata());
     }
 
     /* Verifies Happy Path AntispoofkeyDeviceMetadataParcel. */
     private static void ensureHappyPathAsExpected(
             FastPairAntispoofkeyDeviceMetadataParcel metadataParcel) {
-        assertNotNull(metadataParcel);
-        assertEquals(ANTI_SPOOFING_KEY, metadataParcel.antiSpoofPublicKey);
+        assertThat(metadataParcel).isNotNull();
+        assertThat(metadataParcel.antiSpoofPublicKey).isEqualTo(ANTI_SPOOFING_KEY);
         ensureHappyPathAsExpected(metadataParcel.deviceMetadata);
     }
 
     /* Verifies Happy Path FastPairAccountKeyDeviceMetadataParcel[]. */
     private static void ensureHappyPathAsExpected(
             FastPairAccountKeyDeviceMetadataParcel[] metadataParcels) {
-        assertNotNull(metadataParcels);
-        assertEquals(ACCOUNTKEY_DEVICE_NUM, metadataParcels.length);
+        assertThat(metadataParcels).isNotNull();
+        assertThat(metadataParcels).hasLength(ACCOUNTKEY_DEVICE_NUM);
         for (FastPairAccountKeyDeviceMetadataParcel parcel: metadataParcels) {
             ensureHappyPathAsExpected(parcel);
         }
@@ -826,10 +825,10 @@
     /* Verifies Happy Path FastPairAccountKeyDeviceMetadataParcel. */
     private static void ensureHappyPathAsExpected(
             FastPairAccountKeyDeviceMetadataParcel metadataParcel) {
-        assertNotNull(metadataParcel);
-        assertEquals(ACCOUNT_KEY, metadataParcel.accountKey);
-        assertEquals(SHA256_ACCOUNT_KEY_PUBLIC_ADDRESS,
-                metadataParcel.sha256AccountKeyPublicAddress);
+        assertThat(metadataParcel).isNotNull();
+        assertThat(metadataParcel.accountKey).isEqualTo(ACCOUNT_KEY);
+        assertThat(metadataParcel.sha256AccountKeyPublicAddress)
+                .isEqualTo(SHA256_ACCOUNT_KEY_PUBLIC_ADDRESS);
         ensureHappyPathAsExpected(metadataParcel.metadata);
         ensureHappyPathAsExpected(metadataParcel.discoveryItem);
     }
@@ -837,191 +836,217 @@
     /* Verifies Happy Path FastPairAccountKeyDeviceMetadata. */
     private static void ensureHappyPathAsExpected(
             FastPairAccountKeyDeviceMetadata metadata) {
-        assertEquals(ACCOUNT_KEY, metadata.getAccountKey());
-        assertEquals(SHA256_ACCOUNT_KEY_PUBLIC_ADDRESS,
-                metadata.getSha256AccountKeyPublicAddress());
+        assertThat(metadata.getAccountKey()).isEqualTo(ACCOUNT_KEY);
+        assertThat(metadata.getSha256AccountKeyPublicAddress())
+                .isEqualTo(SHA256_ACCOUNT_KEY_PUBLIC_ADDRESS);
         ensureHappyPathAsExpected(metadata.getFastPairDeviceMetadata());
         ensureHappyPathAsExpected(metadata.getFastPairDiscoveryItem());
     }
 
     /* Verifies Happy Path DeviceMetadataParcel. */
     private static void ensureHappyPathAsExpected(FastPairDeviceMetadataParcel metadataParcel) {
-        assertNotNull(metadataParcel);
-        assertEquals(ASSISTANT_SETUP_HALFSHEET, metadataParcel.assistantSetupHalfSheet);
-        assertEquals(ASSISTANT_SETUP_NOTIFICATION, metadataParcel.assistantSetupNotification);
-        assertEquals(BLE_TX_POWER, metadataParcel.bleTxPower);
-        assertEquals(CONFIRM_PIN_DESCRIPTION, metadataParcel.confirmPinDescription);
-        assertEquals(CONFIRM_PIN_TITLE, metadataParcel.confirmPinTitle);
-        assertEquals(CONNECT_SUCCESS_COMPANION_APP_INSTALLED,
-                metadataParcel.connectSuccessCompanionAppInstalled);
-        assertEquals(CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED,
-                metadataParcel.connectSuccessCompanionAppNotInstalled);
-        assertEquals(DEVICE_TYPE, metadataParcel.deviceType);
-        assertEquals(DOWNLOAD_COMPANION_APP_DESCRIPTION,
-                metadataParcel.downloadCompanionAppDescription);
-        assertEquals(FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION,
-                metadataParcel.failConnectGoToSettingsDescription);
-        assertEquals(FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION,
-                metadataParcel.fastPairTvConnectDeviceNoAccountDescription);
-        assertArrayEquals(IMAGE, metadataParcel.image);
-        assertEquals(IMAGE_URL, metadataParcel.imageUrl);
-        assertEquals(INITIAL_NOTIFICATION_DESCRIPTION,
-                metadataParcel.initialNotificationDescription);
-        assertEquals(INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT,
-                metadataParcel.initialNotificationDescriptionNoAccount);
-        assertEquals(INITIAL_PAIRING_DESCRIPTION, metadataParcel.initialPairingDescription);
-        assertEquals(INTENT_URI, metadataParcel.intentUri);
-        assertEquals(LOCALE, metadataParcel.locale);
-        assertEquals(OPEN_COMPANION_APP_DESCRIPTION, metadataParcel.openCompanionAppDescription);
-        assertEquals(RETRO_ACTIVE_PAIRING_DESCRIPTION,
-                metadataParcel.retroactivePairingDescription);
-        assertEquals(SUBSEQUENT_PAIRING_DESCRIPTION, metadataParcel.subsequentPairingDescription);
-        assertEquals(SYNC_CONTACT_DESCRPTION, metadataParcel.syncContactsDescription);
-        assertEquals(SYNC_CONTACTS_TITLE, metadataParcel.syncContactsTitle);
-        assertEquals(SYNC_SMS_DESCRIPTION, metadataParcel.syncSmsDescription);
-        assertEquals(SYNC_SMS_TITLE, metadataParcel.syncSmsTitle);
-        assertEquals(TRIGGER_DISTANCE, metadataParcel.triggerDistance, DELTA);
-        assertEquals(TRUE_WIRELESS_IMAGE_URL_CASE, metadataParcel.trueWirelessImageUrlCase);
-        assertEquals(TRUE_WIRELESS_IMAGE_URL_LEFT_BUD, metadataParcel.trueWirelessImageUrlLeftBud);
-        assertEquals(TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD,
-                metadataParcel.trueWirelessImageUrlRightBud);
-        assertEquals(UNABLE_TO_CONNECT_DESCRIPTION, metadataParcel.unableToConnectDescription);
-        assertEquals(UNABLE_TO_CONNECT_TITLE, metadataParcel.unableToConnectTitle);
-        assertEquals(UPDATE_COMPANION_APP_DESCRIPTION,
-                metadataParcel.updateCompanionAppDescription);
-        assertEquals(WAIT_LAUNCH_COMPANION_APP_DESCRIPTION,
-                metadataParcel.waitLaunchCompanionAppDescription);
+        assertThat(metadataParcel).isNotNull();
+
+        assertThat(metadataParcel.assistantSetupHalfSheet).isEqualTo(ASSISTANT_SETUP_HALFSHEET);
+        assertThat(metadataParcel.assistantSetupNotification).isEqualTo(
+                ASSISTANT_SETUP_NOTIFICATION);
+
+        assertThat(metadataParcel.bleTxPower).isEqualTo(BLE_TX_POWER);
+
+        assertThat(metadataParcel.confirmPinDescription).isEqualTo(CONFIRM_PIN_DESCRIPTION);
+        assertThat(metadataParcel.confirmPinTitle).isEqualTo(CONFIRM_PIN_TITLE);
+        assertThat(metadataParcel.connectSuccessCompanionAppInstalled).isEqualTo(
+                CONNECT_SUCCESS_COMPANION_APP_INSTALLED);
+        assertThat(metadataParcel.connectSuccessCompanionAppNotInstalled).isEqualTo(
+                CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED);
+
+        assertThat(metadataParcel.deviceType).isEqualTo(DEVICE_TYPE);
+        assertThat(metadataParcel.downloadCompanionAppDescription).isEqualTo(
+                DOWNLOAD_COMPANION_APP_DESCRIPTION);
+
+        assertThat(metadataParcel.failConnectGoToSettingsDescription).isEqualTo(
+                FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION);
+        assertThat(metadataParcel.fastPairTvConnectDeviceNoAccountDescription).isEqualTo(
+                FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION);
+
+        assertThat(metadataParcel.image).isEqualTo(IMAGE);
+        assertThat(metadataParcel.imageUrl).isEqualTo(IMAGE_URL);
+        assertThat(metadataParcel.initialNotificationDescription).isEqualTo(
+                INITIAL_NOTIFICATION_DESCRIPTION);
+        assertThat(metadataParcel.initialNotificationDescriptionNoAccount).isEqualTo(
+                INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT);
+        assertThat(metadataParcel.initialPairingDescription).isEqualTo(INITIAL_PAIRING_DESCRIPTION);
+        assertThat(metadataParcel.intentUri).isEqualTo(INTENT_URI);
+
+        assertThat(metadataParcel.locale).isEqualTo(LOCALE);
+
+        assertThat(metadataParcel.openCompanionAppDescription).isEqualTo(
+                OPEN_COMPANION_APP_DESCRIPTION);
+
+        assertThat(metadataParcel.retroactivePairingDescription).isEqualTo(
+                RETRO_ACTIVE_PAIRING_DESCRIPTION);
+
+        assertThat(metadataParcel.subsequentPairingDescription).isEqualTo(
+                SUBSEQUENT_PAIRING_DESCRIPTION);
+        assertThat(metadataParcel.syncContactsDescription).isEqualTo(SYNC_CONTACT_DESCRPTION);
+        assertThat(metadataParcel.syncContactsTitle).isEqualTo(SYNC_CONTACTS_TITLE);
+        assertThat(metadataParcel.syncSmsDescription).isEqualTo(SYNC_SMS_DESCRIPTION);
+        assertThat(metadataParcel.syncSmsTitle).isEqualTo(SYNC_SMS_TITLE);
+
+        assertThat(metadataParcel.triggerDistance).isWithin(DELTA).of(TRIGGER_DISTANCE);
+        assertThat(metadataParcel.trueWirelessImageUrlCase).isEqualTo(TRUE_WIRELESS_IMAGE_URL_CASE);
+        assertThat(metadataParcel.trueWirelessImageUrlLeftBud).isEqualTo(
+                TRUE_WIRELESS_IMAGE_URL_LEFT_BUD);
+        assertThat(metadataParcel.trueWirelessImageUrlRightBud).isEqualTo(
+                TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD);
+
+        assertThat(metadataParcel.unableToConnectDescription).isEqualTo(
+                UNABLE_TO_CONNECT_DESCRIPTION);
+        assertThat(metadataParcel.unableToConnectTitle).isEqualTo(UNABLE_TO_CONNECT_TITLE);
+        assertThat(metadataParcel.updateCompanionAppDescription).isEqualTo(
+                UPDATE_COMPANION_APP_DESCRIPTION);
+
+        assertThat(metadataParcel.waitLaunchCompanionAppDescription).isEqualTo(
+                WAIT_LAUNCH_COMPANION_APP_DESCRIPTION);
     }
 
     /* Verifies Happy Path DeviceMetadata. */
     private static void ensureHappyPathAsExpected(FastPairDeviceMetadata metadata) {
-        assertEquals(ASSISTANT_SETUP_HALFSHEET, metadata.getAssistantSetupHalfSheet());
-        assertEquals(ASSISTANT_SETUP_NOTIFICATION, metadata.getAssistantSetupNotification());
-        assertEquals(BLE_TX_POWER, metadata.getBleTxPower());
-        assertEquals(CONFIRM_PIN_DESCRIPTION, metadata.getConfirmPinDescription());
-        assertEquals(CONFIRM_PIN_TITLE, metadata.getConfirmPinTitle());
-        assertEquals(CONNECT_SUCCESS_COMPANION_APP_INSTALLED,
-                metadata.getConnectSuccessCompanionAppInstalled());
-        assertEquals(CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED,
-                metadata.getConnectSuccessCompanionAppNotInstalled());
-        assertEquals(DEVICE_TYPE, metadata.getDeviceType());
-        assertEquals(DOWNLOAD_COMPANION_APP_DESCRIPTION,
-                metadata.getDownloadCompanionAppDescription());
-        assertEquals(FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION,
-                metadata.getFailConnectGoToSettingsDescription());
-        assertEquals(FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION,
-                metadata.getFastPairTvConnectDeviceNoAccountDescription());
-        assertArrayEquals(IMAGE, metadata.getImage());
-        assertEquals(IMAGE_URL, metadata.getImageUrl());
-        assertEquals(INITIAL_NOTIFICATION_DESCRIPTION,
-                metadata.getInitialNotificationDescription());
-        assertEquals(INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT,
-                metadata.getInitialNotificationDescriptionNoAccount());
-        assertEquals(INITIAL_PAIRING_DESCRIPTION, metadata.getInitialPairingDescription());
-        assertEquals(INTENT_URI, metadata.getIntentUri());
-        assertEquals(LOCALE, metadata.getLocale());
-        assertEquals(OPEN_COMPANION_APP_DESCRIPTION, metadata.getOpenCompanionAppDescription());
-        assertEquals(RETRO_ACTIVE_PAIRING_DESCRIPTION,
-                metadata.getRetroactivePairingDescription());
-        assertEquals(SUBSEQUENT_PAIRING_DESCRIPTION, metadata.getSubsequentPairingDescription());
-        assertEquals(SYNC_CONTACT_DESCRPTION, metadata.getSyncContactsDescription());
-        assertEquals(SYNC_CONTACTS_TITLE, metadata.getSyncContactsTitle());
-        assertEquals(SYNC_SMS_DESCRIPTION, metadata.getSyncSmsDescription());
-        assertEquals(SYNC_SMS_TITLE, metadata.getSyncSmsTitle());
-        assertEquals(TRIGGER_DISTANCE, metadata.getTriggerDistance(), DELTA);
-        assertEquals(TRUE_WIRELESS_IMAGE_URL_CASE, metadata.getTrueWirelessImageUrlCase());
-        assertEquals(TRUE_WIRELESS_IMAGE_URL_LEFT_BUD, metadata.getTrueWirelessImageUrlLeftBud());
-        assertEquals(TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD,
-                metadata.getTrueWirelessImageUrlRightBud());
-        assertEquals(UNABLE_TO_CONNECT_DESCRIPTION, metadata.getUnableToConnectDescription());
-        assertEquals(UNABLE_TO_CONNECT_TITLE, metadata.getUnableToConnectTitle());
-        assertEquals(UPDATE_COMPANION_APP_DESCRIPTION,
-                metadata.getUpdateCompanionAppDescription());
-        assertEquals(WAIT_LAUNCH_COMPANION_APP_DESCRIPTION,
-                metadata.getWaitLaunchCompanionAppDescription());
+        assertThat(metadata.getAssistantSetupHalfSheet()).isEqualTo(ASSISTANT_SETUP_HALFSHEET);
+        assertThat(metadata.getAssistantSetupNotification())
+                .isEqualTo(ASSISTANT_SETUP_NOTIFICATION);
+        assertThat(metadata.getBleTxPower()).isEqualTo(BLE_TX_POWER);
+        assertThat(metadata.getConfirmPinDescription()).isEqualTo(CONFIRM_PIN_DESCRIPTION);
+        assertThat(metadata.getConfirmPinTitle()).isEqualTo(CONFIRM_PIN_TITLE);
+        assertThat(metadata.getConnectSuccessCompanionAppInstalled())
+                .isEqualTo(CONNECT_SUCCESS_COMPANION_APP_INSTALLED);
+        assertThat(metadata.getConnectSuccessCompanionAppNotInstalled())
+                .isEqualTo(CONNECT_SUCCESS_COMPANION_APP_NOT_INSTALLED);
+        assertThat(metadata.getDeviceType()).isEqualTo(DEVICE_TYPE);
+        assertThat(metadata.getDownloadCompanionAppDescription())
+                .isEqualTo(DOWNLOAD_COMPANION_APP_DESCRIPTION);
+        assertThat(metadata.getFailConnectGoToSettingsDescription())
+                .isEqualTo(FAIL_CONNECT_GOTO_SETTINGS_DESCRIPTION);
+        assertThat(metadata.getFastPairTvConnectDeviceNoAccountDescription())
+                .isEqualTo(FAST_PAIR_TV_CONNECT_DEVICE_NO_ACCOUNT_DESCRIPTION);
+        assertThat(metadata.getImage()).isEqualTo(IMAGE);
+        assertThat(metadata.getImageUrl()).isEqualTo(IMAGE_URL);
+        assertThat(metadata.getInitialNotificationDescription())
+                .isEqualTo(INITIAL_NOTIFICATION_DESCRIPTION);
+        assertThat(metadata.getInitialNotificationDescriptionNoAccount())
+                .isEqualTo(INITIAL_NOTIFICATION_DESCRIPTION_NO_ACCOUNT);
+        assertThat(metadata.getInitialPairingDescription()).isEqualTo(INITIAL_PAIRING_DESCRIPTION);
+        assertThat(metadata.getIntentUri()).isEqualTo(INTENT_URI);
+        assertThat(metadata.getLocale()).isEqualTo(LOCALE);
+        assertThat(metadata.getOpenCompanionAppDescription())
+                .isEqualTo(OPEN_COMPANION_APP_DESCRIPTION);
+        assertThat(metadata.getRetroactivePairingDescription())
+                .isEqualTo(RETRO_ACTIVE_PAIRING_DESCRIPTION);
+        assertThat(metadata.getSubsequentPairingDescription())
+                .isEqualTo(SUBSEQUENT_PAIRING_DESCRIPTION);
+        assertThat(metadata.getSyncContactsDescription()).isEqualTo(SYNC_CONTACT_DESCRPTION);
+        assertThat(metadata.getSyncContactsTitle()).isEqualTo(SYNC_CONTACTS_TITLE);
+        assertThat(metadata.getSyncSmsDescription()).isEqualTo(SYNC_SMS_DESCRIPTION);
+        assertThat(metadata.getSyncSmsTitle()).isEqualTo(SYNC_SMS_TITLE);
+        assertThat(metadata.getTriggerDistance()).isWithin(DELTA).of(TRIGGER_DISTANCE);
+        assertThat(metadata.getTrueWirelessImageUrlCase()).isEqualTo(TRUE_WIRELESS_IMAGE_URL_CASE);
+        assertThat(metadata.getTrueWirelessImageUrlLeftBud())
+                .isEqualTo(TRUE_WIRELESS_IMAGE_URL_LEFT_BUD);
+        assertThat(metadata.getTrueWirelessImageUrlRightBud())
+                .isEqualTo(TRUE_WIRELESS_IMAGE_URL_RIGHT_BUD);
+        assertThat(metadata.getUnableToConnectDescription())
+                .isEqualTo(UNABLE_TO_CONNECT_DESCRIPTION);
+        assertThat(metadata.getUnableToConnectTitle()).isEqualTo(UNABLE_TO_CONNECT_TITLE);
+        assertThat(metadata.getUpdateCompanionAppDescription())
+                .isEqualTo(UPDATE_COMPANION_APP_DESCRIPTION);
+        assertThat(metadata.getWaitLaunchCompanionAppDescription())
+                .isEqualTo(WAIT_LAUNCH_COMPANION_APP_DESCRIPTION);
     }
 
     /* Verifies Happy Path FastPairDiscoveryItemParcel. */
     private static void ensureHappyPathAsExpected(FastPairDiscoveryItemParcel itemParcel) {
-        assertEquals(ACTION_URL, itemParcel.actionUrl);
-        assertEquals(ACTION_URL_TYPE, itemParcel.actionUrlType);
-        assertEquals(APP_NAME, itemParcel.appName);
-        assertEquals(ATTACHMENT_TYPE, itemParcel.attachmentType);
-        assertArrayEquals(AUTHENTICATION_PUBLIC_KEY_SEC_P256R1,
-                itemParcel.authenticationPublicKeySecp256r1);
-        assertArrayEquals(BLE_RECORD_BYTES, itemParcel.bleRecordBytes);
-        assertEquals(DEBUG_CATEGORY, itemParcel.debugCategory);
-        assertEquals(DEBUG_MESSAGE, itemParcel.debugMessage);
-        assertEquals(DESCRIPTION, itemParcel.description);
-        assertEquals(DEVICE_NAME, itemParcel.deviceName);
-        assertEquals(DISPLAY_URL, itemParcel.displayUrl);
-        assertEquals(ENTITY_ID, itemParcel.entityId);
-        assertEquals(FEATURE_GRAPHIC_URL, itemParcel.featureGraphicUrl);
-        assertEquals(FIRST_OBSERVATION_TIMESTAMP_MILLIS,
-                itemParcel.firstObservationTimestampMillis);
-        assertEquals(GROUP_ID, itemParcel.groupId);
-        assertEquals(ICON_FIFE_URL, itemParcel.iconFifeUrl);
-        assertEquals(ICON_PNG, itemParcel.iconPng);
-        assertEquals(ID, itemParcel.id);
-        assertEquals(LAST_OBSERVATION_TIMESTAMP_MILLIS, itemParcel.lastObservationTimestampMillis);
-        assertEquals(LAST_USER_EXPERIENCE, itemParcel.lastUserExperience);
-        assertEquals(LOST_MILLIS, itemParcel.lostMillis);
-        assertEquals(MAC_ADDRESS, itemParcel.macAddress);
-        assertEquals(PACKAGE_NAME, itemParcel.packageName);
-        assertEquals(PENDING_APP_INSTALL_TIMESTAMP_MILLIS,
-                itemParcel.pendingAppInstallTimestampMillis);
-        assertEquals(RSSI, itemParcel.rssi);
-        assertEquals(STATE, itemParcel.state);
-        assertEquals(TITLE, itemParcel.title);
-        assertEquals(TRIGGER_ID, itemParcel.triggerId);
-        assertEquals(TX_POWER, itemParcel.txPower);
-        assertEquals(TYPE, itemParcel.type);
+        assertThat(itemParcel.actionUrl).isEqualTo(ACTION_URL);
+        assertThat(itemParcel.actionUrlType).isEqualTo(ACTION_URL_TYPE);
+        assertThat(itemParcel.appName).isEqualTo(APP_NAME);
+        assertThat(itemParcel.attachmentType).isEqualTo(ATTACHMENT_TYPE);
+        assertThat(itemParcel.authenticationPublicKeySecp256r1)
+                .isEqualTo(AUTHENTICATION_PUBLIC_KEY_SEC_P256R1);
+        assertThat(itemParcel.bleRecordBytes).isEqualTo(BLE_RECORD_BYTES);
+        assertThat(itemParcel.debugCategory).isEqualTo(DEBUG_CATEGORY);
+        assertThat(itemParcel.debugMessage).isEqualTo(DEBUG_MESSAGE);
+        assertThat(itemParcel.description).isEqualTo(DESCRIPTION);
+        assertThat(itemParcel.deviceName).isEqualTo(DEVICE_NAME);
+        assertThat(itemParcel.displayUrl).isEqualTo(DISPLAY_URL);
+        assertThat(itemParcel.entityId).isEqualTo(ENTITY_ID);
+        assertThat(itemParcel.featureGraphicUrl).isEqualTo(FEATURE_GRAPHIC_URL);
+        assertThat(itemParcel.firstObservationTimestampMillis)
+                .isEqualTo(FIRST_OBSERVATION_TIMESTAMP_MILLIS);
+        assertThat(itemParcel.groupId).isEqualTo(GROUP_ID);
+        assertThat(itemParcel.iconFifeUrl).isEqualTo(ICON_FIFE_URL);
+        assertThat(itemParcel.iconPng).isEqualTo(ICON_PNG);
+        assertThat(itemParcel.id).isEqualTo(ID);
+        assertThat(itemParcel.lastObservationTimestampMillis)
+                .isEqualTo(LAST_OBSERVATION_TIMESTAMP_MILLIS);
+        assertThat(itemParcel.lastUserExperience).isEqualTo(LAST_USER_EXPERIENCE);
+        assertThat(itemParcel.lostMillis).isEqualTo(LOST_MILLIS);
+        assertThat(itemParcel.macAddress).isEqualTo(MAC_ADDRESS);
+        assertThat(itemParcel.packageName).isEqualTo(PACKAGE_NAME);
+        assertThat(itemParcel.pendingAppInstallTimestampMillis)
+                .isEqualTo(PENDING_APP_INSTALL_TIMESTAMP_MILLIS);
+        assertThat(itemParcel.rssi).isEqualTo(RSSI);
+        assertThat(itemParcel.state).isEqualTo(STATE);
+        assertThat(itemParcel.title).isEqualTo(TITLE);
+        assertThat(itemParcel.triggerId).isEqualTo(TRIGGER_ID);
+        assertThat(itemParcel.txPower).isEqualTo(TX_POWER);
+        assertThat(itemParcel.type).isEqualTo(TYPE);
     }
 
     /* Verifies Happy Path FastPairDiscoveryItem. */
     private static void ensureHappyPathAsExpected(FastPairDiscoveryItem item) {
-        assertEquals(ACTION_URL, item.getActionUrl());
-        assertEquals(ACTION_URL_TYPE, item.getActionUrlType());
-        assertEquals(APP_NAME, item.getAppName());
-        assertEquals(ATTACHMENT_TYPE, item.getAttachmentType());
-        assertArrayEquals(AUTHENTICATION_PUBLIC_KEY_SEC_P256R1,
-                item.getAuthenticationPublicKeySecp256r1());
-        assertArrayEquals(BLE_RECORD_BYTES, item.getBleRecordBytes());
-        assertEquals(DEBUG_CATEGORY, item.getDebugCategory());
-        assertEquals(DEBUG_MESSAGE, item.getDebugMessage());
-        assertEquals(DESCRIPTION, item.getDescription());
-        assertEquals(DEVICE_NAME, item.getDeviceName());
-        assertEquals(DISPLAY_URL, item.getDisplayUrl());
-        assertEquals(ENTITY_ID, item.getEntityId());
-        assertEquals(FEATURE_GRAPHIC_URL, item.getFeatureGraphicUrl());
-        assertEquals(FIRST_OBSERVATION_TIMESTAMP_MILLIS,
-                item.getFirstObservationTimestampMillis());
-        assertEquals(GROUP_ID, item.getGroupId());
-        assertEquals(ICON_FIFE_URL, item.getIconFfeUrl());
-        assertEquals(ICON_PNG, item.getIconPng());
-        assertEquals(ID, item.getId());
-        assertEquals(LAST_OBSERVATION_TIMESTAMP_MILLIS, item.getLastObservationTimestampMillis());
-        assertEquals(LAST_USER_EXPERIENCE, item.getLastUserExperience());
-        assertEquals(LOST_MILLIS, item.getLostMillis());
-        assertEquals(MAC_ADDRESS, item.getMacAddress());
-        assertEquals(PACKAGE_NAME, item.getPackageName());
-        assertEquals(PENDING_APP_INSTALL_TIMESTAMP_MILLIS,
-                item.getPendingAppInstallTimestampMillis());
-        assertEquals(RSSI, item.getRssi());
-        assertEquals(STATE, item.getState());
-        assertEquals(TITLE, item.getTitle());
-        assertEquals(TRIGGER_ID, item.getTriggerId());
-        assertEquals(TX_POWER, item.getTxPower());
-        assertEquals(TYPE, item.getType());
+        assertThat(item.getActionUrl()).isEqualTo(ACTION_URL);
+        assertThat(item.getActionUrlType()).isEqualTo(ACTION_URL_TYPE);
+        assertThat(item.getAppName()).isEqualTo(APP_NAME);
+        assertThat(item.getAttachmentType()).isEqualTo(ATTACHMENT_TYPE);
+        assertThat(item.getAuthenticationPublicKeySecp256r1())
+                .isEqualTo(AUTHENTICATION_PUBLIC_KEY_SEC_P256R1);
+        assertThat(item.getBleRecordBytes()).isEqualTo(BLE_RECORD_BYTES);
+        assertThat(item.getDebugCategory()).isEqualTo(DEBUG_CATEGORY);
+        assertThat(item.getDebugMessage()).isEqualTo(DEBUG_MESSAGE);
+        assertThat(item.getDescription()).isEqualTo(DESCRIPTION);
+        assertThat(item.getDeviceName()).isEqualTo(DEVICE_NAME);
+        assertThat(item.getDisplayUrl()).isEqualTo(DISPLAY_URL);
+        assertThat(item.getEntityId()).isEqualTo(ENTITY_ID);
+        assertThat(item.getFeatureGraphicUrl()).isEqualTo(FEATURE_GRAPHIC_URL);
+        assertThat(item.getFirstObservationTimestampMillis())
+                .isEqualTo(FIRST_OBSERVATION_TIMESTAMP_MILLIS);
+        assertThat(item.getGroupId()).isEqualTo(GROUP_ID);
+        assertThat(item.getIconFfeUrl()).isEqualTo(ICON_FIFE_URL);
+        assertThat(item.getIconPng()).isEqualTo(ICON_PNG);
+        assertThat(item.getId()).isEqualTo(ID);
+        assertThat(item.getLastObservationTimestampMillis())
+                .isEqualTo(LAST_OBSERVATION_TIMESTAMP_MILLIS);
+        assertThat(item.getLastUserExperience()).isEqualTo(LAST_USER_EXPERIENCE);
+        assertThat(item.getLostMillis()).isEqualTo(LOST_MILLIS);
+        assertThat(item.getMacAddress()).isEqualTo(MAC_ADDRESS);
+        assertThat(item.getPackageName()).isEqualTo(PACKAGE_NAME);
+        assertThat(item.getPendingAppInstallTimestampMillis())
+                .isEqualTo(PENDING_APP_INSTALL_TIMESTAMP_MILLIS);
+        assertThat(item.getRssi()).isEqualTo(RSSI);
+        assertThat(item.getState()).isEqualTo(STATE);
+        assertThat(item.getTitle()).isEqualTo(TITLE);
+        assertThat(item.getTriggerId()).isEqualTo(TRIGGER_ID);
+        assertThat(item.getTxPower()).isEqualTo(TX_POWER);
+        assertThat(item.getType()).isEqualTo(TYPE);
     }
 
     /* Verifies Happy Path EligibleAccountParcel[]. */
     private static void ensureHappyPathAsExpected(FastPairEligibleAccountParcel[] accountsParcel) {
-        assertEquals(ELIGIBLE_ACCOUNTS_NUM, accountsParcel.length);
-        assertEquals(ELIGIBLE_ACCOUNT_1, accountsParcel[0].account);
-        assertEquals(ELIGIBLE_ACCOUNT_1_OPT_IN, accountsParcel[0].optIn);
+        assertThat(accountsParcel).hasLength(ELIGIBLE_ACCOUNTS_NUM);
 
-        assertEquals(ELIGIBLE_ACCOUNT_2, accountsParcel[1].account);
-        assertEquals(ELIGIBLE_ACCOUNT_2_OPT_IN, accountsParcel[1].optIn);
+        assertThat(accountsParcel[0].account).isEqualTo(ELIGIBLE_ACCOUNT_1);
+        assertThat(accountsParcel[0].optIn).isEqualTo(ELIGIBLE_ACCOUNT_1_OPT_IN);
+
+        assertThat(accountsParcel[1].account).isEqualTo(ELIGIBLE_ACCOUNT_2);
+        assertThat(accountsParcel[1].optIn).isEqualTo(ELIGIBLE_ACCOUNT_2_OPT_IN);
     }
 }