blob: 0cef23179382e35f4d96b2980fd9bf5b88b6c1b5 [file] [log] [blame]
/*
* Copyright (C) 2018 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.settings.wifi.calling;
import static com.google.common.truth.Truth.assertThat;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Parcelable;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.android.settings.R;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.io.IOException;
@RunWith(RobolectricTestRunner.class)
public class ListWithEntrySummaryPreferenceTest {
private Context mContext;
private ListWithEntrySummaryPreference mPreference;
private CharSequence[] mDefaultEntries =
{"default_entry1", "default_entry2", "default_entry3"};
private CharSequence[] mDefaultEntryValues = {"0", "1", "2"};
private CharSequence[] mDefaultEntrySummaries =
{"default_summary1", "default_summary2", "default_summary3"};
private CharSequence[] mCustomEntries = {"custom_entry1", "custom_entry2"};
private CharSequence[] mCustomEntryValues = {"0", "1"};
private CharSequence[] mCustomEntrySummaries = {"custom_summary1", "custom_summary2"};
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mPreference = new ListWithEntrySummaryPreference(mContext, null);
mPreference.setEntries(mDefaultEntries);
mPreference.setEntryValues(mDefaultEntryValues);
mPreference.setEntrySummaries(mDefaultEntrySummaries);
}
@Test
public void initialize_defaultEntries_shouldDisplayDefalutEntries() {
AlertDialog dialog = showDialog(mPreference);
ListAdapter adapter = dialog.getListView().getAdapter();
int len = mDefaultEntries.length;
assertThat(adapter.getCount()).isEqualTo(len);
for (int i = 0; i < len; i++) {
TextView title = adapter.getView(i, null, null).findViewById(R.id.title);
TextView summary = adapter.getView(i, null, null).findViewById(R.id.summary);
assertThat(title.getText()).isEqualTo(mDefaultEntries[i]);
assertThat(summary.getText()).isEqualTo(mDefaultEntrySummaries[i]);
}
}
@Test
public void setEntries_customEntries_shouldUpdateEntries() {
mPreference.setEntries(mCustomEntries);
mPreference.setEntryValues(mCustomEntryValues);
mPreference.setEntrySummaries(mCustomEntrySummaries);
AlertDialog dialog = showDialog(mPreference);
ListAdapter adapter = dialog.getListView().getAdapter();
int len = mCustomEntries.length;
assertThat(adapter.getCount()).isEqualTo(len);
for (int i = 0; i < len; i++) {
TextView title = adapter.getView(i, null, null).findViewById(R.id.title);
TextView summary = adapter.getView(i, null, null).findViewById(R.id.summary);
assertThat(title.getText()).isEqualTo(mCustomEntries[i]);
assertThat(summary.getText()).isEqualTo(mCustomEntrySummaries[i]);
}
}
@Test
public void onSaveAndRestoreInstanceState_resumePreference_shouldNotChangeEntries() {
setEntries_customEntries_shouldUpdateEntries();
final Parcelable parcelable = mPreference.onSaveInstanceState();
ListWithEntrySummaryPreference preference
= new ListWithEntrySummaryPreference(mContext, null);
preference.setEntries(mDefaultEntries);
preference.setEntryValues(mDefaultEntryValues);
preference.setEntrySummaries(mDefaultEntrySummaries);
preference.onRestoreInstanceState(parcelable);
AlertDialog dialog = showDialog(preference);
ListAdapter adapter = dialog.getListView().getAdapter();
int len = mCustomEntries.length;
assertThat(adapter.getCount()).isEqualTo(len);
for (int i = 0; i < len; i++) {
TextView title = adapter.getView(i, null, null).findViewById(R.id.title);
TextView summary = adapter.getView(i, null, null).findViewById(R.id.summary);
assertThat(title.getText()).isEqualTo(mCustomEntries[i]);
assertThat(summary.getText()).isEqualTo(mCustomEntrySummaries[i]);
}
}
private AlertDialog showDialog(ListWithEntrySummaryPreference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
preference.onPrepareDialogBuilder(builder, null);
return builder.show();
}
}