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/com/android/car/hal/UserHalHelperTest.java | |
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/com/android/car/hal/UserHalHelperTest.java')
-rw-r--r-- | tests/carservice_unit_test/src/com/android/car/hal/UserHalHelperTest.java | 999 |
1 files changed, 546 insertions, 453 deletions
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)); } } } |