diff options
author | Yu Shan <shanyu@google.com> | 2021-12-02 18:07:44 -0800 |
---|---|---|
committer | Yu Shan <shanyu@google.com> | 2022-01-25 11:19:27 -0800 |
commit | 8801d129b6300828e83a60789be1f6fec7097340 (patch) | |
tree | 395432b9708e5e65760477ba31224931bb43522d /tests/carservice_unit_test/src | |
parent | 0ce959fb408b4d3eb081632e4e894f5392d67634 (diff) | |
download | Car-8801d129b6300828e83a60789be1f6fec7097340.tar.gz |
Migrate UserHal and CarShellCommand to AIDL type.
Migrate UserHal to new AIDL types. CarShellCommand is using UserHal
so migrate it as well. No logic change in this CL.
Test: atest CarServiceUnitTest:com.android.car.user
atest CarServiceTest
Bug: 205774940
Change-Id: I17bd554046df006c128ea855b17c27f1cad3dad2
Diffstat (limited to 'tests/carservice_unit_test/src')
8 files changed, 1078 insertions, 824 deletions
diff --git a/tests/carservice_unit_test/src/com/android/car/hal/ClusterHalServiceTest.java b/tests/carservice_unit_test/src/com/android/car/hal/ClusterHalServiceTest.java index 3b4e5e35e0..be5495925d 100644 --- a/tests/carservice_unit_test/src/com/android/car/hal/ClusterHalServiceTest.java +++ b/tests/carservice_unit_test/src/com/android/car/hal/ClusterHalServiceTest.java @@ -21,9 +21,9 @@ import static android.car.VehiclePropertyIds.CLUSTER_NAVIGATION_STATE; import static android.car.VehiclePropertyIds.CLUSTER_REPORT_STATE; import static android.car.VehiclePropertyIds.CLUSTER_REQUEST_DISPLAY; import static android.car.VehiclePropertyIds.CLUSTER_SWITCH_UI; -import static android.car.test.util.VehicleHalTestingHelper.newSubscribableConfig; import static com.android.car.hal.ClusterHalService.DONT_CARE; +import static com.android.car.hal.VehicleHalTestingHelper.newSubscribableConfig; import static com.google.common.truth.Truth.assertThat; @@ -101,20 +101,16 @@ public class ClusterHalServiceTest { return intValues; } - private static HalPropConfig newSubscribablePropConfig(int prop) { - return new AidlHalPropConfig(newSubscribableConfig(prop)); - } - @Before public void setUp() { when(mVehicleHal.getHalPropValueBuilder()).thenReturn(PROP_VALUE_BUILDER); mClusterHalService = new ClusterHalService(mVehicleHal); mClusterHalService.takeProperties(Arrays.asList( - newSubscribablePropConfig(CLUSTER_SWITCH_UI), - newSubscribablePropConfig(CLUSTER_DISPLAY_STATE), - newSubscribablePropConfig(CLUSTER_REPORT_STATE), - newSubscribablePropConfig(CLUSTER_REQUEST_DISPLAY), - newSubscribablePropConfig(CLUSTER_NAVIGATION_STATE))); + newSubscribableConfig(CLUSTER_SWITCH_UI), + newSubscribableConfig(CLUSTER_DISPLAY_STATE), + newSubscribableConfig(CLUSTER_REPORT_STATE), + newSubscribableConfig(CLUSTER_REQUEST_DISPLAY), + newSubscribableConfig(CLUSTER_NAVIGATION_STATE))); mClusterHalService.init(); mClusterHalService.setCallback(mHalEventListener); @@ -143,9 +139,9 @@ public class ClusterHalServiceTest { @Test public void testTakeProperties_doNotTakePartialProperties() { mClusterHalService.takeProperties(Arrays.asList( - newSubscribablePropConfig(CLUSTER_SWITCH_UI), - newSubscribablePropConfig(CLUSTER_DISPLAY_STATE), - newSubscribablePropConfig(CLUSTER_REPORT_STATE))); + newSubscribableConfig(CLUSTER_SWITCH_UI), + newSubscribableConfig(CLUSTER_DISPLAY_STATE), + newSubscribableConfig(CLUSTER_REPORT_STATE))); assertThat(mClusterHalService.isCoreSupported()).isFalse(); assertThat(mClusterHalService.isNavigationStateSupported()).isFalse(); } @@ -153,10 +149,10 @@ public class ClusterHalServiceTest { @Test public void testTakeProperties_coreProperties() { mClusterHalService.takeProperties(Arrays.asList( - newSubscribablePropConfig(CLUSTER_SWITCH_UI), - newSubscribablePropConfig(CLUSTER_DISPLAY_STATE), - newSubscribablePropConfig(CLUSTER_REPORT_STATE), - newSubscribablePropConfig(CLUSTER_REQUEST_DISPLAY))); + newSubscribableConfig(CLUSTER_SWITCH_UI), + newSubscribableConfig(CLUSTER_DISPLAY_STATE), + newSubscribableConfig(CLUSTER_REPORT_STATE), + newSubscribableConfig(CLUSTER_REQUEST_DISPLAY))); assertThat(mClusterHalService.isCoreSupported()).isTrue(); assertThat(mClusterHalService.isNavigationStateSupported()).isFalse(); } @@ -164,11 +160,11 @@ public class ClusterHalServiceTest { @Test public void testTakeProperties_fullProperties() { mClusterHalService.takeProperties(Arrays.asList( - newSubscribablePropConfig(CLUSTER_SWITCH_UI), - newSubscribablePropConfig(CLUSTER_DISPLAY_STATE), - newSubscribablePropConfig(CLUSTER_REPORT_STATE), - newSubscribablePropConfig(CLUSTER_REQUEST_DISPLAY), - newSubscribablePropConfig(CLUSTER_NAVIGATION_STATE))); + newSubscribableConfig(CLUSTER_SWITCH_UI), + newSubscribableConfig(CLUSTER_DISPLAY_STATE), + newSubscribableConfig(CLUSTER_REPORT_STATE), + newSubscribableConfig(CLUSTER_REQUEST_DISPLAY), + newSubscribableConfig(CLUSTER_NAVIGATION_STATE))); assertThat(mClusterHalService.isCoreSupported()).isTrue(); assertThat(mClusterHalService.isNavigationStateSupported()).isTrue(); } diff --git a/tests/carservice_unit_test/src/com/android/car/hal/TimeHalServiceTest.java b/tests/carservice_unit_test/src/com/android/car/hal/TimeHalServiceTest.java index f9f56e9f63..940070ea9e 100644 --- a/tests/carservice_unit_test/src/com/android/car/hal/TimeHalServiceTest.java +++ b/tests/carservice_unit_test/src/com/android/car/hal/TimeHalServiceTest.java @@ -30,7 +30,6 @@ import static org.mockito.Mockito.when; import android.app.time.ExternalTimeSuggestion; import android.app.time.TimeManager; import android.car.test.util.FakeContext; -import android.car.test.util.VehicleHalTestingHelper; import android.content.Intent; import android.content.res.Resources; import android.hardware.automotive.vehicle.V2_0.VehicleArea; diff --git a/tests/carservice_unit_test/src/com/android/car/hal/UserHalHelperTest.java b/tests/carservice_unit_test/src/com/android/car/hal/UserHalHelperTest.java index 952fa75b5a..8c9c34c43e 100644 --- a/tests/carservice_unit_test/src/com/android/car/hal/UserHalHelperTest.java +++ b/tests/carservice_unit_test/src/com/android/car/hal/UserHalHelperTest.java @@ -18,20 +18,21 @@ package com.android.car.hal; import static android.car.test.mocks.AndroidMockitoHelper.mockAmGetCurrentUser; import static android.car.test.mocks.AndroidMockitoHelper.mockUmGetUserHandles; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.DISASSOCIATE_ALL_USERS; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.DISASSOCIATE_CURRENT_USER; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_1; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_2; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_3; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_4; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.KEY_FOB; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue.ASSOCIATED_ANOTHER_USER; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue.ASSOCIATED_CURRENT_USER; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue.NOT_ASSOCIATED_ANY_USER; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue.UNKNOWN; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationSetValue.DISASSOCIATE_ALL_USERS; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationSetValue.DISASSOCIATE_CURRENT_USER; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.CUSTOM_1; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.CUSTOM_2; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.CUSTOM_3; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.CUSTOM_4; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.KEY_FOB; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationValue.ASSOCIATED_ANOTHER_USER; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationValue.ASSOCIATED_CURRENT_USER; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationValue.NOT_ASSOCIATED_ANY_USER; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationValue.UNKNOWN; import static com.android.car.hal.UserHalHelper.CREATE_USER_PROPERTY; +import static com.android.car.hal.UserHalHelper.INITIAL_USER_INFO_PROPERTY; import static com.android.car.hal.UserHalHelper.REMOVE_USER_PROPERTY; import static com.android.car.hal.UserHalHelper.SWITCH_USER_PROPERTY; import static com.android.car.hal.UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY; @@ -51,46 +52,57 @@ import android.annotation.NonNull; import android.app.ActivityManager; import android.car.builtin.os.UserManagerHelper; import android.car.test.mocks.AbstractExtendedMockitoTestCase; -import android.hardware.automotive.vehicle.V2_0.CreateUserRequest; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoRequestType; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoResponse; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoResponseAction; -import android.hardware.automotive.vehicle.V2_0.RemoveUserRequest; -import android.hardware.automotive.vehicle.V2_0.SwitchUserMessageType; -import android.hardware.automotive.vehicle.V2_0.SwitchUserRequest; -import android.hardware.automotive.vehicle.V2_0.UserFlags; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest; -import android.hardware.automotive.vehicle.V2_0.UsersInfo; -import android.hardware.automotive.vehicle.V2_0.VehiclePropValue; -import android.os.SystemClock; +import android.hardware.automotive.vehicle.CreateUserRequest; +import android.hardware.automotive.vehicle.InitialUserInfoRequestType; +import android.hardware.automotive.vehicle.InitialUserInfoResponse; +import android.hardware.automotive.vehicle.InitialUserInfoResponseAction; +import android.hardware.automotive.vehicle.RemoveUserRequest; +import android.hardware.automotive.vehicle.SwitchUserMessageType; +import android.hardware.automotive.vehicle.SwitchUserRequest; +import android.hardware.automotive.vehicle.UserIdentificationAssociation; +import android.hardware.automotive.vehicle.UserIdentificationAssociationType; +import android.hardware.automotive.vehicle.UserIdentificationAssociationValue; +import android.hardware.automotive.vehicle.UserIdentificationGetRequest; +import android.hardware.automotive.vehicle.UserIdentificationResponse; +import android.hardware.automotive.vehicle.UserIdentificationSetAssociation; +import android.hardware.automotive.vehicle.UserIdentificationSetRequest; +import android.hardware.automotive.vehicle.UserInfo; +import android.hardware.automotive.vehicle.UsersInfo; import android.os.UserHandle; import android.os.UserManager; +import com.android.car.internal.util.DebugUtils; import com.android.car.user.UserHandleHelper; -import com.google.common.collect.Range; - import org.junit.Test; import org.mockito.Mock; +import java.util.ArrayList; +import java.util.List; + public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { public UserHalHelperTest() { super(UserHalHelper.TAG); } + private HalPropValueBuilder mPropValueBuilder = new HalPropValueBuilder(/*isAidl=*/true); + @Mock private UserManager mUm; @Mock private UserHandleHelper mUserHandleHelper; + private static List<Integer> getInt32Values(HalPropValue propValue) { + int size = propValue.getInt32ValuesSize(); + ArrayList<Integer> intValues = new ArrayList<>(size); + for (int i = 0; i < size; i++) { + intValues.add(propValue.getInt32Value(i)); + } + return intValues; + } + @Override protected void onSessionBuilder(CustomMockitoSessionBuilder session) { session.spyStatic(ActivityManager.class); @@ -132,19 +144,19 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testConvertFlags() { UserHandle user = expectSystemUserExists(mUserHandleHelper, UserHandle.USER_SYSTEM); - assertConvertFlags(UserFlags.SYSTEM, user); + assertConvertFlags(UserInfo.USER_FLAG_SYSTEM, user); user = expectRegularUserExists(mUserHandleHelper, 101); - assertConvertFlags(UserFlags.NONE, user); + assertConvertFlags(0, user); user = expectAdminUserExists(mUserHandleHelper, 102); - assertConvertFlags(UserFlags.ADMIN, user); + assertConvertFlags(UserInfo.USER_FLAG_ADMIN, user); user = expectEphemeralUserExists(mUserHandleHelper, 103); - assertConvertFlags(UserFlags.EPHEMERAL, user); + assertConvertFlags(UserInfo.USER_FLAG_EPHEMERAL, user); user = expectGuestUserExists(mUserHandleHelper, 104, /* isEphemeral= */ true); - assertConvertFlags(UserFlags.GUEST | UserFlags.EPHEMERAL, user); + assertConvertFlags(UserInfo.USER_FLAG_GUEST | UserInfo.USER_FLAG_EPHEMERAL, user); } @Test @@ -161,76 +173,77 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testGetFlags_ok() { UserHandle user = expectSystemUserExists(mUserHandleHelper, UserHandle.USER_SYSTEM); - assertGetFlags(UserFlags.SYSTEM, user); + assertGetFlags(UserInfo.USER_FLAG_SYSTEM, user); user = expectRegularUserExists(mUserHandleHelper, 101); - assertGetFlags(UserFlags.NONE, user); + assertGetFlags(0, user); user = expectAdminUserExists(mUserHandleHelper, 102); - assertGetFlags(UserFlags.ADMIN, user); + assertGetFlags(UserInfo.USER_FLAG_ADMIN, user); user = expectEphemeralUserExists(mUserHandleHelper, 103); - assertGetFlags(UserFlags.EPHEMERAL, user); + assertGetFlags(UserInfo.USER_FLAG_EPHEMERAL, user); user = expectGuestUserExists(mUserHandleHelper, 104, /* isEphemeral= */ true); - assertGetFlags(UserFlags.GUEST | UserFlags.EPHEMERAL, user); + assertGetFlags(UserInfo.USER_FLAG_GUEST | UserInfo.USER_FLAG_EPHEMERAL, user); } @Test public void testIsSystem() { - assertThat(UserHalHelper.isSystem(UserFlags.SYSTEM)).isTrue(); - assertThat(UserHalHelper.isSystem(UserFlags.SYSTEM | 666)).isTrue(); - assertThat(UserHalHelper.isSystem(UserFlags.GUEST)).isFalse(); + assertThat(UserHalHelper.isSystem(UserInfo.USER_FLAG_SYSTEM)).isTrue(); + assertThat(UserHalHelper.isSystem(UserInfo.USER_FLAG_SYSTEM | 666)).isTrue(); + assertThat(UserHalHelper.isSystem(UserInfo.USER_FLAG_GUEST)).isFalse(); } @Test public void testIsGuest() { - assertThat(UserHalHelper.isGuest(UserFlags.GUEST)).isTrue(); - assertThat(UserHalHelper.isGuest(UserFlags.GUEST | 666)).isTrue(); - assertThat(UserHalHelper.isGuest(UserFlags.SYSTEM)).isFalse(); + assertThat(UserHalHelper.isGuest(UserInfo.USER_FLAG_GUEST)).isTrue(); + assertThat(UserHalHelper.isGuest(UserInfo.USER_FLAG_GUEST | 666)).isTrue(); + assertThat(UserHalHelper.isGuest(UserInfo.USER_FLAG_SYSTEM)).isFalse(); } @Test public void testIsEphemeral() { - assertThat(UserHalHelper.isEphemeral(UserFlags.EPHEMERAL)).isTrue(); - assertThat(UserHalHelper.isEphemeral(UserFlags.EPHEMERAL | 666)).isTrue(); - assertThat(UserHalHelper.isEphemeral(UserFlags.GUEST)).isFalse(); + assertThat(UserHalHelper.isEphemeral(UserInfo.USER_FLAG_EPHEMERAL)).isTrue(); + assertThat(UserHalHelper.isEphemeral(UserInfo.USER_FLAG_EPHEMERAL | 666)).isTrue(); + assertThat(UserHalHelper.isEphemeral(UserInfo.USER_FLAG_GUEST)).isFalse(); } @Test public void testIsAdmin() { - assertThat(UserHalHelper.isAdmin(UserFlags.ADMIN)).isTrue(); - assertThat(UserHalHelper.isAdmin(UserFlags.ADMIN | 666)).isTrue(); - assertThat(UserHalHelper.isAdmin(UserFlags.GUEST)).isFalse(); + assertThat(UserHalHelper.isAdmin(UserInfo.USER_FLAG_ADMIN)).isTrue(); + assertThat(UserHalHelper.isAdmin(UserInfo.USER_FLAG_ADMIN | 666)).isTrue(); + assertThat(UserHalHelper.isAdmin(UserInfo.USER_FLAG_GUEST)).isFalse(); } @Test public void testIsDisabled() { - assertThat(UserHalHelper.isDisabled(UserFlags.DISABLED)).isTrue(); - assertThat(UserHalHelper.isDisabled(UserFlags.DISABLED | 666)).isTrue(); - assertThat(UserHalHelper.isDisabled(UserFlags.GUEST)).isFalse(); + assertThat(UserHalHelper.isDisabled(UserInfo.USER_FLAG_DISABLED)).isTrue(); + assertThat(UserHalHelper.isDisabled(UserInfo.USER_FLAG_DISABLED | 666)).isTrue(); + assertThat(UserHalHelper.isDisabled(UserInfo.USER_FLAG_GUEST)).isFalse(); } @Test public void testIsProfile() { - assertThat(UserHalHelper.isProfile(UserFlags.PROFILE)).isTrue(); - assertThat(UserHalHelper.isProfile(UserFlags.PROFILE | 666)).isTrue(); - assertThat(UserHalHelper.isProfile(UserFlags.GUEST)).isFalse(); + assertThat(UserHalHelper.isProfile(UserInfo.USER_FLAG_PROFILE)).isTrue(); + assertThat(UserHalHelper.isProfile(UserInfo.USER_FLAG_PROFILE | 666)).isTrue(); + assertThat(UserHalHelper.isProfile(UserInfo.USER_FLAG_GUEST)).isFalse(); } @Test public void testToUserInfoFlags() { - assertThat(UserHalHelper.toUserInfoFlags(UserFlags.NONE)).isEqualTo(0); - assertThat(UserHalHelper.toUserInfoFlags(UserFlags.EPHEMERAL)) + assertThat(UserHalHelper.toUserInfoFlags(0)).isEqualTo(0); + assertThat(UserHalHelper.toUserInfoFlags(UserInfo.USER_FLAG_EPHEMERAL)) .isEqualTo(UserManagerHelper.FLAG_EPHEMERAL); - assertThat(UserHalHelper.toUserInfoFlags(UserFlags.ADMIN)) + assertThat(UserHalHelper.toUserInfoFlags(UserInfo.USER_FLAG_ADMIN)) .isEqualTo(UserManagerHelper.FLAG_ADMIN); - assertThat(UserHalHelper.toUserInfoFlags(UserFlags.EPHEMERAL | UserFlags.ADMIN)) + assertThat(UserHalHelper.toUserInfoFlags( + UserInfo.USER_FLAG_EPHEMERAL | UserInfo.USER_FLAG_ADMIN)) .isEqualTo(UserManagerHelper.FLAG_EPHEMERAL | UserManagerHelper.FLAG_ADMIN); // test flags that should be ignored - assertThat(UserHalHelper.toUserInfoFlags(UserFlags.SYSTEM)).isEqualTo(0); - assertThat(UserHalHelper.toUserInfoFlags(UserFlags.GUEST)).isEqualTo(0); + assertThat(UserHalHelper.toUserInfoFlags(UserInfo.USER_FLAG_SYSTEM)).isEqualTo(0); + assertThat(UserHalHelper.toUserInfoFlags(UserInfo.USER_FLAG_GUEST)).isEqualTo(0); assertThat(UserHalHelper.toUserInfoFlags(1024)).isEqualTo(0); } @@ -254,119 +267,66 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { } @Test - public void testCreatePropRequest_withType() { - int prop = 1; - int requestId = 2; - int requestType = 3; - long before = SystemClock.elapsedRealtime(); - VehiclePropValue propRequest = UserHalHelper.createPropRequest(prop, requestId, - requestType); - long after = SystemClock.elapsedRealtime(); - - assertThat(propRequest.value.int32Values) - .containsExactly(requestId, requestType) - .inOrder(); - assertThat(propRequest.prop).isEqualTo(prop); - assertThat(propRequest.timestamp).isIn(Range.closed(before, after)); - } - - @Test - public void testCreatePropRequest() { - int prop = 1; - int requestId = 2; - long before = SystemClock.elapsedRealtime(); - VehiclePropValue propRequest = UserHalHelper.createPropRequest(prop, requestId); - long after = SystemClock.elapsedRealtime(); - - assertThat(propRequest.value.int32Values) - .containsExactly(requestId) - .inOrder(); - assertThat(propRequest.prop).isEqualTo(prop); - assertThat(propRequest.timestamp).isIn(Range.closed(before, after)); - } - - @Test - public void testAddUsersInfo_nullProp() { - UsersInfo infos = new UsersInfo(); - - assertThrows(NullPointerException.class, () -> UserHalHelper.addUsersInfo(null, infos)); - } - - @Test public void testAddUsersInfo_nullCurrentUser() { - VehiclePropValue propRequest = new VehiclePropValue(); + ArrayList<Integer> intValues = new ArrayList<>(); - UsersInfo infos = new UsersInfo(); + UsersInfo infos = UserHalHelper.emptyUsersInfo(); infos.currentUser = null; assertThrows(NullPointerException.class, () -> - UserHalHelper.addUsersInfo(propRequest, infos)); + UserHalHelper.addUsersInfo(intValues, infos)); } @Test public void testAddUsersInfo_mismatchNumberUsers() { - VehiclePropValue propRequest = new VehiclePropValue(); + ArrayList<Integer> intValues = new ArrayList<>(); - UsersInfo infos = new UsersInfo(); + UsersInfo infos = UserHalHelper.emptyUsersInfo(); infos.currentUser.userId = 42; infos.currentUser.flags = 1; infos.numberUsers = 1; assertThat(infos.existingUsers).isEmpty(); assertThrows(IllegalArgumentException.class, () -> - UserHalHelper.addUsersInfo(propRequest, infos)); + UserHalHelper.addUsersInfo(intValues, infos)); } @Test public void testAddUsersInfo_success() { - VehiclePropValue propRequest = new VehiclePropValue(); - propRequest.value.int32Values.add(99); + ArrayList<Integer> intValues = new ArrayList<>(); - UsersInfo infos = new UsersInfo(); + UsersInfo infos = UserHalHelper.emptyUsersInfo(); infos.currentUser.userId = 42; infos.currentUser.flags = 1; infos.numberUsers = 1; - android.hardware.automotive.vehicle.V2_0.UserInfo userInfo = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo userInfo = new UserInfo(); userInfo.userId = 43; userInfo.flags = 1; - infos.existingUsers.add(userInfo); - UserHalHelper.addUsersInfo(propRequest, infos); + infos.existingUsers = new UserInfo[]{userInfo}; + UserHalHelper.addUsersInfo(intValues, infos); - assertThat(propRequest.value.int32Values) - .containsExactly(99, 42, 1, 1, 43, 1) + assertThat(intValues) + .containsExactly(42, 1, 1, 43, 1) .inOrder(); } @Test - public void testAddUserInfo_nullProp() { - android.hardware.automotive.vehicle.V2_0.UserInfo userInfo = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); - - assertThrows(NullPointerException.class, () -> UserHalHelper.addUserInfo(null, userInfo)); - } - - @Test public void testAddUserInfo_nullCurrentUser() { - VehiclePropValue prop = new VehiclePropValue(); + ArrayList<Integer> intValues = new ArrayList<>(); - assertThrows(NullPointerException.class, () -> UserHalHelper.addUserInfo(prop, null)); + assertThrows(NullPointerException.class, () -> UserHalHelper.addUserInfo(intValues, null)); } @Test public void testAddUserInfo_success() { - VehiclePropValue propRequest = new VehiclePropValue(); - propRequest.value.int32Values.add(99); + ArrayList<Integer> intValues = new ArrayList<>(); - android.hardware.automotive.vehicle.V2_0.UserInfo userInfo = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo userInfo = new UserInfo(); userInfo.userId = 42; userInfo.flags = 1; - UserHalHelper.addUserInfo(propRequest, userInfo); + UserHalHelper.addUserInfo(intValues, userInfo); - assertThat(propRequest.value.int32Values) - .containsExactly(99, 42, 1) - .inOrder(); + assertThat(intValues).containsExactly(42, 1).inOrder(); } @Test @@ -415,64 +375,73 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { } @Test - public void testUserIdentificationGetRequestToVehiclePropValue_null() { + public void testUserIdentificationGetRequestToHalPropValue_null() { + assertThrows(NullPointerException.class, + () -> UserHalHelper.toHalPropValue( + mPropValueBuilder, (UserIdentificationGetRequest) null)); + } + + @Test + public void testUserIdentificationGetRequestToHalPropValue_nullAssociationTypes() { + UserIdentificationGetRequest request = UserHalHelper.emptyUserIdentificationGetRequest(); + request.associationTypes = null; + assertThrows(NullPointerException.class, - () -> UserHalHelper.toVehiclePropValue((UserIdentificationGetRequest) null)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationGetRequestToVehiclePropValue_emptyRequest() { - UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + public void testUserIdentificationGetRequestToHalPropValue_emptyRequest() { + UserIdentificationGetRequest request = UserHalHelper.emptyUserIdentificationGetRequest(); assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationGetRequestToVehiclePropValue_wrongNumberOfAssociations() { - UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + public void testUserIdentificationGetRequestToHalPropValue_wrongNumberOfAssociations() { + UserIdentificationGetRequest request = UserHalHelper.emptyUserIdentificationGetRequest(); request.numberAssociationTypes = 1; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationGetRequestToVehiclePropValue_invalidType() { - UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + public void testUserIdentificationGetRequestToHalPropValue_invalidType() { + UserIdentificationGetRequest request = UserHalHelper.emptyUserIdentificationGetRequest(); request.numberAssociationTypes = 1; - request.associationTypes.add(CUSTOM_4 + 1); + request.associationTypes = new int[]{CUSTOM_4 + 1}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationGetRequestToVehiclePropValue_missingRequestId() { - UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + public void testUserIdentificationGetRequestToHalPropValue_missingRequestId() { + UserIdentificationGetRequest request = UserHalHelper.emptyUserIdentificationGetRequest(); request.userInfo.userId = 42; request.userInfo.flags = 108; request.numberAssociationTypes = 1; - request.associationTypes.add(KEY_FOB); + request.associationTypes = new int[]{KEY_FOB}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationGetRequestToVehiclePropValue_ok() { - UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + public void testUserIdentificationGetRequestToHalPropValue_ok() { + UserIdentificationGetRequest request = UserHalHelper.emptyUserIdentificationGetRequest(); request.requestId = 1; request.userInfo.userId = 42; request.userInfo.flags = 108; request.numberAssociationTypes = 2; - request.associationTypes.add(KEY_FOB); - request.associationTypes.add(CUSTOM_1); + request.associationTypes = new int[]{KEY_FOB, CUSTOM_1}; - VehiclePropValue propValue = UserHalHelper.toVehiclePropValue(request); - assertWithMessage("wrong prop on %s", propValue).that(propValue.prop) + HalPropValue propValue = UserHalHelper.toHalPropValue(mPropValueBuilder, request); + assertWithMessage("wrong prop on %s", propValue).that(propValue.getPropId()) .isEqualTo(USER_IDENTIFICATION_ASSOCIATION_PROPERTY); - assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values) + assertWithMessage("wrong int32values on %s", propValue).that(getInt32Values(propValue)) .containsExactly(1, 42, 108, 2, KEY_FOB, CUSTOM_1).inOrder(); } @@ -484,7 +453,7 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToUserIdentificationResponse_invalidPropType() { - VehiclePropValue prop = new VehiclePropValue(); + HalPropValue prop = mPropValueBuilder.build(/* propId= */ 0, /* areaId= */ 0); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toUserIdentificationResponse(prop)); @@ -492,12 +461,10 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToUserIdentificationResponse_invalidSize() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY; // need at least 4: request_id, number associations, type1, value1 - prop.value.int32Values.add(1); - prop.value.int32Values.add(2); - prop.value.int32Values.add(3); + HalPropValue prop = mPropValueBuilder.build( + UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY, /* areaId= */ 0, + new int[]{1, 2, 3}); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toUserIdentificationResponse(prop)); @@ -505,9 +472,9 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToUserIdentificationResponse_invalidRequest() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY; - prop.value.int32Values.add(0); + HalPropValue prop = mPropValueBuilder.build( + UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY, /* areaId= */ 0, + new int[]{0}); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toUserIdentificationResponse(prop)); @@ -515,12 +482,15 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToUserIdentificationResponse_invalidType() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(1); // number of associations - prop.value.int32Values.add(CUSTOM_4 + 1); - prop.value.int32Values.add(ASSOCIATED_ANOTHER_USER); + HalPropValue prop = mPropValueBuilder.build( + UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + // number of associations + 1, + CUSTOM_4 + 1, + ASSOCIATED_ANOTHER_USER}); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toUserIdentificationResponse(prop)); @@ -528,12 +498,15 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToUserIdentificationResponse_invalidValue() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(1); // number of associations - prop.value.int32Values.add(KEY_FOB); - prop.value.int32Values.add(0); + HalPropValue prop = mPropValueBuilder.build( + UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + // number of associations + 1, + KEY_FOB, + 0}); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toUserIdentificationResponse(prop)); @@ -541,17 +514,21 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToUserIdentificationResponse_ok() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(3); // number of associations - prop.value.int32Values.add(KEY_FOB); - prop.value.int32Values.add(ASSOCIATED_ANOTHER_USER); - prop.value.int32Values.add(CUSTOM_1); - prop.value.int32Values.add(ASSOCIATED_CURRENT_USER); - prop.value.int32Values.add(CUSTOM_2); - prop.value.int32Values.add(NOT_ASSOCIATED_ANY_USER); - prop.value.stringValue = "D'OH!"; + HalPropValue prop = mPropValueBuilder.build( + UserHalHelper.USER_IDENTIFICATION_ASSOCIATION_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + /*int32Values=*/new int[]{ + // request id + 42, + // number of associations + 3, + KEY_FOB, + ASSOCIATED_ANOTHER_USER, + CUSTOM_1, + ASSOCIATED_CURRENT_USER, + CUSTOM_2, + NOT_ASSOCIATED_ANY_USER + }, new float[0], new long[0], "D'OH!", new byte[0]); UserIdentificationResponse response = UserHalHelper.toUserIdentificationResponse(prop); @@ -574,18 +551,16 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_invalidPropType() { - VehiclePropValue prop = new VehiclePropValue(); - + HalPropValue prop = mPropValueBuilder.build(/* propId= */ 0, /* areaId= */ 0); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); } @Test public void testToInitialUserInfoResponse_invalidSize() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - // need at least 2: request_id, action_type - prop.value.int32Values.add(42); + // need at least 2 intValues: request_id, action_type. + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + 42); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); @@ -593,9 +568,7 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_invalidRequest() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(0); + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, 0); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); @@ -603,10 +576,13 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_invalidAction() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(-1); // InitialUserInfoResponseAction + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + // InitialUserInfoResponseAction + -1 + }); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); @@ -614,10 +590,13 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_default_ok_noStringValue() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.DEFAULT); + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + // InitialUserInfoResponseAction + InitialUserInfoResponseAction.DEFAULT + }); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -626,17 +605,20 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.DEFAULT); assertThat(response.userNameToCreate).isEmpty(); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(0); assertThat(response.userLocales).isEmpty(); } @Test public void testToInitialUserInfoResponse_default_ok_stringValueWithJustSeparator() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.DEFAULT); - prop.value.stringValue = "||"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + // InitialUserInfoResponseAction + InitialUserInfoResponseAction.DEFAULT + }, new float[0], new long[0], "||", new byte[0]); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -645,17 +627,20 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.DEFAULT); assertThat(response.userNameToCreate).isEmpty(); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(0); assertThat(response.userLocales).isEmpty(); } @Test public void testToInitialUserInfoResponse_default_ok_stringValueWithLocale() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.DEFAULT); - prop.value.stringValue = "esperanto,klingon"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + // InitialUserInfoResponseAction + InitialUserInfoResponseAction.DEFAULT + }, new float[0], new long[0], "esperanto,klingon", new byte[0]); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -664,17 +649,20 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.DEFAULT); assertThat(response.userNameToCreate).isEmpty(); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(0); assertThat(response.userLocales).isEqualTo("esperanto,klingon"); } @Test public void testToInitialUserInfoResponse_default_ok_stringValueWithLocaleWithHalfSeparator() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.DEFAULT); - prop.value.stringValue = "esperanto|klingon"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + // InitialUserInfoResponseAction + InitialUserInfoResponseAction.DEFAULT + }, new float[0], new long[0], "esperanto|klingon", new byte[0]); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -683,16 +671,18 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.DEFAULT); assertThat(response.userNameToCreate).isEmpty(); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(0); assertThat(response.userLocales).isEqualTo("esperanto|klingon"); } @Test public void testToInitialUserInfoResponse_switch_missingUserId() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.SWITCH); + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.SWITCH + }); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); @@ -700,12 +690,16 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_switch_ok_noLocale() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.SWITCH); - prop.value.int32Values.add(108); // user id - prop.value.int32Values.add(666); // flags - should be ignored + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.SWITCH, + // user id + 108, + // flags - should be ignored + 666 + }); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -714,20 +708,26 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.SWITCH); assertThat(response.userNameToCreate).isEmpty(); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(108); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(0); assertThat(response.userLocales).isEmpty(); } @Test public void testToInitialUserInfoResponse_switch_ok_withLocale() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.SWITCH); - prop.value.int32Values.add(108); // user id - prop.value.int32Values.add(666); // flags - should be ignored - // add some extra | to make sure they're ignored - prop.value.stringValue = "esperanto,klingon|||"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.SWITCH, + // user id + 108, + // flags - should be ignored + 666 + }, new float[0], new long[0], + // add some extra | to make sure they're ignored + "esperanto,klingon|||", new byte[0]); + InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); assertThat(response).isNotNull(); @@ -735,16 +735,18 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.SWITCH); assertThat(response.userNameToCreate).isEmpty(); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(108); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(0); assertThat(response.userLocales).isEqualTo("esperanto,klingon"); } @Test public void testToInitialUserInfoResponse_create_missingUserId() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.CREATE); + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.CREATE + }); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); @@ -752,11 +754,14 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_create_missingFlags() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.CREATE); - prop.value.int32Values.add(108); // user id + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.CREATE, + // user id + 108 + }); assertThrows(IllegalArgumentException.class, () -> UserHalHelper.toInitialUserInfoResponse(prop)); @@ -764,13 +769,16 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { @Test public void testToInitialUserInfoResponse_create_ok_noLocale() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.CREATE); - prop.value.int32Values.add(666); // user id - not used - prop.value.int32Values.add(UserFlags.GUEST); - prop.value.stringValue = "||ElGuesto"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.CREATE, + // user id - not used + 666, + UserInfo.USER_FLAG_GUEST + }, new float[0], new long[0], "||ElGuesto", new byte[0]); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -779,19 +787,22 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.CREATE); assertThat(response.userNameToCreate).isEqualTo("ElGuesto"); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.GUEST); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserInfo.USER_FLAG_GUEST); assertThat(response.userLocales).isEmpty(); } @Test public void testToInitialUserInfoResponse_create_ok_withLocale() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.CREATE); - prop.value.int32Values.add(666); // user id - not used - prop.value.int32Values.add(UserFlags.GUEST); - prop.value.stringValue = "esperanto,klingon||ElGuesto"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.CREATE, + // user id - not used + 666, + UserInfo.USER_FLAG_GUEST + }, new float[0], new long[0], "esperanto,klingon||ElGuesto", new byte[0]); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -800,19 +811,22 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.CREATE); assertThat(response.userNameToCreate).isEqualTo("ElGuesto"); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.GUEST); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserInfo.USER_FLAG_GUEST); assertThat(response.userLocales).isEqualTo("esperanto,klingon"); } @Test public void testToInitialUserInfoResponse_create_ok_nameAndLocaleWithHalfDelimiter() { - VehiclePropValue prop = new VehiclePropValue(); - prop.prop = UserHalHelper.INITIAL_USER_INFO_PROPERTY; - prop.value.int32Values.add(42); // request id - prop.value.int32Values.add(InitialUserInfoResponseAction.CREATE); - prop.value.int32Values.add(666); // user id - not used - prop.value.int32Values.add(UserFlags.GUEST); - prop.value.stringValue = "esperanto|klingon||El|Guesto"; + HalPropValue prop = mPropValueBuilder.build(INITIAL_USER_INFO_PROPERTY, /* areaId= */ 0, + /* timestamp= */ 0, /* status= */ 0, + new int[]{ + // request id + 42, + InitialUserInfoResponseAction.CREATE, + // user id - not used + 666, + UserInfo.USER_FLAG_GUEST + }, new float[0], new long[0], "esperanto|klingon||El|Guesto", new byte[0]); InitialUserInfoResponse response = UserHalHelper.toInitialUserInfoResponse(prop); @@ -821,77 +835,88 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(response.action).isEqualTo(InitialUserInfoResponseAction.CREATE); assertThat(response.userNameToCreate).isEqualTo("El|Guesto"); assertThat(response.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserFlags.GUEST); + assertThat(response.userToSwitchOrCreate.flags).isEqualTo(UserInfo.USER_FLAG_GUEST); assertThat(response.userLocales).isEqualTo("esperanto|klingon"); } @Test - public void testUserIdentificationSetRequestToVehiclePropValue_null() { + public void testUserIdentificationSetRequestToHalPropValue_null() { + assertThrows(NullPointerException.class, + () -> UserHalHelper.toHalPropValue( + mPropValueBuilder, (UserIdentificationSetRequest) null)); + } + + @Test + public void testUserIdentificationSetRequestToHalPropValue_nullAssociations() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); + request.associations = null; + assertThrows(NullPointerException.class, - () -> UserHalHelper.toVehiclePropValue((UserIdentificationSetRequest) null)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } + @Test - public void testUserIdentificationSetRequestToVehiclePropValue_emptyRequest() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + public void testUserIdentificationSetRequestToHalPropValue_emptyRequest() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationSetRequestToVehiclePropValue_wrongNumberOfAssociations() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + public void testUserIdentificationSetRequestToHalPropValue_wrongNumberOfAssociations() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.numberAssociations = 1; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationSetRequestToVehiclePropValue_invalidType() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + public void testUserIdentificationSetRequestToHalPropValue_invalidType() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.numberAssociations = 1; UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation(); - request.associations.add(association1); + request.associations = new UserIdentificationSetAssociation[]{association1}; association1.type = CUSTOM_4 + 1; association1.value = ASSOCIATE_CURRENT_USER; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationSetRequestToVehiclePropValue_invalidValue() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + public void testUserIdentificationSetRequestToHalPropValue_invalidValue() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.numberAssociations = 1; UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation(); - request.associations.add(association1); + request.associations = new UserIdentificationSetAssociation[]{association1}; association1.type = KEY_FOB; association1.value = -1; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationSetRequestToVehiclePropValue_missingRequestId() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + public void testUserIdentificationSetRequestToHalPropValue_missingRequestId() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.userInfo.userId = 42; request.userInfo.flags = 108; request.numberAssociations = 1; UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation(); association1.type = KEY_FOB; association1.value = ASSOCIATE_CURRENT_USER; - request.associations.add(association1); + request.associations = new UserIdentificationSetAssociation[]{association1}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testUserIdentificationSetRequestToVehiclePropValue_ok() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + public void testUserIdentificationSetRequestToHalPropValue_ok() { + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.requestId = 1; request.userInfo.userId = 42; request.userInfo.flags = 108; @@ -899,16 +924,16 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation(); association1.type = KEY_FOB; association1.value = ASSOCIATE_CURRENT_USER; - request.associations.add(association1); UserIdentificationSetAssociation association2 = new UserIdentificationSetAssociation(); association2.type = CUSTOM_1; association2.value = DISASSOCIATE_CURRENT_USER; - request.associations.add(association2); + request.associations = new UserIdentificationSetAssociation[]{association1, association2}; - VehiclePropValue propValue = UserHalHelper.toVehiclePropValue(request); - assertWithMessage("wrong prop on %s", propValue).that(propValue.prop) + HalPropValue propValue = UserHalHelper.toHalPropValue(mPropValueBuilder, request); + assertWithMessage("wrong prop on %s", propValue).that(propValue.getPropId()) .isEqualTo(USER_IDENTIFICATION_ASSOCIATION_PROPERTY); - assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values) + + assertWithMessage("wrong int32values on %s", propValue).that(getInt32Values(propValue)) .containsExactly(1, 42, 108, 2, KEY_FOB, ASSOCIATE_CURRENT_USER, CUSTOM_1, DISASSOCIATE_CURRENT_USER) @@ -916,259 +941,313 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { } @Test - public void testRemoveUserRequestToVehiclePropValue_null() { + public void testRemoveUserRequestToHalPropValue_null() { assertThrows(NullPointerException.class, - () -> UserHalHelper.toVehiclePropValue((RemoveUserRequest) null)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, (RemoveUserRequest) null)); } @Test - public void testRemoveUserRequestToVehiclePropValue_emptyRequest() { - RemoveUserRequest request = new RemoveUserRequest(); + public void testRemoveUserRequestToHalPropValue_nullRemovedUserInfo() { + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); + request.requestId = 1; + request.removedUserInfo = null; + + assertThrows(NullPointerException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); + } + + @Test + public void testRemoveUserRequestToHalPropValue_nullUsersInfo() { + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); + request.usersInfo = null; + + assertThrows(IllegalArgumentException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); + } + + @Test + public void testRemoveUserRequestToHalPropValue_empty() { + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testRemoveUserRequestToVehiclePropValue_missingRequestId() { - RemoveUserRequest request = new RemoveUserRequest(); + public void testRemoveUserRequestToHalPropValue_missingRequestId() { + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); request.removedUserInfo.userId = 11; - request.usersInfo.existingUsers.add(request.removedUserInfo); + request.usersInfo.existingUsers = new UserInfo[]{request.removedUserInfo}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testRemoveUserRequestToVehiclePropValue_ok() { - RemoveUserRequest request = new RemoveUserRequest(); + public void testRemoveUserRequestToHalPropValue_ok() { + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); request.requestId = 42; - android.hardware.automotive.vehicle.V2_0.UserInfo user10 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo user10 = new UserInfo(); user10.userId = 10; - user10.flags = UserFlags.ADMIN; + user10.flags = UserInfo.USER_FLAG_ADMIN; // existing users request.usersInfo.numberUsers = 1; - request.usersInfo.existingUsers.add(user10); + request.usersInfo.existingUsers = new UserInfo[]{user10}; // current user request.usersInfo.currentUser = user10; // user to remove request.removedUserInfo = user10; - VehiclePropValue propValue = UserHalHelper.toVehiclePropValue(request); + HalPropValue propValue = UserHalHelper.toHalPropValue(mPropValueBuilder, request); - assertWithMessage("wrong prop on %s", propValue).that(propValue.prop) + assertWithMessage("wrong prop on %s", propValue).that(propValue.getPropId()) .isEqualTo(REMOVE_USER_PROPERTY); - assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values) + assertWithMessage("wrong int32values on %s", propValue).that(getInt32Values(propValue)) .containsExactly(42, // request id - 10, UserFlags.ADMIN, // user to remove - 10, UserFlags.ADMIN, // current user + 10, UserInfo.USER_FLAG_ADMIN, // user to remove + 10, UserInfo.USER_FLAG_ADMIN, // current user 1, // number of users - 10, UserFlags.ADMIN // existing user 1 + 10, UserInfo.USER_FLAG_ADMIN // existing user 1 ).inOrder(); } @Test - public void testCreateUserRequestToVehiclePropValue_null() { + public void testCreateUserRequestToHalPropValue_null() { assertThrows(NullPointerException.class, - () -> UserHalHelper.toVehiclePropValue((CreateUserRequest) null)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, (CreateUserRequest) null)); + } + + @Test + public void testCreateUserRequestToHalPropValue_nullNewUserInfo() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); + request.newUserInfo = null; + + assertThrows(NullPointerException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); + } + + @Test + public void testCreateUserRequestToHalPropValue_nullUsersInfo() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); + request.usersInfo = null; + + assertThrows(IllegalArgumentException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testCreateUserRequestToVehiclePropValue_emptyRequest() { - CreateUserRequest request = new CreateUserRequest(); + public void testCreateUserRequestToHalPropValue_empty() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testCreateUserRequestToVehiclePropValue_missingRequestId() { - CreateUserRequest request = new CreateUserRequest(); + public void testCreateUserRequestToHalPropValue_emptyRequest() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); + + assertThrows(IllegalArgumentException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); + } + + @Test + public void testCreateUserRequestToHalPropValue_missingRequestId() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); + request.newUserInfo = new UserInfo(); request.newUserInfo.userId = 10; - request.usersInfo.existingUsers.add(request.newUserInfo); + request.usersInfo.existingUsers = new UserInfo[]{request.newUserInfo}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testCreateUserRequestToVehiclePropValue_nullNewUserName() { - CreateUserRequest request = new CreateUserRequest(); + public void testCreateUserRequestToHalPropValue_nullNewUserName() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.requestId = 42; request.newUserInfo.userId = 10; - request.newUserInfo.flags = UserFlags.ADMIN; + request.newUserInfo.flags = UserInfo.USER_FLAG_ADMIN; request.newUserName = null; request.usersInfo.numberUsers = 1; request.usersInfo.currentUser.userId = request.newUserInfo.userId; request.usersInfo.currentUser.flags = request.newUserInfo.flags; - request.usersInfo.existingUsers.add(request.usersInfo.currentUser); + request.usersInfo.existingUsers = new UserInfo[]{request.usersInfo.currentUser}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testCreateUserRequestToVehiclePropValue_usersInfoDoesNotContainNewUser() { - CreateUserRequest request = new CreateUserRequest(); + public void testCreateUserRequestToHalPropValue_usersInfoDoesNotContainNewUser() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.requestId = 42; request.newUserInfo.userId = 10; - android.hardware.automotive.vehicle.V2_0.UserInfo user = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo user = new UserInfo(); user.userId = 11; - request.usersInfo.existingUsers.add(user); + request.usersInfo.existingUsers = new UserInfo[]{user}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testCreateUserRequestToVehiclePropValue_newUserFlagsMismatch() { - CreateUserRequest request = new CreateUserRequest(); + public void testCreateUserRequestToHalPropValue_newUserFlagsMismatch() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.requestId = 42; request.newUserInfo.userId = 10; - request.newUserInfo.flags = UserFlags.ADMIN; - android.hardware.automotive.vehicle.V2_0.UserInfo user = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + request.newUserInfo.flags = UserInfo.USER_FLAG_ADMIN; + UserInfo user = new UserInfo(); user.userId = 10; - request.newUserInfo.flags = UserFlags.SYSTEM; - request.usersInfo.existingUsers.add(user); + request.newUserInfo.flags = UserInfo.USER_FLAG_SYSTEM; + request.usersInfo.existingUsers = new UserInfo[]{user}; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testCreateUserRequestToVehiclePropValue_ok() { - CreateUserRequest request = new CreateUserRequest(); + public void testCreateUserRequestToHalPropValue_ok() { + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.requestId = 42; - android.hardware.automotive.vehicle.V2_0.UserInfo user10 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo user10 = new UserInfo(); user10.userId = 10; - user10.flags = UserFlags.ADMIN; - android.hardware.automotive.vehicle.V2_0.UserInfo user11 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + user10.flags = UserInfo.USER_FLAG_ADMIN; + UserInfo user11 = new UserInfo(); user11.userId = 11; - user11.flags = UserFlags.SYSTEM; - android.hardware.automotive.vehicle.V2_0.UserInfo user12 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + user11.flags = UserInfo.USER_FLAG_SYSTEM; + UserInfo user12 = new UserInfo(); user12.userId = 12; - user12.flags = UserFlags.GUEST; + user12.flags = UserInfo.USER_FLAG_GUEST; // existing users request.usersInfo.numberUsers = 3; - request.usersInfo.existingUsers.add(user10); - request.usersInfo.existingUsers.add(user11); - request.usersInfo.existingUsers.add(user12); + request.usersInfo.existingUsers = new UserInfo[]{user10, user11, user12}; // current user request.usersInfo.currentUser.userId = 12; - request.usersInfo.currentUser.flags = UserFlags.GUEST; + request.usersInfo.currentUser.flags = UserInfo.USER_FLAG_GUEST; // new user request.newUserInfo.userId = 10; - request.newUserInfo.flags = UserFlags.ADMIN; + request.newUserInfo.flags = UserInfo.USER_FLAG_ADMIN; request.newUserName = "Dude"; - VehiclePropValue propValue = UserHalHelper.toVehiclePropValue(request); + HalPropValue propValue = UserHalHelper.toHalPropValue(mPropValueBuilder, request); - assertWithMessage("wrong prop on %s", propValue).that(propValue.prop) + assertWithMessage("wrong prop on %s", propValue).that(propValue.getPropId()) .isEqualTo(CREATE_USER_PROPERTY); - assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values) + assertWithMessage("wrong int32values on %s", propValue).that(getInt32Values(propValue)) .containsExactly(42, // request id - 10, UserFlags.ADMIN, // new user - 12, UserFlags.GUEST, // current user + 10, UserInfo.USER_FLAG_ADMIN, // new user + 12, UserInfo.USER_FLAG_GUEST, // current user 3, // number of users - 10, UserFlags.ADMIN, // existing user 1 - 11, UserFlags.SYSTEM, // existing user 2 - 12, UserFlags.GUEST // existing user 3 + 10, UserInfo.USER_FLAG_ADMIN, // existing user 1 + 11, UserInfo.USER_FLAG_SYSTEM, // existing user 2 + 12, UserInfo.USER_FLAG_GUEST // existing user 3 ).inOrder(); - assertWithMessage("wrong name %s", propValue).that(propValue.value.stringValue) + assertWithMessage("wrong name %s", propValue).that(propValue.getStringValue()) .isEqualTo("Dude"); } @Test - public void testSwitchUserRequestToVehiclePropValue_null() { + public void testSwitchUserRequestToHalPropValue_null() { + assertThrows(NullPointerException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, (SwitchUserRequest) null)); + } + + @Test + public void testSwitchUserRequestToHalPropValue_nullTargetUser() { + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); + request.messageType = 1; + request.targetUser = null; + assertThrows(NullPointerException.class, - () -> UserHalHelper.toVehiclePropValue((SwitchUserRequest) null)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testSwitchUserRequestToVehiclePropValue_emptyRequest() { - SwitchUserRequest request = new SwitchUserRequest(); + public void testSwitchUserRequestToHalPropValue_nullUsersInfo() { + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); + request.usersInfo = null; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testSwitchUserRequestToVehiclePropValue_missingMessageType() { - SwitchUserRequest request = new SwitchUserRequest(); + public void testSwitchUserRequestToHalPropValue_empty() { + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); + + assertThrows(IllegalArgumentException.class, + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); + } + + @Test + public void testSwitchUserRequestToHalPropValue_missingMessageType() { + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.requestId = 42; - android.hardware.automotive.vehicle.V2_0.UserInfo user10 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo user10 = new UserInfo(); user10.userId = 10; request.usersInfo.numberUsers = 1; - request.usersInfo.existingUsers.add(user10); + request.usersInfo.existingUsers = new UserInfo[]{user10}; request.usersInfo.currentUser = user10; request.targetUser = user10; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void testSwitchUserRequestToVehiclePropValue_incorrectMessageType() { - SwitchUserRequest request = new SwitchUserRequest(); + public void testSwitchUserRequestToHalPropValue_incorrectMessageType() { + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.requestId = 42; request.messageType = -1; - android.hardware.automotive.vehicle.V2_0.UserInfo user10 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo user10 = new UserInfo(); user10.userId = 10; request.usersInfo.numberUsers = 1; - request.usersInfo.existingUsers.add(user10); + request.usersInfo.existingUsers = new UserInfo[]{user10}; request.usersInfo.currentUser = user10; request.targetUser = user10; assertThrows(IllegalArgumentException.class, - () -> UserHalHelper.toVehiclePropValue(request)); + () -> UserHalHelper.toHalPropValue(mPropValueBuilder, request)); } @Test - public void tesSwitchUserRequestToVehiclePropValue_ok() { - SwitchUserRequest request = new SwitchUserRequest(); + public void tesSwitchUserRequestToHalPropValue_ok() { + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.requestId = 42; - android.hardware.automotive.vehicle.V2_0.UserInfo user10 = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo user10 = new UserInfo(); user10.userId = 10; - user10.flags = UserFlags.ADMIN; + user10.flags = UserInfo.USER_FLAG_ADMIN; // existing users request.usersInfo.numberUsers = 1; - request.usersInfo.existingUsers.add(user10); + request.usersInfo.existingUsers = new UserInfo[]{user10}; // current user request.usersInfo.currentUser = user10; // user to remove request.targetUser = user10; request.messageType = SwitchUserMessageType.ANDROID_SWITCH; - VehiclePropValue propValue = UserHalHelper.toVehiclePropValue(request); + HalPropValue propValue = UserHalHelper.toHalPropValue(mPropValueBuilder, request); - assertWithMessage("wrong prop on %s", propValue).that(propValue.prop) + assertWithMessage("wrong prop on %s", propValue).that(propValue.getPropId()) .isEqualTo(SWITCH_USER_PROPERTY); - assertWithMessage("wrong int32values on %s", propValue).that(propValue.value.int32Values) + assertWithMessage("wrong int32values on %s", propValue).that(getInt32Values(propValue)) .containsExactly(42, // request id SwitchUserMessageType.ANDROID_SWITCH, // message type - 10, UserFlags.ADMIN, // target user - 10, UserFlags.ADMIN, // current user + 10, UserInfo.USER_FLAG_ADMIN, // target user + 10, UserInfo.USER_FLAG_ADMIN, // current user 1, // number of users - 10, UserFlags.ADMIN // existing user 1 + 10, UserInfo.USER_FLAG_ADMIN // existing user 1 ).inOrder(); } @@ -1207,17 +1286,17 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(usersInfo).isNotNull(); assertThat(usersInfo.currentUser.userId).isEqualTo(300); - assertThat(usersInfo.currentUser.flags).isEqualTo(UserFlags.NONE); + assertThat(usersInfo.currentUser.flags).isEqualTo(0); assertThat(usersInfo.numberUsers).isEqualTo(3); - assertThat(usersInfo.existingUsers).hasSize(3); + assertThat(usersInfo.existingUsers.length).isEqualTo(3); - assertThat(usersInfo.existingUsers.get(0).userId).isEqualTo(100); - assertThat(usersInfo.existingUsers.get(0).flags).isEqualTo(UserFlags.ADMIN); - assertThat(usersInfo.existingUsers.get(1).userId).isEqualTo(200); - assertThat(usersInfo.existingUsers.get(1).flags).isEqualTo(UserFlags.NONE); - assertThat(usersInfo.existingUsers.get(2).userId).isEqualTo(300); - assertThat(usersInfo.existingUsers.get(2).flags).isEqualTo(UserFlags.NONE); + assertThat(usersInfo.existingUsers[0].userId).isEqualTo(100); + assertThat(usersInfo.existingUsers[0].flags).isEqualTo(UserInfo.USER_FLAG_ADMIN); + assertThat(usersInfo.existingUsers[1].userId).isEqualTo(200); + assertThat(usersInfo.existingUsers[1].flags).isEqualTo(0); + assertThat(usersInfo.existingUsers[2].userId).isEqualTo(300); + assertThat(usersInfo.existingUsers[2].flags).isEqualTo(0); } @Test @@ -1232,15 +1311,15 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(usersInfo).isNotNull(); assertThat(usersInfo.currentUser.userId).isEqualTo(100); - assertThat(usersInfo.currentUser.flags).isEqualTo(UserFlags.ADMIN); + assertThat(usersInfo.currentUser.flags).isEqualTo(UserInfo.USER_FLAG_ADMIN); assertThat(usersInfo.numberUsers).isEqualTo(2); - assertThat(usersInfo.existingUsers).hasSize(2); + assertThat(usersInfo.existingUsers.length).isEqualTo(2); - assertThat(usersInfo.existingUsers.get(0).userId).isEqualTo(100); - assertThat(usersInfo.existingUsers.get(0).flags).isEqualTo(UserFlags.ADMIN); - assertThat(usersInfo.existingUsers.get(1).userId).isEqualTo(200); - assertThat(usersInfo.existingUsers.get(1).flags).isEqualTo(UserFlags.NONE); + assertThat(usersInfo.existingUsers[0].userId).isEqualTo(100); + assertThat(usersInfo.existingUsers[0].flags).isEqualTo(UserInfo.USER_FLAG_ADMIN); + assertThat(usersInfo.existingUsers[1].userId).isEqualTo(200); + assertThat(usersInfo.existingUsers[1].flags).isEqualTo(0); } @Test @@ -1256,15 +1335,15 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { assertThat(usersInfo).isNotNull(); assertThat(usersInfo.currentUser.userId).isEqualTo(300); - assertThat(usersInfo.currentUser.flags).isEqualTo(UserFlags.NONE); + assertThat(usersInfo.currentUser.flags).isEqualTo(0); assertThat(usersInfo.numberUsers).isEqualTo(2); - assertThat(usersInfo.existingUsers).hasSize(2); + assertThat(usersInfo.existingUsers.length).isEqualTo(2); - assertThat(usersInfo.existingUsers.get(0).userId).isEqualTo(100); - assertThat(usersInfo.existingUsers.get(0).flags).isEqualTo(UserFlags.ADMIN); - assertThat(usersInfo.existingUsers.get(1).userId).isEqualTo(200); - assertThat(usersInfo.existingUsers.get(1).flags).isEqualTo(UserFlags.NONE); + assertThat(usersInfo.existingUsers[0].userId).isEqualTo(100); + assertThat(usersInfo.existingUsers[0].flags).isEqualTo(UserInfo.USER_FLAG_ADMIN); + assertThat(usersInfo.existingUsers[1].userId).isEqualTo(200); + assertThat(usersInfo.existingUsers[1].flags).isEqualTo(0); } @Test @@ -1273,53 +1352,61 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { } @Test - public void testCheckValidUsersInfo_empty() { - UsersInfo usersInfo = new UsersInfo(); + public void testCheckValidUsersInfo_nullCurrentUser() { + UsersInfo usersInfo = UserHalHelper.emptyUsersInfo(); + usersInfo.currentUser = null; + usersInfo.existingUsers = new UserInfo[0]; + assertThrows(IllegalArgumentException.class, () -> UserHalHelper.checkValid(usersInfo)); + } + + @Test + public void testCheckValidUsersInfo_nullExistingUsers() { + UsersInfo usersInfo = UserHalHelper.emptyUsersInfo(); + usersInfo.currentUser = new UserInfo(); + usersInfo.existingUsers = null; assertThrows(IllegalArgumentException.class, () -> UserHalHelper.checkValid(usersInfo)); } @Test public void testCheckValidUsersInfo_sizeMismatch() { - UsersInfo usersInfo = new UsersInfo(); + UsersInfo usersInfo = UserHalHelper.emptyUsersInfo(); usersInfo.numberUsers = 1; assertThrows(IllegalArgumentException.class, () -> UserHalHelper.checkValid(usersInfo)); } @Test public void testCheckValidUsersInfo_currentUserMissing() { - UsersInfo usersInfo = new UsersInfo(); + UsersInfo usersInfo = UserHalHelper.emptyUsersInfo(); usersInfo.numberUsers = 1; usersInfo.currentUser.userId = 10; - usersInfo.existingUsers.add(new android.hardware.automotive.vehicle.V2_0.UserInfo()); + usersInfo.existingUsers = new UserInfo[]{new UserInfo()}; assertThrows(IllegalArgumentException.class, () -> UserHalHelper.checkValid(usersInfo)); } @Test public void testCheckValidUsersInfo_currentUserFlagsMismatch() { - UsersInfo usersInfo = new UsersInfo(); + UsersInfo usersInfo = UserHalHelper.emptyUsersInfo(); usersInfo.numberUsers = 1; usersInfo.currentUser.userId = 10; - usersInfo.currentUser.flags = UserFlags.ADMIN; - android.hardware.automotive.vehicle.V2_0.UserInfo currentUser = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + usersInfo.currentUser.flags = UserInfo.USER_FLAG_ADMIN; + UserInfo currentUser = new UserInfo(); currentUser.userId = 10; - currentUser.flags = UserFlags.SYSTEM; - usersInfo.existingUsers.add(currentUser); + currentUser.flags = UserInfo.USER_FLAG_SYSTEM; + usersInfo.existingUsers = new UserInfo[]{currentUser}; assertThrows(IllegalArgumentException.class, () -> UserHalHelper.checkValid(usersInfo)); } @Test public void testCheckValidUsersInfo_ok() { - UsersInfo usersInfo = new UsersInfo(); + UsersInfo usersInfo = UserHalHelper.emptyUsersInfo(); usersInfo.numberUsers = 1; usersInfo.currentUser.userId = 10; - android.hardware.automotive.vehicle.V2_0.UserInfo currentUser = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + UserInfo currentUser = new UserInfo(); currentUser.userId = 10; - usersInfo.existingUsers.add(currentUser); + usersInfo.existingUsers = new UserInfo[]{currentUser}; UserHalHelper.checkValid(usersInfo); } @@ -1331,23 +1418,29 @@ public final class UserHalHelperTest extends AbstractExtendedMockitoTestCase { private static void assertEmptyUsersInfo(UsersInfo usersInfo) { assertThat(usersInfo).isNotNull(); assertThat(usersInfo.currentUser.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(usersInfo.currentUser.flags).isEqualTo(UserFlags.NONE); + assertThat(usersInfo.currentUser.flags).isEqualTo(0); assertThat(usersInfo.numberUsers).isEqualTo(0); assertThat(usersInfo.existingUsers).isEmpty(); } private static void assertAssociation(@NonNull UserIdentificationResponse response, int index, int expectedType, int expectedValue) { - UserIdentificationAssociation actualAssociation = response.associations.get(index); + UserIdentificationAssociation actualAssociation = response.associations[index]; if (actualAssociation.type != expectedType) { fail("Wrong type for association at index " + index + " on " + response + "; expected " - + UserIdentificationAssociationType.toString(expectedType) + ", got " - + UserIdentificationAssociationType.toString(actualAssociation.type)); + + DebugUtils.constantToString( + UserIdentificationAssociationType.class, expectedType) + + ", got " + + DebugUtils.constantToString( + UserIdentificationAssociationType.class, actualAssociation.type)); } if (actualAssociation.type != expectedType) { fail("Wrong value for association at index " + index + " on " + response + "; expected " - + UserIdentificationAssociationValue.toString(expectedValue) + ", got " - + UserIdentificationAssociationValue.toString(actualAssociation.value)); + + DebugUtils.constantToString( + UserIdentificationAssociationValue.class, expectedValue) + + ", got " + + DebugUtils.constantToString( + UserIdentificationAssociationValue.class, actualAssociation.value)); } } } diff --git a/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java b/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java index c31e8e372f..245714f11b 100644 --- a/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java +++ b/tests/carservice_unit_test/src/com/android/car/hal/UserHalServiceTest.java @@ -21,16 +21,16 @@ import static android.car.VehiclePropertyIds.INITIAL_USER_INFO; import static android.car.VehiclePropertyIds.REMOVE_USER; import static android.car.VehiclePropertyIds.SWITCH_USER; import static android.car.VehiclePropertyIds.USER_IDENTIFICATION_ASSOCIATION; -import static android.car.test.mocks.CarArgumentMatchers.isProperty; -import static android.car.test.mocks.CarArgumentMatchers.isPropertyWithValues; -import static android.car.test.util.VehicleHalTestingHelper.newConfigDeprecated; -import static android.car.test.util.VehicleHalTestingHelper.newSubscribableConfigDeprecated; -import static android.hardware.automotive.vehicle.V2_0.InitialUserInfoRequestType.COLD_BOOT; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.CUSTOM_1; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationType.KEY_FOB; -import static android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociationValue.ASSOCIATED_CURRENT_USER; - +import static android.hardware.automotive.vehicle.InitialUserInfoRequestType.COLD_BOOT; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationSetValue.ASSOCIATE_CURRENT_USER; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.CUSTOM_1; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationType.KEY_FOB; +import static android.hardware.automotive.vehicle.UserIdentificationAssociationValue.ASSOCIATED_CURRENT_USER; + +import static com.android.car.hal.HalPropValueMatcher.isProperty; +import static com.android.car.hal.HalPropValueMatcher.isPropertyWithValues; +import static com.android.car.hal.VehicleHalTestingHelper.newConfig; +import static com.android.car.hal.VehicleHalTestingHelper.newSubscribableConfig; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.google.common.truth.Truth.assertThat; @@ -51,26 +51,23 @@ import android.annotation.Nullable; import android.car.hardware.property.VehicleHalStatusCode; import android.car.test.mocks.AbstractExtendedMockitoTestCase; import android.car.test.mocks.AbstractExtendedMockitoTestCase.CustomMockitoSessionBuilder; -import android.hardware.automotive.vehicle.V2_0.CreateUserRequest; -import android.hardware.automotive.vehicle.V2_0.CreateUserResponse; -import android.hardware.automotive.vehicle.V2_0.CreateUserStatus; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoResponse; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoResponseAction; -import android.hardware.automotive.vehicle.V2_0.RemoveUserRequest; -import android.hardware.automotive.vehicle.V2_0.SwitchUserMessageType; -import android.hardware.automotive.vehicle.V2_0.SwitchUserRequest; -import android.hardware.automotive.vehicle.V2_0.SwitchUserResponse; -import android.hardware.automotive.vehicle.V2_0.SwitchUserStatus; -import android.hardware.automotive.vehicle.V2_0.UserFlags; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetAssociation; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest; -import android.hardware.automotive.vehicle.V2_0.UserInfo; -import android.hardware.automotive.vehicle.V2_0.UsersInfo; -import android.hardware.automotive.vehicle.V2_0.VehiclePropConfig; -import android.hardware.automotive.vehicle.V2_0.VehiclePropValue; +import android.hardware.automotive.vehicle.CreateUserRequest; +import android.hardware.automotive.vehicle.CreateUserResponse; +import android.hardware.automotive.vehicle.CreateUserStatus; +import android.hardware.automotive.vehicle.InitialUserInfoResponse; +import android.hardware.automotive.vehicle.InitialUserInfoResponseAction; +import android.hardware.automotive.vehicle.RemoveUserRequest; +import android.hardware.automotive.vehicle.SwitchUserMessageType; +import android.hardware.automotive.vehicle.SwitchUserRequest; +import android.hardware.automotive.vehicle.SwitchUserResponse; +import android.hardware.automotive.vehicle.SwitchUserStatus; +import android.hardware.automotive.vehicle.UserIdentificationAssociation; +import android.hardware.automotive.vehicle.UserIdentificationGetRequest; +import android.hardware.automotive.vehicle.UserIdentificationResponse; +import android.hardware.automotive.vehicle.UserIdentificationSetAssociation; +import android.hardware.automotive.vehicle.UserIdentificationSetRequest; +import android.hardware.automotive.vehicle.UserInfo; +import android.hardware.automotive.vehicle.UsersInfo; import android.os.Handler; import android.os.Looper; import android.os.ServiceSpecificException; @@ -159,11 +156,13 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { private final UserInfo mUser0 = new UserInfo(); private final UserInfo mUser10 = new UserInfo(); - private final UsersInfo mUsersInfo = new UsersInfo(); + private final UsersInfo mUsersInfo = UserHalHelper.emptyUsersInfo(); // Must be a spy so we can mock getNextRequestId() private UserHalService mUserHalService; + private final HalPropValueBuilder mPropValueBuilder = new HalPropValueBuilder(/*isAidl=*/true); + @Override protected void onSessionBuilder(CustomMockitoSessionBuilder builder) { builder.spyStatic(CarSystemProperties.class); @@ -172,16 +171,16 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Before public void setFixtures() { mockUserHalEnabled(true); - + when(mVehicleHal.getHalPropValueBuilder()).thenReturn(mPropValueBuilder); mUserHalService = spy(new UserHalService(mVehicleHal, mHandler)); // Needs at least one property, otherwise isSupported() and isUserAssociationSupported() // will return false - mUserHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER), - newSubscribableConfigDeprecated(USER_IDENTIFICATION_ASSOCIATION))); + mUserHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), + newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER), + newSubscribableConfig(USER_IDENTIFICATION_ASSOCIATION))); mUser0.userId = 0; mUser0.flags = 100; @@ -190,9 +189,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { mUsersInfo.currentUser = mUser0; mUsersInfo.numberUsers = 2; - mUsersInfo.existingUsers = new ArrayList<>(2); - mUsersInfo.existingUsers.add(mUser0); - mUsersInfo.existingUsers.add(mUser10); + mUsersInfo.existingUsers = new UserInfo[]{mUser0, mUser10}; CarLocalServices.addService(CarUserService.class, mCarUserService); } @@ -207,7 +204,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated(Collections.emptyList()); + myHalService.takeProperties(Collections.emptyList()); assertThat(myHalService.isSupported()).isFalse(); assertThat(myHalService.isUserAssociationSupported()).isFalse(); } @@ -216,10 +213,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testTakeSupportedProperties_supportedFewProperties() { // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), + newSubscribableConfig(REMOVE_USER))); assertThat(myHalService.isSupported()).isFalse(); assertThat(myHalService.isUserAssociationSupported()).isFalse(); @@ -230,11 +227,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { mockUserHalEnabled(null); // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER))); assertThat(myHalService.isSupported()).isFalse(); assertThat(myHalService.isUserAssociationSupported()).isFalse(); @@ -245,11 +241,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { mockUserHalEnabled(false); // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER))); assertThat(myHalService.isSupported()).isFalse(); assertThat(myHalService.isUserAssociationSupported()).isFalse(); @@ -259,11 +254,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testTakeSupportedProperties_supportedAllCoreProperties() { // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), + newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER))); assertThat(myHalService.isSupported()).isTrue(); assertThat(myHalService.isUserAssociationSupported()).isFalse(); @@ -274,12 +269,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { mockUserHalEnabled(false); // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER), - newSubscribableConfigDeprecated(USER_IDENTIFICATION_ASSOCIATION))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER), + newSubscribableConfig(USER_IDENTIFICATION_ASSOCIATION))); assertThat(myHalService.isSupported()).isFalse(); assertThat(myHalService.isUserAssociationSupported()).isTrue(); @@ -290,12 +284,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { mockUserHalEnabled(null); // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER), - newSubscribableConfigDeprecated(USER_IDENTIFICATION_ASSOCIATION))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER), + newSubscribableConfig(USER_IDENTIFICATION_ASSOCIATION))); assertThat(myHalService.isSupported()).isFalse(); assertThat(myHalService.isUserAssociationSupported()).isTrue(); @@ -305,12 +298,12 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testTakeSupportedProperties_supportedAllProperties() { // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER), - newSubscribableConfigDeprecated(USER_IDENTIFICATION_ASSOCIATION))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), + newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER), + newSubscribableConfig(USER_IDENTIFICATION_ASSOCIATION))); assertThat(myHalService.isSupported()).isTrue(); assertThat(myHalService.isUserAssociationSupported()).isTrue(); @@ -320,14 +313,14 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testTakeSupportedPropertiesAndInit() { // Cannot use mUserHalService because it's already set with supported properties UserHalService myHalService = new UserHalService(mVehicleHal); - VehiclePropConfig unsupportedConfig = newConfigDeprecated(CURRENT_GEAR); + HalPropConfig unsupportedConfig = newConfig(CURRENT_GEAR); - myHalService.takePropertiesDeprecated( - Arrays.asList(newSubscribableConfigDeprecated(INITIAL_USER_INFO), - newSubscribableConfigDeprecated(CREATE_USER), - newSubscribableConfigDeprecated(REMOVE_USER), - newSubscribableConfigDeprecated(SWITCH_USER), unsupportedConfig, - newSubscribableConfigDeprecated(USER_IDENTIFICATION_ASSOCIATION))); + myHalService.takeProperties( + Arrays.asList(newSubscribableConfig(INITIAL_USER_INFO), + newSubscribableConfig(CREATE_USER), + newSubscribableConfig(REMOVE_USER), + newSubscribableConfig(SWITCH_USER), unsupportedConfig, + newSubscribableConfig(USER_IDENTIFICATION_ASSOCIATION))); // Ideally there should be 2 test methods (one for takeSupportedProperties() and one for @@ -430,7 +423,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserInfo_halReplyWithWrongRequestId() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO, + HalPropValue propResponse = createPropRequest(INITIAL_USER_INFO, REQUEST_ID_PLACE_HOLDER, INITIAL_USER_INFO_RESPONSE_ACTION); replySetPropertyWithOnChangeEvent(INITIAL_USER_INFO, propResponse, @@ -448,10 +441,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserInfo_halReturnedInvalidAction() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO, + HalPropValue propResponse = createPropRequest(INITIAL_USER_INFO, REQUEST_ID_PLACE_HOLDER, INITIAL_USER_INFO_RESPONSE_ACTION); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( INITIAL_USER_INFO, propResponse, /* rightRequestId= */ true); GenericHalCallback<InitialUserInfoResponse> callback = new GenericHalCallback<>( @@ -471,10 +464,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserInfo_successDefault() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO, + HalPropValue propResponse = createPropRequest(INITIAL_USER_INFO, REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.DEFAULT); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( INITIAL_USER_INFO, propResponse, /* rightRequestId= */ true); GenericHalCallback<InitialUserInfoResponse> callback = new GenericHalCallback<>( @@ -494,17 +487,17 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { assertThat(actualResponse.userNameToCreate).isEmpty(); assertThat(actualResponse.userToSwitchOrCreate).isNotNull(); assertThat(actualResponse.userToSwitchOrCreate.userId).isEqualTo(UserHandle.USER_NULL); - assertThat(actualResponse.userToSwitchOrCreate.flags).isEqualTo(UserFlags.NONE); + assertThat(actualResponse.userToSwitchOrCreate.flags).isEqualTo(0); } @Test public void testGetUserInfo_successSwitchUser() throws Exception { int userIdToSwitch = 42; - VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO, - REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.SWITCH); - propResponse.value.int32Values.add(userIdToSwitch); + HalPropValue propResponse = createPropRequest(INITIAL_USER_INFO, + REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.SWITCH, + new int[]{userIdToSwitch}); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( INITIAL_USER_INFO, propResponse, /* rightRequestId= */ true); GenericHalCallback<InitialUserInfoResponse> callback = new GenericHalCallback<>( @@ -524,20 +517,19 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { UserInfo userToSwitch = actualResponse.userToSwitchOrCreate; assertThat(userToSwitch).isNotNull(); assertThat(userToSwitch.userId).isEqualTo(userIdToSwitch); - assertThat(userToSwitch.flags).isEqualTo(UserFlags.NONE); + assertThat(userToSwitch.flags).isEqualTo(0); } @Test public void testGetUserInfo_successCreateUser() throws Exception { int newUserFlags = 108; String newUserName = "Groot"; - VehiclePropValue propResponse = UserHalHelper.createPropRequest(INITIAL_USER_INFO, - REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.CREATE); - propResponse.value.int32Values.add(666); // userId (not used) - propResponse.value.int32Values.add(newUserFlags); - propResponse.value.stringValue = "||" + newUserName; + int unusedUserId = 666; + HalPropValue propResponse = createPropRequest(INITIAL_USER_INFO, + REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.CREATE, + new int[]{unusedUserId, newUserFlags}, "||" + newUserName); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( INITIAL_USER_INFO, propResponse, /* rightRequestId= */ true); GenericHalCallback<InitialUserInfoResponse> callback = new GenericHalCallback<>( @@ -646,7 +638,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSwitchUser_halReplyWithWrongRequestId() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, + HalPropValue propResponse = createPropRequest(SWITCH_USER, REQUEST_ID_PLACE_HOLDER, InitialUserInfoResponseAction.SWITCH); replySetPropertyWithOnChangeEvent(SWITCH_USER, propResponse, @@ -665,11 +657,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSwitchUser_halReturnedInvalidMessageType() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, - REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.LEGACY_ANDROID_SWITCH); - propResponse.value.int32Values.add(SwitchUserStatus.SUCCESS); + HalPropValue propResponse = createPropRequest(SWITCH_USER, + REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.LEGACY_ANDROID_SWITCH, + new int[]{SwitchUserStatus.SUCCESS}); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( SWITCH_USER, propResponse, /* rightRequestId= */ true); GenericHalCallback<SwitchUserResponse> callback = new GenericHalCallback<>( @@ -690,11 +682,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSwitchUser_success() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, - REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE); - propResponse.value.int32Values.add(SwitchUserStatus.SUCCESS); + HalPropValue propResponse = createPropRequest(SWITCH_USER, + REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE, + new int[]{SwitchUserStatus.SUCCESS}); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( SWITCH_USER, propResponse, /* rightRequestId= */ true); GenericHalCallback<SwitchUserResponse> callback = new GenericHalCallback<>( @@ -718,12 +710,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSwitchUser_failure() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, - REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE); - propResponse.value.int32Values.add(SwitchUserStatus.FAILURE); - propResponse.value.stringValue = "D'OH!"; + HalPropValue propResponse = createPropRequest(SWITCH_USER, + REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE, + new int[]{SwitchUserStatus.FAILURE}, "D'OH!"); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( SWITCH_USER, propResponse, /* rightRequestId= */ true); GenericHalCallback<SwitchUserResponse> callback = new GenericHalCallback<>( @@ -768,11 +759,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSwitchUser_halReturnedInvalidStatus() throws Exception { - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, - REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE); - propResponse.value.int32Values.add(/*status =*/ 110); // an invalid status + HalPropValue propResponse = createPropRequest(SWITCH_USER, + REQUEST_ID_PLACE_HOLDER, SwitchUserMessageType.VEHICLE_RESPONSE, + new int[]{/*status =*/ 110}); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( SWITCH_USER, propResponse, /* rightRequestId= */ true); GenericHalCallback<SwitchUserResponse> callback = new GenericHalCallback<>( @@ -795,12 +786,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testUserSwitch_OEMRequest_success() throws Exception { int requestId = -4; int targetUserId = 11; - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, - requestId, SwitchUserMessageType.VEHICLE_REQUEST); + HalPropValue propResponse = createPropRequest(SWITCH_USER, requestId, + SwitchUserMessageType.VEHICLE_REQUEST, new int[]{targetUserId}); - propResponse.value.int32Values.add(targetUserId); - - mUserHalService.onHalEventsDeprecated(Arrays.asList(propResponse)); + mUserHalService.onHalEvents(Arrays.asList(propResponse)); waitForHandler(); verify(mCarUserService).switchAndroidUserFromHal(requestId, targetUserId); @@ -810,11 +799,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testUserSwitch_OEMRequest_failure_positiveRequestId() throws Exception { int requestId = 4; int targetUserId = 11; - VehiclePropValue propResponse = UserHalHelper.createPropRequest(SWITCH_USER, - requestId, SwitchUserMessageType.VEHICLE_REQUEST); - propResponse.value.int32Values.add(targetUserId); + HalPropValue propResponse = createPropRequest(SWITCH_USER, requestId, + SwitchUserMessageType.VEHICLE_REQUEST, new int[]{targetUserId}); - mUserHalService.onHalEventsDeprecated(Arrays.asList(propResponse)); + mUserHalService.onHalEvents(Arrays.asList(propResponse)); waitForHandler(); verify(mCarUserService, never()).switchAndroidUserFromHal(anyInt(), anyInt()); @@ -826,7 +814,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { UserHalService myHalService = new UserHalService(mVehicleHal); assertThrows(IllegalStateException.class, - () -> myHalService.postSwitchResponse(new SwitchUserRequest())); + () -> myHalService.postSwitchResponse(UserHalHelper.emptySwitchUserRequest())); } @Test @@ -847,10 +835,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { SwitchUserRequest request = createUserSwitchRequest(mUser10, mUsersInfo); request.requestId = 42; mUserHalService.postSwitchResponse(request); - ArgumentCaptor<VehiclePropValue> propCaptor = - ArgumentCaptor.forClass(VehiclePropValue.class); - verify(mVehicleHal).setDeprecated(propCaptor.capture()); - VehiclePropValue prop = propCaptor.getValue(); + ArgumentCaptor<HalPropValue> propCaptor = + ArgumentCaptor.forClass(HalPropValue.class); + verify(mVehicleHal).set(propCaptor.capture()); + HalPropValue prop = propCaptor.getValue(); assertHalSetSwitchUserRequest(prop, SwitchUserMessageType.ANDROID_POST_SWITCH, mUser10); } @@ -861,7 +849,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testLegacyUserSwitch_noMessageType() { - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); assertThrows(IllegalArgumentException.class, () -> mUserHalService.legacyUserSwitch(request)); @@ -869,7 +857,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testLegacyUserSwitch_noTargetUserInfo() { - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.messageType = SwitchUserMessageType.ANDROID_SWITCH; assertThrows(IllegalArgumentException.class, @@ -882,7 +870,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { UserHalService myHalService = new UserHalService(mVehicleHal); assertThrows(IllegalStateException.class, - () -> myHalService.removeUser(new RemoveUserRequest())); + () -> myHalService.removeUser(UserHalHelper.emptyRemoveUserRequest())); } @Test @@ -895,7 +883,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testRemoveUser_noRequestId() { - RemoveUserRequest request = new RemoveUserRequest(); + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); assertThrows(IllegalArgumentException.class, () -> mUserHalService.removeUser(request)); @@ -903,7 +891,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testRemoveUser_noRemovedUserInfo() { - RemoveUserRequest request = new RemoveUserRequest(); + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); request.requestId = 1; assertThrows(IllegalArgumentException.class, @@ -912,7 +900,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testRemoveUser_noUsersInfo() { - RemoveUserRequest request = new RemoveUserRequest(); + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); request.requestId = 1; request.removedUserInfo = mUser10; @@ -922,15 +910,15 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testRemoveUser_HalCalledWithCorrectProp() { - RemoveUserRequest request = new RemoveUserRequest(); + RemoveUserRequest request = UserHalHelper.emptyRemoveUserRequest(); request.removedUserInfo = mUser10; request.usersInfo = mUsersInfo; - ArgumentCaptor<VehiclePropValue> propCaptor = - ArgumentCaptor.forClass(VehiclePropValue.class); + ArgumentCaptor<HalPropValue> propCaptor = + ArgumentCaptor.forClass(HalPropValue.class); mUserHalService.removeUser(request); - verify(mVehicleHal).setDeprecated(propCaptor.capture()); + verify(mVehicleHal).set(propCaptor.capture()); assertHalSetRemoveUserRequest(propCaptor.getValue(), mUser10); } @@ -940,12 +928,12 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { UserHalService myHalService = new UserHalService(mVehicleHal); assertThrows(IllegalStateException.class, - () -> myHalService.legacyUserSwitch(new SwitchUserRequest())); + () -> myHalService.legacyUserSwitch(UserHalHelper.emptySwitchUserRequest())); } @Test public void testLegacyUserSwitch_noUsersInfo() { - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.messageType = SwitchUserMessageType.ANDROID_SWITCH; request.targetUser = mUser10; @@ -955,16 +943,16 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testLegacyUserSwitch_HalCalledWithCorrectProp() { - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.messageType = SwitchUserMessageType.LEGACY_ANDROID_SWITCH; request.targetUser = mUser10; request.usersInfo = mUsersInfo; mUserHalService.legacyUserSwitch(request); - ArgumentCaptor<VehiclePropValue> propCaptor = - ArgumentCaptor.forClass(VehiclePropValue.class); - verify(mVehicleHal).setDeprecated(propCaptor.capture()); - VehiclePropValue prop = propCaptor.getValue(); + ArgumentCaptor<HalPropValue> propCaptor = + ArgumentCaptor.forClass(HalPropValue.class); + verify(mVehicleHal).set(propCaptor.capture()); + HalPropValue prop = propCaptor.getValue(); assertHalSetSwitchUserRequest(prop, SwitchUserMessageType.LEGACY_ANDROID_SWITCH, mUser10); } @@ -975,8 +963,8 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { UserHalService myHalService = new UserHalService(mVehicleHal); assertThrows(IllegalStateException.class, - () -> myHalService.createUser(new CreateUserRequest(), HAL_TIMEOUT_MS, - noOpCallback())); + () -> myHalService.createUser(UserHalHelper.emptyCreateUserRequest(), + HAL_TIMEOUT_MS, noOpCallback())); } @Test @@ -988,16 +976,16 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testCreateUser_invalidTimeout() { assertThrows(IllegalArgumentException.class, () -> mUserHalService - .createUser(new CreateUserRequest(), 0, noOpCallback())); + .createUser(UserHalHelper.emptyCreateUserRequest(), 0, noOpCallback())); assertThrows(IllegalArgumentException.class, () -> mUserHalService - .createUser(new CreateUserRequest(), -1, noOpCallback())); + .createUser(UserHalHelper.emptyCreateUserRequest(), -1, noOpCallback())); } @Test public void testCreateUser_noCallback() { - CreateUserRequest request = new CreateUserRequest(); + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.newUserInfo.userId = 10; - request.usersInfo.existingUsers.add(request.newUserInfo); + request.usersInfo.existingUsers = new UserInfo[]{request.newUserInfo}; assertThrows(NullPointerException.class, () -> mUserHalService .createUser(request, HAL_TIMEOUT_MS, null)); @@ -1008,7 +996,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { */ @NonNull private CreateUserRequest newValidCreateUserRequest() { - CreateUserRequest request = new CreateUserRequest(); + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.newUserInfo = mUser10; request.usersInfo = mUsersInfo; return request; @@ -1046,8 +1034,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testCreateUser_halReplyWithWrongRequestId() throws Exception { - VehiclePropValue propResponse = - UserHalHelper.createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER); + HalPropValue propResponse = createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER); replySetPropertyWithOnChangeEvent(CREATE_USER, propResponse, /* rightRequestId= */ false); @@ -1064,14 +1051,13 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testCreateUser_success() throws Exception { - VehiclePropValue propResponse = - UserHalHelper.createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER); - propResponse.value.int32Values.add(CreateUserStatus.SUCCESS); + HalPropValue propResponse = createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER, + new int[]{CreateUserStatus.SUCCESS}); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( CREATE_USER, propResponse, /* rightRequestId= */ true); - CreateUserRequest request = new CreateUserRequest(); + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.newUserInfo = mUser10; request.usersInfo = mUsersInfo; GenericHalCallback<CreateUserResponse> callback = new GenericHalCallback<>( @@ -1092,15 +1078,13 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testCreateUser_failure() throws Exception { - VehiclePropValue propResponse = - UserHalHelper.createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER); - propResponse.value.int32Values.add(CreateUserStatus.FAILURE); - propResponse.value.stringValue = "D'OH!"; + HalPropValue propResponse = createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER, + /* requestType= */ null, new int[]{CreateUserStatus.FAILURE}, "D'OH!"); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> reqCaptor = replySetPropertyWithOnChangeEvent( CREATE_USER, propResponse, /* rightRequestId= */ true); - CreateUserRequest request = new CreateUserRequest(); + CreateUserRequest request = UserHalHelper.emptyCreateUserRequest(); request.newUserInfo = mUser10; request.usersInfo = mUsersInfo; GenericHalCallback<CreateUserResponse> callback = new GenericHalCallback<>( @@ -1140,12 +1124,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testCreateUser_halReturnedInvalidStatus() throws Exception { - VehiclePropValue propResponse = - UserHalHelper.createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER); - propResponse.value.int32Values.add(/*status =*/ -1); // an invalid status + HalPropValue propResponse = createPropRequest(CREATE_USER, REQUEST_ID_PLACE_HOLDER, + new int[]{/*status =*/ -1}); - AtomicReference<VehiclePropValue> reqCaptor = replySetPropertyWithOnChangeEvent( - CREATE_USER, propResponse, /* rightRequestId= */ true); + replySetPropertyWithOnChangeEvent(CREATE_USER, propResponse, /* rightRequestId= */ true); GenericHalCallback<CreateUserResponse> callback = new GenericHalCallback<>( CALLBACK_TIMEOUT); @@ -1176,8 +1158,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { public void testGetUserAssociation_requestWithDuplicatedTypes() { UserIdentificationGetRequest request = new UserIdentificationGetRequest(); request.numberAssociationTypes = 2; - request.associationTypes.add(KEY_FOB); - request.associationTypes.add(KEY_FOB); + request.associationTypes = new int[]{KEY_FOB, KEY_FOB}; assertThrows(IllegalArgumentException.class, () -> mUserHalService.getUserAssociation(request)); @@ -1185,11 +1166,15 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserAssociation_invalidResponse() { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(1); // 1 associations - propResponse.value.int32Values.add(KEY_FOB); // type only, it's missing value + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, + new int[]{ + DEFAULT_REQUEST_ID, + // 1 associations + 1, + // type only, it's missing value + KEY_FOB}); + UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest( propResponse); @@ -1218,14 +1203,17 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserAssociation_wrongNumberOfAssociationsOnResponse() { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(2); // 2 associations - propResponse.value.int32Values.add(KEY_FOB); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); - propResponse.value.int32Values.add(CUSTOM_1); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, + new int[]{ + DEFAULT_REQUEST_ID, + // 2 associations + 2, + KEY_FOB, + ASSOCIATED_CURRENT_USER, + CUSTOM_1, + ASSOCIATED_CURRENT_USER + }); UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest( propResponse); @@ -1236,12 +1224,15 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserAssociation_typesOnResponseMismatchTypesOnRequest() { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(1); // 1 association - propResponse.value.int32Values.add(CUSTOM_1); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, + new int[]{ + DEFAULT_REQUEST_ID, + // 1 association + 1, + CUSTOM_1, + ASSOCIATED_CURRENT_USER + }); UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest( propResponse); @@ -1252,12 +1243,15 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserAssociation_requestIdMismatch() { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID + 1); - propResponse.value.int32Values.add(1); // 1 association - propResponse.value.int32Values.add(KEY_FOB); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, + new int[]{ + DEFAULT_REQUEST_ID + 1, + // 1 association + 1, + KEY_FOB, + ASSOCIATED_CURRENT_USER + }); UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest( propResponse); @@ -1268,12 +1262,15 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testGetUserAssociation_ok() { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(1); // 1 association - propResponse.value.int32Values.add(KEY_FOB); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, + new int[]{ + DEFAULT_REQUEST_ID, + // 1 association + 1, + KEY_FOB, + ASSOCIATED_CURRENT_USER + }); UserIdentificationGetRequest request = replyToValidGetUserIdentificationRequest( propResponse); @@ -1281,8 +1278,8 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { assertThat(response.requestId).isEqualTo(DEFAULT_REQUEST_ID); assertThat(response.numberAssociation).isEqualTo(1); - assertThat(response.associations).hasSize(1); - UserIdentificationAssociation actualAssociation = response.associations.get(0); + assertThat(response.associations.length).isEqualTo(1); + UserIdentificationAssociation actualAssociation = response.associations[0]; assertThat(actualAssociation.type).isEqualTo(KEY_FOB); assertThat(actualAssociation.value).isEqualTo(ASSOCIATED_CURRENT_USER); } @@ -1294,12 +1291,12 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { assertThrows(IllegalStateException.class, () -> myHalService.setUserAssociation(HAL_TIMEOUT_MS, - new UserIdentificationSetRequest(), noOpCallback())); + UserHalHelper.emptyUserIdentificationSetRequest(), noOpCallback())); } @Test public void testSetUserAssociation_invalidTimeout() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); assertThrows(IllegalArgumentException.class, () -> mUserHalService.setUserAssociation(0, request, noOpCallback())); assertThrows(IllegalArgumentException.class, () -> @@ -1314,20 +1311,19 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSetUserAssociation_nullCallback() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); assertThrows(NullPointerException.class, () -> mUserHalService.setUserAssociation(HAL_TIMEOUT_MS, request, null)); } @Test public void testSetUserAssociation_requestWithDuplicatedTypes() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.numberAssociations = 2; UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation(); association1.type = KEY_FOB; association1.value = ASSOCIATE_CURRENT_USER; - request.associations.add(association1); - request.associations.add(association1); + request.associations = new UserIdentificationSetAssociation[]{association1, association1}; assertThrows(IllegalArgumentException.class, () -> mUserHalService.setUserAssociation(HAL_TIMEOUT_MS, request, noOpCallback())); @@ -1386,10 +1382,10 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSetUserAssociation_responseWithWrongRequestId() throws Exception { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID + 1); - AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent( + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, DEFAULT_REQUEST_ID + 1); + + AtomicReference<HalPropValue> propRequest = replySetPropertyWithOnChangeEvent( USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true); UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest(); GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>( @@ -1407,14 +1403,11 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSetUserAssociation_notEnoughValuesOnResponse() throws Exception { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; // need at least 4: requestId, number associations, type1, value1 - propResponse.value.int32Values.add(1); - propResponse.value.int32Values.add(2); - propResponse.value.int32Values.add(3); + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, new int[]{1, 2, 3}); - AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent( + AtomicReference<HalPropValue> propRequest = replySetPropertyWithOnChangeEvent( USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true); UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest(); GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>( @@ -1432,16 +1425,18 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSetUserAssociation_wrongNumberOfAssociationsOnResponse() throws Exception { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(2); // 2 associations; request is just 1 - propResponse.value.int32Values.add(KEY_FOB); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); - propResponse.value.int32Values.add(CUSTOM_1); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); - - AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent( + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, new int[]{ + DEFAULT_REQUEST_ID, + // 2 associations; request is just 1 + 2, + KEY_FOB, + ASSOCIATED_CURRENT_USER, + CUSTOM_1, + ASSOCIATED_CURRENT_USER + }); + + AtomicReference<HalPropValue> propRequest = replySetPropertyWithOnChangeEvent( USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true); UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest(); GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>( @@ -1459,14 +1454,17 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSetUserAssociation_typeMismatchOnResponse() throws Exception { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(1); // 1 association - propResponse.value.int32Values.add(CUSTOM_1); // request is KEY_FOB - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); - - AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent( + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, new int[]{ + DEFAULT_REQUEST_ID, + // 1 association + 1, + // request is KEY_FOB + CUSTOM_1, + ASSOCIATED_CURRENT_USER + }); + + AtomicReference<HalPropValue> propRequest = replySetPropertyWithOnChangeEvent( USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true); UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest(); GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>( @@ -1484,14 +1482,16 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { @Test public void testSetUserAssociation_ok() throws Exception { - VehiclePropValue propResponse = new VehiclePropValue(); - propResponse.prop = USER_IDENTIFICATION_ASSOCIATION; - propResponse.value.int32Values.add(DEFAULT_REQUEST_ID); - propResponse.value.int32Values.add(1); // 1 association - propResponse.value.int32Values.add(KEY_FOB); - propResponse.value.int32Values.add(ASSOCIATED_CURRENT_USER); - - AtomicReference<VehiclePropValue> propRequest = replySetPropertyWithOnChangeEvent( + HalPropValue propResponse = mPropValueBuilder.build(USER_IDENTIFICATION_ASSOCIATION, + /* areaId= */ 0, new int[]{ + DEFAULT_REQUEST_ID, + // 1 association + 1, + KEY_FOB, + ASSOCIATED_CURRENT_USER + }); + + AtomicReference<HalPropValue> propRequest = replySetPropertyWithOnChangeEvent( USER_IDENTIFICATION_ASSOCIATION, propResponse, /* rightRequestId= */ true); UserIdentificationSetRequest request = replyToValidSetUserIdentificationRequest(); GenericHalCallback<UserIdentificationResponse> callback = new GenericHalCallback<>( @@ -1509,24 +1509,24 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { assertThat(actualResponse.requestId).isEqualTo(DEFAULT_REQUEST_ID); assertThat(actualResponse.numberAssociation).isEqualTo(1); - assertThat(actualResponse.associations).hasSize(1); - UserIdentificationAssociation actualAssociation = actualResponse.associations.get(0); + assertThat(actualResponse.associations.length).isEqualTo(1); + UserIdentificationAssociation actualAssociation = actualResponse.associations[0]; assertThat(actualAssociation.type).isEqualTo(KEY_FOB); assertThat(actualAssociation.value).isEqualTo(ASSOCIATED_CURRENT_USER); } /** - * Asserts the given {@link UsersInfo} is properly represented in the {@link VehiclePropValue}. + * Asserts the given {@link UsersInfo} is properly represented in the {@link HalPropValue}. * * @param value property containing the info * @param info info to be checked * @param initialIndex first index of the info values in the property's {@code int32Values} */ - private void assertUsersInfo(VehiclePropValue value, UsersInfo info, int initialIndex) { + private void assertUsersInfo(HalPropValue value, UsersInfo info, int initialIndex) { // TODO: consider using UserHalHelper to convert the property into a specific request, // and compare the request's UsersInfo. // But such method is not needed in production code yet. - ArrayList<Integer> values = value.value.int32Values; + List<Integer> values = getIntValues(value); assertWithMessage("wrong values size").that(values) .hasSize(initialIndex + 3 + info.numberUsers * 2); @@ -1544,7 +1544,7 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { for (int j = 0; j < info.numberUsers; j++) { int actualUserId = values.get(i++); int actualUserFlags = values.get(i++); - UserInfo expectedUser = info.existingUsers.get(j); + UserInfo expectedUser = info.existingUsers[j]; assertWithMessage("wrong id for existing user#%s at index %s", j, i) .that(actualUserId).isEqualTo(expectedUser.userId); assertWithMessage("wrong flags for existing user#%s at index %s", j, i) @@ -1562,20 +1562,33 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { * * @return reference to the value passed to {@code set()}. */ - private AtomicReference<VehiclePropValue> replySetPropertyWithOnChangeEvent(int prop, - VehiclePropValue response, boolean rightRequestId) throws Exception { - AtomicReference<VehiclePropValue> ref = new AtomicReference<>(); + private AtomicReference<HalPropValue> replySetPropertyWithOnChangeEvent(int prop, + HalPropValue response, boolean rightRequestId) throws Exception { + AtomicReference<HalPropValue> ref = new AtomicReference<>(); doAnswer((inv) -> { - VehiclePropValue request = inv.getArgument(0); + HalPropValue request = inv.getArgument(0); ref.set(request); - int requestId = request.value.int32Values.get(0); + int requestId = request.getInt32Value(0); int responseId = rightRequestId ? requestId : requestId + 1000; - response.value.int32Values.set(0, responseId); - Log.d(TAG, "replySetPropertyWithOnChangeEvent(): resp=" + response + " for req=" + + int[] intValues = new int[response.getInt32ValuesSize()]; + for (int i = 0; i < response.getInt32ValuesSize(); i++) { + if (i == 0) { + intValues[i] = responseId; + continue; + } + intValues[i] = response.getInt32Value(i); + } + HalPropValue responseCopy = mPropValueBuilder.build(response.getPropId(), + response.getAreaId(), response.getTimestamp(), response.getStatus(), intValues, + /*floatValues=*/new float[0], /*int64Values=*/new long[0], + response.getStringValue(), /*byteValues=*/new byte[0]); + + Log.d(TAG, "replySetPropertyWithOnChangeEvent(): resp=" + responseCopy + " for req=" + request); - mUserHalService.onHalEventsDeprecated(Arrays.asList(response)); + mUserHalService.onHalEvents(Arrays.asList(responseCopy)); return null; - }).when(mVehicleHal).setDeprecated(isProperty(prop)); + }).when(mVehicleHal).set(isProperty(prop)); return ref; } @@ -1585,13 +1598,13 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { private void replySetPropertyWithTimeoutException(int prop) throws Exception { doThrow(new ServiceSpecificException(VehicleHalStatusCode.STATUS_TRY_AGAIN, "PropId: 0x" + Integer.toHexString(prop))).when(mVehicleHal) - .setDeprecated(isProperty(prop)); + .set(isProperty(prop)); } @NonNull private SwitchUserRequest createUserSwitchRequest(@NonNull UserInfo targetUser, @NonNull UsersInfo usersInfo) { - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.targetUser = targetUser; request.usersInfo = usersInfo; return request; @@ -1601,16 +1614,17 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { * Creates and set expectations for a valid request. */ private UserIdentificationGetRequest replyToValidGetUserIdentificationRequest( - @NonNull VehiclePropValue response) { + @NonNull HalPropValue response) { mockNextRequestId(DEFAULT_REQUEST_ID); UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + request.userInfo = new UserInfo(); request.userInfo.userId = DEFAULT_USER_ID; request.userInfo.flags = DEFAULT_USER_FLAGS; request.numberAssociationTypes = 1; - request.associationTypes.add(KEY_FOB); + request.associationTypes = new int[]{KEY_FOB}; - when(mVehicleHal.getDeprecated(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, + when(mVehicleHal.get(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, DEFAULT_REQUEST_ID, DEFAULT_USER_ID, DEFAULT_USER_FLAGS, /* numberAssociations= */ 1, KEY_FOB))) .thenReturn(response); @@ -1623,12 +1637,13 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { mockNextRequestId(DEFAULT_REQUEST_ID); UserIdentificationGetRequest request = new UserIdentificationGetRequest(); + request.userInfo = new UserInfo(); request.userInfo.userId = DEFAULT_USER_ID; request.userInfo.flags = DEFAULT_USER_FLAGS; request.numberAssociationTypes = 1; - request.associationTypes.add(KEY_FOB); + request.associationTypes = new int[]{KEY_FOB}; - when(mVehicleHal.getDeprecated(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, + when(mVehicleHal.get(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, DEFAULT_REQUEST_ID, DEFAULT_USER_ID, DEFAULT_USER_FLAGS, /* numberAssociations= */ 1, KEY_FOB))).thenThrow(e); @@ -1647,14 +1662,14 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { * Creates a valid request that can be used in test cases where its content is not asserted. */ private UserIdentificationSetRequest validUserIdentificationSetRequest() { - UserIdentificationSetRequest request = new UserIdentificationSetRequest(); + UserIdentificationSetRequest request = UserHalHelper.emptyUserIdentificationSetRequest(); request.userInfo.userId = DEFAULT_USER_ID; request.userInfo.flags = DEFAULT_USER_FLAGS; request.numberAssociations = 1; UserIdentificationSetAssociation association1 = new UserIdentificationSetAssociation(); association1.type = KEY_FOB; association1.value = ASSOCIATE_CURRENT_USER; - request.associations.add(association1); + request.associations = new UserIdentificationSetAssociation[]{association1}; return request; } @@ -1674,42 +1689,42 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { doReturn(value).when(() -> CarSystemProperties.getUserHalEnabled()); } - private void assertInitialUserInfoSetRequest(VehiclePropValue req, int requestType) { - assertThat(req.value.int32Values.get(1)).isEqualTo(requestType); + private void assertInitialUserInfoSetRequest(HalPropValue req, int requestType) { + assertThat(req.getInt32Value(1)).isEqualTo(requestType); assertUsersInfo(req, mUsersInfo, 2); } - private void assertHalSetSwitchUserRequest(VehiclePropValue req, int messageType, + private void assertHalSetSwitchUserRequest(HalPropValue req, int messageType, UserInfo targetUserInfo) { - assertThat(req.prop).isEqualTo(SWITCH_USER); - assertWithMessage("wrong request Id on %s", req).that(req.value.int32Values.get(0)) + assertThat(req.getPropId()).isEqualTo(SWITCH_USER); + assertWithMessage("wrong request Id on %s", req).that(req.getInt32Value(0)) .isAtLeast(1); - assertThat(req.value.int32Values.get(1)).isEqualTo(messageType); - assertWithMessage("targetuser.id mismatch on %s", req).that(req.value.int32Values.get(2)) + assertThat(req.getInt32Value(1)).isEqualTo(messageType); + assertWithMessage("targetuser.id mismatch on %s", req).that(req.getInt32Value(2)) .isEqualTo(targetUserInfo.userId); - assertWithMessage("targetuser.flags mismatch on %s", req).that(req.value.int32Values.get(3)) + assertWithMessage("targetuser.flags mismatch on %s", req).that(req.getInt32Value(3)) .isEqualTo(targetUserInfo.flags); assertUsersInfo(req, mUsersInfo, 4); } - private void assertHalSetRemoveUserRequest(VehiclePropValue req, UserInfo userInfo) { - assertThat(req.prop).isEqualTo(REMOVE_USER); - assertWithMessage("wrong request Id on %s", req).that(req.value.int32Values.get(0)) + private void assertHalSetRemoveUserRequest(HalPropValue req, UserInfo userInfo) { + assertThat(req.getPropId()).isEqualTo(REMOVE_USER); + assertWithMessage("wrong request Id on %s", req).that(req.getInt32Value(0)) .isAtLeast(1); - assertWithMessage("user.id mismatch on %s", req).that(req.value.int32Values.get(1)) + assertWithMessage("user.id mismatch on %s", req).that(req.getInt32Value(1)) .isEqualTo(userInfo.userId); - assertWithMessage("user.flags mismatch on %s", req).that(req.value.int32Values.get(2)) + assertWithMessage("user.flags mismatch on %s", req).that(req.getInt32Value(2)) .isEqualTo(userInfo.flags); assertUsersInfo(req, mUsersInfo, 3); } - private void assertHalSetCreateUserRequest(VehiclePropValue prop, CreateUserRequest request) { - assertThat(prop.prop).isEqualTo(CREATE_USER); - assertWithMessage("wrong request Id on %s", prop).that(prop.value.int32Values.get(0)) + private void assertHalSetCreateUserRequest(HalPropValue prop, CreateUserRequest request) { + assertThat(prop.getPropId()).isEqualTo(CREATE_USER); + assertWithMessage("wrong request Id on %s", prop).that(prop.getInt32Value(0)) .isEqualTo(request.requestId); - assertWithMessage("newUser.userId mismatch on %s", prop).that(prop.value.int32Values.get(1)) + assertWithMessage("newUser.userId mismatch on %s", prop).that(prop.getInt32Value(1)) .isEqualTo(request.newUserInfo.userId); - assertWithMessage("newUser.flags mismatch on %s", prop).that(prop.value.int32Values.get(2)) + assertWithMessage("newUser.flags mismatch on %s", prop).that(prop.getInt32Value(2)) .isEqualTo(request.newUserInfo.flags); assertUsersInfo(prop, request.usersInfo, 3); } @@ -1725,30 +1740,78 @@ public final class UserHalServiceTest extends AbstractExtendedMockitoTestCase { /** * Verifies {@code hal.get()} was called with the values used on - * {@link #replyToValidGetUserIdentificationRequest(VehiclePropValue)}. + * {@link #replyToValidGetUserIdentificationRequest(HalPropValue)}. */ private void verifyValidGetUserIdentificationRequestMade() { - verify(mVehicleHal).getDeprecated(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, + verify(mVehicleHal).get(isPropertyWithValues(USER_IDENTIFICATION_ASSOCIATION, DEFAULT_REQUEST_ID, DEFAULT_USER_ID, DEFAULT_USER_FLAGS, /* numberAssociations= */ 1, KEY_FOB)); } /** * Verifies {@code hal.set()} was called with the values used on - * {@link #replyToValidSetUserIdentificationRequest(VehiclePropValue)}. + * {@link #replyToValidSetUserIdentificationRequest(HalPropValue)}. */ - private void verifyValidSetUserIdentificationRequestMade(@NonNull VehiclePropValue request) { - assertThat(request.prop).isEqualTo(USER_IDENTIFICATION_ASSOCIATION); - assertThat(request.value.int32Values).containsExactly(DEFAULT_REQUEST_ID, DEFAULT_USER_ID, + private void verifyValidSetUserIdentificationRequestMade(@NonNull HalPropValue request) { + assertThat(request.getPropId()).isEqualTo(USER_IDENTIFICATION_ASSOCIATION); + + assertThat(getIntValues(request)).containsExactly(DEFAULT_REQUEST_ID, DEFAULT_USER_ID, DEFAULT_USER_FLAGS, /* numberAssociations= */ 1, KEY_FOB, ASSOCIATE_CURRENT_USER); } + private HalPropValue createPropRequest(int propId, int requestId) { + return createPropRequest(propId, requestId, null, new int[0], new String()); + } + + private HalPropValue createPropRequest(int propId, int requestId, int[] intValues) { + return createPropRequest(propId, requestId, null, intValues, new String()); + } + + private HalPropValue createPropRequest(int propId, int requestId, int requestType) { + return createPropRequest(propId, requestId, requestType, new int[0], new String()); + } + + private HalPropValue createPropRequest(int propId, int requestId, int requestType, + int[] intValues) { + return createPropRequest(propId, requestId, requestType, intValues, new String()); + } + + private HalPropValue createPropRequest(int propId, int requestId, Integer requestType, + int[] intValues, String stringValue) { + int intLength = intValues.length + 1; + if (requestType != null) { + intLength += 1; + } + int[] values = new int[intLength]; + values[0] = requestId; + int start = 1; + + if (requestType != null) { + values[1] = requestType; + start = 2; + } + for (int i = 0; i < intValues.length; i++) { + values[i + start] = intValues[i]; + } + return mPropValueBuilder.build(propId, /* areaId= */ 0, + SystemClock.elapsedRealtime(), /* status= */ 0, values, + new float[0], new long[0], stringValue, new byte[0]); + } + private static <T> HalCallback<T> noOpCallback() { return (i, r) -> { }; } - private final class GenericHalCallback<R> implements HalCallback<R> { + private static List<Integer> getIntValues(HalPropValue value) { + ArrayList<Integer> values = new ArrayList<Integer>(); + for (int i = 0; i < value.getInt32ValuesSize(); i++) { + values.add(value.getInt32Value(i)); + } + return values; + } + + private static final class GenericHalCallback<R> implements HalCallback<R> { private final CountDownLatch mLatch = new CountDownLatch(1); private final int mTimeout; diff --git a/tests/carservice_unit_test/src/com/android/car/hal/VehicleHalTestingHelper.java b/tests/carservice_unit_test/src/com/android/car/hal/VehicleHalTestingHelper.java new file mode 100644 index 0000000000..b42bc9bcd9 --- /dev/null +++ b/tests/carservice_unit_test/src/com/android/car/hal/VehicleHalTestingHelper.java @@ -0,0 +1,88 @@ +/* + * 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.car.hal; + +import android.hardware.automotive.vehicle.VehiclePropConfig; +import android.hardware.automotive.vehicle.VehiclePropertyAccess; +import android.hardware.automotive.vehicle.VehiclePropertyChangeMode; + +/** + * Provides utilities for Vehicle HAL related tasks. + */ +public final class VehicleHalTestingHelper { + + /** + * Creates an empty config for the given property. + * + * @deprecated TODO(b/205774940): Remove once we migrate all the usages to {@code newConfig}. + */ + @Deprecated + public static android.hardware.automotive.vehicle.V2_0.VehiclePropConfig newConfigDeprecated( + int prop) { + android.hardware.automotive.vehicle.V2_0.VehiclePropConfig config = + new android.hardware.automotive.vehicle.V2_0.VehiclePropConfig(); + config.prop = prop; + return config; + } + + /** + * Creates an empty config for the given property. + */ + public static HalPropConfig newConfig(int prop) { + VehiclePropConfig config = new VehiclePropConfig(); + config.prop = prop; + config.configString = new String(); + config.configArray = new int[0]; + return new AidlHalPropConfig(config); + } + + /** + * Creates a config for the given property that passes the + * {@link com.android.car.hal.VehicleHal.VehicleHal#isPropertySubscribableDeprecated(VehiclePropConfig)} + * criteria. + * + * @deprecated TODO(b/205774940): Remove once we migrate all the usages to + * {@code newSubscribableConfig}. + */ + @Deprecated + public static android.hardware.automotive.vehicle.V2_0.VehiclePropConfig + newSubscribableConfigDeprecated(int prop) { + android.hardware.automotive.vehicle.V2_0.VehiclePropConfig config = + newConfigDeprecated(prop); + config.access = VehiclePropertyAccess.READ_WRITE; + config.changeMode = VehiclePropertyChangeMode.ON_CHANGE; + return config; + } + + /** + * Creates a config for the given property that passes the + * {@link com.android.car.hal.VehicleHal.VehicleHal#isPropertySubscribable(VehiclePropConfig)} + * criteria. + */ + public static HalPropConfig newSubscribableConfig(int prop) { + VehiclePropConfig config = new VehiclePropConfig(); + config.prop = prop; + config.configString = new String(); + config.configArray = new int[0]; + config.access = VehiclePropertyAccess.READ_WRITE; + config.changeMode = VehiclePropertyChangeMode.ON_CHANGE; + return new AidlHalPropConfig(config); + } + + private VehicleHalTestingHelper() { + throw new UnsupportedOperationException("contains only static methods"); + } +} diff --git a/tests/carservice_unit_test/src/com/android/car/user/BaseCarUserServiceTestCase.java b/tests/carservice_unit_test/src/com/android/car/user/BaseCarUserServiceTestCase.java index b52c16c7ed..4c6ed4b677 100644 --- a/tests/carservice_unit_test/src/com/android/car/user/BaseCarUserServiceTestCase.java +++ b/tests/carservice_unit_test/src/com/android/car/user/BaseCarUserServiceTestCase.java @@ -69,18 +69,17 @@ import android.content.pm.UserInfo; import android.content.pm.UserInfo.UserInfoFlag; import android.content.res.Resources; import android.graphics.drawable.Drawable; -import android.hardware.automotive.vehicle.V2_0.CreateUserRequest; -import android.hardware.automotive.vehicle.V2_0.CreateUserResponse; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoResponse; -import android.hardware.automotive.vehicle.V2_0.RemoveUserRequest; -import android.hardware.automotive.vehicle.V2_0.SwitchUserRequest; -import android.hardware.automotive.vehicle.V2_0.SwitchUserResponse; -import android.hardware.automotive.vehicle.V2_0.UserFlags; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationAssociation; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationGetRequest; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationResponse; -import android.hardware.automotive.vehicle.V2_0.UserIdentificationSetRequest; -import android.hardware.automotive.vehicle.V2_0.UsersInfo; +import android.hardware.automotive.vehicle.CreateUserRequest; +import android.hardware.automotive.vehicle.CreateUserResponse; +import android.hardware.automotive.vehicle.InitialUserInfoResponse; +import android.hardware.automotive.vehicle.RemoveUserRequest; +import android.hardware.automotive.vehicle.SwitchUserRequest; +import android.hardware.automotive.vehicle.SwitchUserResponse; +import android.hardware.automotive.vehicle.UserIdentificationAssociation; +import android.hardware.automotive.vehicle.UserIdentificationGetRequest; +import android.hardware.automotive.vehicle.UserIdentificationResponse; +import android.hardware.automotive.vehicle.UserIdentificationSetRequest; +import android.hardware.automotive.vehicle.UsersInfo; import android.location.LocationManager; import android.os.Binder; import android.os.Handler; @@ -265,6 +264,15 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas mAnotherRegularUserId = mAnotherRegularUser.getIdentifier(); } + // The responses must never contain null values. + @Before + public void fillInDefaultValues() { + mGetUserInfoResponse.userToSwitchOrCreate = + new android.hardware.automotive.vehicle.UserInfo(); + mGetUserInfoResponse.userLocales = new String(); + mGetUserInfoResponse.userNameToCreate = new String(); + } + protected ICarUxRestrictionsChangeListener initService() { ArgumentCaptor<ICarUxRestrictionsChangeListener> listenerCaptor = ArgumentCaptor.forClass(ICarUxRestrictionsChangeListener.class); @@ -648,13 +656,13 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas protected BlockingAnswer<Void> mockHalSwitchLateResponse(@UserIdInt int currentUserId, @NonNull UserHandle androidTargetUser, @Nullable SwitchUserResponse response) { - android.hardware.automotive.vehicle.V2_0.UserInfo halTargetUser = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + android.hardware.automotive.vehicle.UserInfo halTargetUser = + new android.hardware.automotive.vehicle.UserInfo(); halTargetUser.userId = androidTargetUser.getIdentifier(); halTargetUser.flags = UserHalHelper.convertFlags(mMockedUserHandleHelper, androidTargetUser); UsersInfo usersInfo = newUsersInfo(currentUserId); - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.targetUser = halTargetUser; request.usersInfo = usersInfo; @@ -673,13 +681,13 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas protected void mockHalSwitch(@UserIdInt int currentUserId, @HalCallback.HalCallbackStatus int callbackStatus, @Nullable SwitchUserResponse response, @NonNull UserHandle androidTargetUser) { - android.hardware.automotive.vehicle.V2_0.UserInfo halTargetUser = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); + android.hardware.automotive.vehicle.UserInfo halTargetUser = + new android.hardware.automotive.vehicle.UserInfo(); halTargetUser.userId = androidTargetUser.getIdentifier(); halTargetUser.flags = UserHalHelper.convertFlags(mMockedUserHandleHelper, androidTargetUser); UsersInfo usersInfo = newUsersInfo(currentUserId); - SwitchUserRequest request = new SwitchUserRequest(); + SwitchUserRequest request = UserHalHelper.emptySwitchUserRequest(); request.targetUser = halTargetUser; request.usersInfo = usersInfo; @@ -701,11 +709,12 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas UserIdentificationResponse response = new UserIdentificationResponse(); response.numberAssociation = types.length; response.errorMessage = errorMessage; + response.associations = new UserIdentificationAssociation[types.length]; for (int i = 0; i < types.length; i++) { UserIdentificationAssociation association = new UserIdentificationAssociation(); association.type = types[i]; association.value = values[i]; - response.associations.add(association); + response.associations[i] = association; } when(mUserHal.getUserAssociation(isUserIdentificationGetRequest(user, types))) @@ -720,11 +729,12 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas UserIdentificationResponse response = new UserIdentificationResponse(); response.numberAssociation = types.length; response.errorMessage = errorMessage; + response.associations = new UserIdentificationAssociation[types.length]; for (int i = 0; i < types.length; i++) { UserIdentificationAssociation association = new UserIdentificationAssociation(); association.type = types[i]; association.value = values[i]; - response.associations.add(association); + response.associations[i] = association; } doAnswer((invocation) -> { @@ -819,11 +829,11 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas assertSameUser(actual.currentUser, currentUser); assertThat(actual.numberUsers).isEqualTo(mExistingUsers.size()); for (int i = 0; i < actual.numberUsers; i++) { - assertSameUser(actual.existingUsers.get(i), mExistingUsers.get(i)); + assertSameUser(actual.existingUsers[i], mExistingUsers.get(i)); } } - protected void assertSameUser(android.hardware.automotive.vehicle.V2_0.UserInfo halUser, + protected void assertSameUser(android.hardware.automotive.vehicle.UserInfo halUser, UserHandle androidUser) { assertThat(halUser.userId).isEqualTo(androidUser.getIdentifier()); @@ -854,24 +864,26 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas @NonNull protected UsersInfo newUsersInfo(@UserIdInt int currentUserId) { - UsersInfo infos = new UsersInfo(); + UsersInfo infos = UserHalHelper.emptyUsersInfo(); infos.numberUsers = mExistingUsers.size(); boolean foundCurrentUser = false; + infos.existingUsers = new android.hardware.automotive.vehicle.UserInfo[infos.numberUsers]; + int i = 0; for (UserHandle handle : mExistingUsers) { - android.hardware.automotive.vehicle.V2_0.UserInfo existingUser = - new android.hardware.automotive.vehicle.V2_0.UserInfo(); - int flags = UserFlags.NONE; + android.hardware.automotive.vehicle.UserInfo existingUser = + new android.hardware.automotive.vehicle.UserInfo(); + int flags = 0; if (handle.getIdentifier() == UserHandle.USER_SYSTEM) { - flags |= UserFlags.SYSTEM; + flags |= android.hardware.automotive.vehicle.UserInfo.USER_FLAG_SYSTEM; } if (mMockedUserHandleHelper.isAdminUser(handle)) { - flags |= UserFlags.ADMIN; + flags |= android.hardware.automotive.vehicle.UserInfo.USER_FLAG_ADMIN; } if (mMockedUserHandleHelper.isGuestUser(handle)) { - flags |= UserFlags.GUEST; + flags |= android.hardware.automotive.vehicle.UserInfo.USER_FLAG_GUEST; } if (mMockedUserHandleHelper.isEphemeralUser(handle)) { - flags |= UserFlags.EPHEMERAL; + flags |= android.hardware.automotive.vehicle.UserInfo.USER_FLAG_EPHEMERAL; } existingUser.userId = handle.getIdentifier(); existingUser.flags = flags; @@ -880,7 +892,8 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas infos.currentUser.userId = handle.getIdentifier(); infos.currentUser.flags = flags; } - infos.existingUsers.add(existingUser); + infos.existingUsers[i] = existingUser; + i++; } Preconditions.checkArgument(foundCurrentUser, "no user with id " + currentUserId + " on " + mExistingUsers); @@ -1042,13 +1055,13 @@ abstract class BaseCarUserServiceTestCase extends AbstractExtendedMockitoTestCas + mTypes.length); return false; } - if (argument.associationTypes.size() != mTypes.length) { + if (argument.associationTypes.length != mTypes.length) { Log.w(TAG, "wrong associationTypes size on " + argument + "; expected " + mTypes.length); return false; } for (int i = 0; i < mTypes.length; i++) { - if (argument.associationTypes.get(i) != mTypes[i]) { + if (argument.associationTypes[i] != mTypes[i]) { Log.w(TAG, "wrong association type on index " + i + " on " + argument + "; expected types: " + Arrays.toString(mTypes)); return false; diff --git a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java index ef6c3529c7..230f863781 100644 --- a/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java +++ b/tests/carservice_unit_test/src/com/android/car/user/CarUserServiceTest.java @@ -57,13 +57,12 @@ import android.car.user.UserStopResult; import android.car.user.UserSwitchResult; import android.car.util.concurrent.AndroidFuture; import android.content.Context; -import android.hardware.automotive.vehicle.V2_0.CreateUserRequest; -import android.hardware.automotive.vehicle.V2_0.CreateUserStatus; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoRequestType; -import android.hardware.automotive.vehicle.V2_0.InitialUserInfoResponseAction; -import android.hardware.automotive.vehicle.V2_0.SwitchUserResponse; -import android.hardware.automotive.vehicle.V2_0.SwitchUserStatus; -import android.hardware.automotive.vehicle.V2_0.UserFlags; +import android.hardware.automotive.vehicle.CreateUserRequest; +import android.hardware.automotive.vehicle.CreateUserStatus; +import android.hardware.automotive.vehicle.InitialUserInfoRequestType; +import android.hardware.automotive.vehicle.InitialUserInfoResponseAction; +import android.hardware.automotive.vehicle.SwitchUserResponse; +import android.hardware.automotive.vehicle.SwitchUserStatus; import android.os.Binder; import android.os.NewUserResponse; import android.os.Process; @@ -1390,7 +1389,8 @@ public final class CarUserServiceTest extends BaseCarUserServiceTestCase { Log.d(TAG, "createUser() request: " + request); assertThat(request.newUserName).isEqualTo("dude"); assertThat(request.newUserInfo.userId).isEqualTo(userId); - assertThat(request.newUserInfo.flags).isEqualTo(UserFlags.EPHEMERAL); + assertThat(request.newUserInfo.flags).isEqualTo( + android.hardware.automotive.vehicle.UserInfo.USER_FLAG_EPHEMERAL); assertDefaultUsersInfo(request.usersInfo, mAdminUser); UserCreationResult result = getUserCreationResult(); @@ -1423,7 +1423,8 @@ public final class CarUserServiceTest extends BaseCarUserServiceTestCase { Log.d(TAG, "createUser() request: " + request); assertThat(request.newUserName).isEqualTo("guest"); assertThat(request.newUserInfo.userId).isEqualTo(userId); - assertThat(request.newUserInfo.flags).isEqualTo(UserFlags.GUEST); + assertThat(request.newUserInfo.flags).isEqualTo( + android.hardware.automotive.vehicle.UserInfo.USER_FLAG_GUEST); assertDefaultUsersInfo(request.usersInfo, mAdminUser); UserCreationResult result = getUserCreationResult(); @@ -1473,7 +1474,8 @@ public final class CarUserServiceTest extends BaseCarUserServiceTestCase { Log.d(TAG, "createUser() request: " + request); assertThat(request.newUserName).isEmpty(); assertThat(request.newUserInfo.userId).isEqualTo(userId); - assertThat(request.newUserInfo.flags).isEqualTo(UserFlags.EPHEMERAL); + assertThat(request.newUserInfo.flags).isEqualTo( + android.hardware.automotive.vehicle.UserInfo.USER_FLAG_EPHEMERAL); assertDefaultUsersInfo(request.usersInfo, mAdminUser); UserCreationResult result = getUserCreationResult(); diff --git a/tests/carservice_unit_test/src/com/android/car/user/ExperimentalCarUserServiceTest.java b/tests/carservice_unit_test/src/com/android/car/user/ExperimentalCarUserServiceTest.java index 41b71b7b96..3d1f48ce1e 100644 --- a/tests/carservice_unit_test/src/com/android/car/user/ExperimentalCarUserServiceTest.java +++ b/tests/carservice_unit_test/src/com/android/car/user/ExperimentalCarUserServiceTest.java @@ -43,8 +43,8 @@ import android.car.builtin.os.UserManagerHelper; import android.car.user.UserCreationResult; import android.car.user.UserSwitchResult; import android.car.util.concurrent.AndroidFuture; -import android.hardware.automotive.vehicle.V2_0.CreateUserStatus; -import android.hardware.automotive.vehicle.V2_0.SwitchUserStatus; +import android.hardware.automotive.vehicle.CreateUserStatus; +import android.hardware.automotive.vehicle.SwitchUserStatus; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; |