public void setAccounts(Account accounts[]) {
if (!Arrays.equals(mAccounts, accounts)) {
- int index = ArrayUtils.indexOf(accounts, mAccounts[mSelectedAccountIndex]);
- mSelectedAccountIndex = index != -1 ? index : 0;
+ if (mAccounts.length == 0) {
+ mSelectedAccountIndex = 0;
+ } else {
+ final int index = ArrayUtils.indexOf(accounts, mAccounts[mSelectedAccountIndex]);
+ mSelectedAccountIndex = index != -1 ? index : 0;
+ }
+
mAccounts = accounts;
mSupportFeatureProvider.refreshOperationRules();
refreshEscalationCards();
private final Account USER_2 = new Account("user2", ACCOUNT_TYPE);
private final Account TWO_ACCOUNTS[] = {USER_1, USER_2};
private final Account ONE_ACCOUNT[] = {USER_1};
+ private final Account ZERO_ACCOUNT[] = {};
private ShadowActivity mShadowActivity;
private Activity mActivity;
verify(mSupportFeatureProvider).getAccountLoginIntent();
}
+ @Test
+ public void testSetAccount_AccountEmpty_NotCrash() {
+ when(mSupportFeatureProvider.getSupportEligibleAccounts(mActivity)).thenReturn(ZERO_ACCOUNT);
+ mSupportItemAdapter = new SupportItemAdapter(mActivity, null, mSupportFeatureProvider,
+ mMetricsFeatureProvider, null);
+
+ // Should not crash in this method
+ mSupportItemAdapter.setAccounts(ONE_ACCOUNT);
+
+ verify(mSupportFeatureProvider).getSupportEligibleAccounts(mActivity);
+ }
+
/**
* Check after {@link SupportItemAdapter#bindAccountPicker(SupportItemAdapter.ViewHolder)} is
* invoked, whether the spinner in {@paramref viewHolder} has all the data from {@paramref