DataUsageSummaryPreferenceTest converted to JUnit
There are couple of newly explored concepts in this CL, which will hopefully be useful for migrating other tests in the future as well. In broad strokes, the changes to this file cover: Android build file species the preferences library, in order to access PreferenceViewHolder.createInstanceForTests. Resource ids in JUnit tests differ from the Settings apk. This is true not only of strings but also views and layouts. Helper functions added to main class to access the layouts needed by the test. Shadow activities are not needed to view layouts, the context can be used. Context startActivity can be mocked and verified in order to capture and examine the intent created by the library under test. Bug: 175389659 Test: atest -c DataUsageSummaryPreferenceTest Change-Id: Ib8cb87f0299c47a32c3f5d3af7edb20592b727ec
This commit is contained in:
@@ -32,6 +32,7 @@ import android.text.style.AbsoluteSizeSpan;
|
|||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@@ -156,24 +157,24 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||||
super.onBindViewHolder(holder);
|
super.onBindViewHolder(holder);
|
||||||
|
|
||||||
ProgressBar bar = (ProgressBar) holder.findViewById(R.id.determinateBar);
|
ProgressBar bar = getProgressBar(holder);
|
||||||
if (mChartEnabled && (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel))) {
|
if (mChartEnabled && (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel))) {
|
||||||
bar.setVisibility(View.VISIBLE);
|
bar.setVisibility(View.VISIBLE);
|
||||||
holder.findViewById(R.id.label_bar).setVisibility(View.VISIBLE);
|
getLabelBar(holder).setVisibility(View.VISIBLE);
|
||||||
bar.setProgress((int) (mProgress * 100));
|
bar.setProgress((int) (mProgress * 100));
|
||||||
((TextView) holder.findViewById(android.R.id.text1)).setText(mStartLabel);
|
(getLabel1(holder)).setText(mStartLabel);
|
||||||
((TextView) holder.findViewById(android.R.id.text2)).setText(mEndLabel);
|
(getLabel2(holder)).setText(mEndLabel);
|
||||||
} else {
|
} else {
|
||||||
bar.setVisibility(View.GONE);
|
bar.setVisibility(View.GONE);
|
||||||
holder.findViewById(R.id.label_bar).setVisibility(View.GONE);
|
getLabelBar(holder).setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDataUsageLabels(holder);
|
updateDataUsageLabels(holder);
|
||||||
|
|
||||||
TextView usageTitle = (TextView) holder.findViewById(R.id.usage_title);
|
TextView usageTitle = getUsageTitle(holder);
|
||||||
TextView carrierInfo = (TextView) holder.findViewById(R.id.carrier_and_update);
|
TextView carrierInfo = getCarrierInfo(holder);
|
||||||
Button launchButton = (Button) holder.findViewById(R.id.launch_mdp_app_button);
|
Button launchButton = getLaunchButton(holder);
|
||||||
TextView limitInfo = (TextView) holder.findViewById(R.id.data_limits);
|
TextView limitInfo = getDataLimits(holder);
|
||||||
|
|
||||||
if (mWifiMode && mSingleWifi) {
|
if (mWifiMode && mSingleWifi) {
|
||||||
updateCycleTimeText(holder);
|
updateCycleTimeText(holder);
|
||||||
@@ -187,7 +188,7 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
} else if (mWifiMode) {
|
} else if (mWifiMode) {
|
||||||
usageTitle.setText(R.string.data_usage_wifi_title);
|
usageTitle.setText(R.string.data_usage_wifi_title);
|
||||||
usageTitle.setVisibility(View.VISIBLE);
|
usageTitle.setVisibility(View.VISIBLE);
|
||||||
TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
|
TextView cycleTime = getCycleTime(holder);
|
||||||
cycleTime.setText(mUsagePeriod);
|
cycleTime.setText(mUsagePeriod);
|
||||||
carrierInfo.setVisibility(View.GONE);
|
carrierInfo.setVisibility(View.GONE);
|
||||||
limitInfo.setVisibility(View.GONE);
|
limitInfo.setVisibility(View.GONE);
|
||||||
@@ -235,7 +236,7 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateDataUsageLabels(PreferenceViewHolder holder) {
|
private void updateDataUsageLabels(PreferenceViewHolder holder) {
|
||||||
TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
|
TextView usageNumberField = getDataUsed(holder);
|
||||||
|
|
||||||
final Formatter.BytesResult usedResult = Formatter.formatBytes(getContext().getResources(),
|
final Formatter.BytesResult usedResult = Formatter.formatBytes(getContext().getResources(),
|
||||||
mDataplanUse, Formatter.FLAG_CALCULATE_ROUNDED | Formatter.FLAG_IEC_UNITS);
|
mDataplanUse, Formatter.FLAG_CALCULATE_ROUNDED | Formatter.FLAG_IEC_UNITS);
|
||||||
@@ -250,11 +251,10 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
TextUtils.expandTemplate(template, usageNumberText, usedResult.units);
|
TextUtils.expandTemplate(template, usageNumberText, usedResult.units);
|
||||||
usageNumberField.setText(usageText);
|
usageNumberField.setText(usageText);
|
||||||
|
|
||||||
final MeasurableLinearLayout layout =
|
final MeasurableLinearLayout layout = getLayout(holder);
|
||||||
(MeasurableLinearLayout) holder.findViewById(R.id.usage_layout);
|
|
||||||
|
|
||||||
if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) {
|
if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) {
|
||||||
TextView usageRemainingField = (TextView) holder.findViewById(R.id.data_remaining_view);
|
TextView usageRemainingField = getDataRemaining(holder);
|
||||||
long dataRemaining = mDataplanSize - mDataplanUse;
|
long dataRemaining = mDataplanSize - mDataplanUse;
|
||||||
if (dataRemaining >= 0) {
|
if (dataRemaining >= 0) {
|
||||||
usageRemainingField.setText(
|
usageRemainingField.setText(
|
||||||
@@ -276,7 +276,7 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateCycleTimeText(PreferenceViewHolder holder) {
|
private void updateCycleTimeText(PreferenceViewHolder holder) {
|
||||||
TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
|
TextView cycleTime = getCycleTime(holder);
|
||||||
|
|
||||||
// Takes zero as a special case which value is never set.
|
// Takes zero as a special case which value is never set.
|
||||||
if (mCycleEndTimeMs == CYCLE_TIME_UNINITIAL_VALUE) {
|
if (mCycleEndTimeMs == CYCLE_TIME_UNINITIAL_VALUE) {
|
||||||
@@ -362,9 +362,68 @@ public class DataUsageSummaryPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
long getHistoricalUsageLevel() {
|
protected long getHistoricalUsageLevel() {
|
||||||
final DataUsageController controller = new DataUsageController(getContext());
|
final DataUsageController controller = new DataUsageController(getContext());
|
||||||
return controller.getHistoricalUsageLevel(NetworkTemplate.buildTemplateWifiWildcard());
|
return controller.getHistoricalUsageLevel(NetworkTemplate.buildTemplateWifiWildcard());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getUsageTitle(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(R.id.usage_title);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getCycleTime(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(R.id.cycle_left_time);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getCarrierInfo(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(R.id.carrier_and_update);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getDataLimits(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(R.id.data_limits);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getDataUsed(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(R.id.data_usage_view);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getDataRemaining(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(R.id.data_remaining_view);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected Button getLaunchButton(PreferenceViewHolder holder) {
|
||||||
|
return (Button) holder.findViewById(R.id.launch_mdp_app_button);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected LinearLayout getLabelBar(PreferenceViewHolder holder) {
|
||||||
|
return (LinearLayout) holder.findViewById(R.id.label_bar);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getLabel1(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(android.R.id.text1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected TextView getLabel2(PreferenceViewHolder holder) {
|
||||||
|
return (TextView) holder.findViewById(android.R.id.text2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected ProgressBar getProgressBar(PreferenceViewHolder holder) {
|
||||||
|
return (ProgressBar) holder.findViewById(R.id.determinateBar);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected MeasurableLinearLayout getLayout(PreferenceViewHolder holder) {
|
||||||
|
return (MeasurableLinearLayout) holder.findViewById(R.id.usage_layout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ android_test {
|
|||||||
"androidx.test.espresso.contrib-nodeps",
|
"androidx.test.espresso.contrib-nodeps",
|
||||||
"androidx.test.espresso.intents-nodeps",
|
"androidx.test.espresso.intents-nodeps",
|
||||||
"androidx.test.ext.junit",
|
"androidx.test.ext.junit",
|
||||||
|
"androidx.preference_preference",
|
||||||
"mockito-target-minus-junit4",
|
"mockito-target-minus-junit4",
|
||||||
"platform-test-annotations",
|
"platform-test-annotations",
|
||||||
"truth-prebuilt",
|
"truth-prebuilt",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2018 The Android Open Source Project
|
* Copyright (C) 2020 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -11,20 +11,23 @@
|
|||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.content.Context;
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.Resources;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkTemplate;
|
import android.net.NetworkTemplate;
|
||||||
@@ -32,78 +35,71 @@ import android.os.Bundle;
|
|||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.view.View.MeasureSpec;
|
||||||
import android.widget.LinearLayout;
|
|
||||||
import android.widget.ProgressBar;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
import androidx.test.annotation.UiThreadTest;
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.SubSettings;
|
import com.android.settings.testutils.ResourcesUtils;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.Robolectric;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
|
||||||
import org.robolectric.Shadows;
|
|
||||||
import org.robolectric.shadows.ShadowActivity;
|
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class DataUsageSummaryPreferenceTest {
|
public class DataUsageSummaryPreferenceTest {
|
||||||
|
|
||||||
private static final long CYCLE_DURATION_MILLIS = 1000000000L;
|
private static final long CYCLE_DURATION_MILLIS = 1000000000L;
|
||||||
private static final long UPDATE_LAG_MILLIS = 10000000L;
|
private static final long UPDATE_LAG_MILLIS = 10000000L;
|
||||||
private static final String FAKE_CARRIER = "z-mobile";
|
private static final String FAKE_CARRIER = "z-mobile";
|
||||||
|
|
||||||
private Activity mActivity;
|
private Context mContext;
|
||||||
|
private Resources mResources;
|
||||||
private PreferenceViewHolder mHolder;
|
private PreferenceViewHolder mHolder;
|
||||||
private DataUsageSummaryPreference mSummaryPreference;
|
private DataUsageSummaryPreference mSummaryPreference;
|
||||||
private TextView mUsageTitle;
|
|
||||||
private TextView mCycleTime;
|
|
||||||
private TextView mCarrierInfo;
|
|
||||||
private TextView mDataLimits;
|
|
||||||
private TextView mDataUsed;
|
|
||||||
private TextView mDataRemaining;
|
|
||||||
private Button mLaunchButton;
|
|
||||||
private LinearLayout mLabelBar;
|
|
||||||
private TextView mLabel1;
|
|
||||||
private TextView mLabel2;
|
|
||||||
private ProgressBar mProgressBar;
|
|
||||||
|
|
||||||
private long mCycleEnd;
|
private long mCycleEnd;
|
||||||
private long mUpdateTime;
|
private long mUpdateTime;
|
||||||
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mActivity = spy(Robolectric.setupActivity(Activity.class));
|
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||||
mSummaryPreference = new DataUsageSummaryPreference(mActivity, null /* attrs */);
|
mResources = spy(mContext.getResources());
|
||||||
LayoutInflater inflater = LayoutInflater.from(mActivity);
|
when(mContext.getResources()).thenReturn(mResources);
|
||||||
View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
|
mSummaryPreference = spy(new DataUsageSummaryPreference(mContext, null /* attrs */));
|
||||||
false /* attachToRoot */);
|
LayoutInflater inflater = mContext.getSystemService(LayoutInflater.class);
|
||||||
|
View view = inflater.inflate(
|
||||||
|
mSummaryPreference.getLayoutResource(),
|
||||||
|
null /* root */, false /* attachToRoot */);
|
||||||
|
|
||||||
mHolder = spy(PreferenceViewHolder.createInstanceForTests(view));
|
mHolder = spy(PreferenceViewHolder.createInstanceForTests(view));
|
||||||
|
assertThat(mSummaryPreference.getDataUsed(mHolder)).isNotNull();
|
||||||
|
|
||||||
final long now = System.currentTimeMillis();
|
final long now = System.currentTimeMillis();
|
||||||
mCycleEnd = now + CYCLE_DURATION_MILLIS;
|
mCycleEnd = now + CYCLE_DURATION_MILLIS;
|
||||||
mUpdateTime = now - UPDATE_LAG_MILLIS;
|
mUpdateTime = now - UPDATE_LAG_MILLIS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@UiThreadTest
|
||||||
@Test
|
@Test
|
||||||
public void testSetUsageInfo_withLaunchIntent_launchButtonShown() {
|
public void testSetUsageInfo_withLaunchIntent_launchButtonShown() {
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -111,8 +107,9 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
null /* launchIntent */);
|
null /* launchIntent */);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mLaunchButton.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -120,8 +117,9 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -129,8 +127,9 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -139,12 +138,11 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
int smudge = 6;
|
int smudge = 6;
|
||||||
final long updateTime = System.currentTimeMillis()
|
final long updateTime = System.currentTimeMillis()
|
||||||
- TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge);
|
- TimeUnit.DAYS.toMillis(baseUnit) - TimeUnit.HOURS.toMillis(smudge);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getText().toString())
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
|
||||||
.isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " days ago");
|
.isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " days ago");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,12 +152,11 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
int smudge = 6;
|
int smudge = 6;
|
||||||
final long updateTime = System.currentTimeMillis()
|
final long updateTime = System.currentTimeMillis()
|
||||||
- TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge);
|
- TimeUnit.HOURS.toMillis(baseUnit) - TimeUnit.MINUTES.toMillis(smudge);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getText().toString())
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
|
||||||
.isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " hr ago");
|
.isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " hr ago");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,63 +166,59 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
int smudge = 6;
|
int smudge = 6;
|
||||||
final long updateTime = System.currentTimeMillis()
|
final long updateTime = System.currentTimeMillis()
|
||||||
- TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge);
|
- TimeUnit.MINUTES.toMillis(baseUnit) - TimeUnit.SECONDS.toMillis(smudge);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getText().toString())
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
|
||||||
.isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " min ago");
|
.isEqualTo("Updated by " + FAKE_CARRIER + " " + baseUnit + " min ago");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() {
|
public void testCarrierUpdateTime_shouldFormatLessThanMinuteCorrectly() {
|
||||||
final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
|
final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getText().toString())
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
|
||||||
.isEqualTo("Updated by " + FAKE_CARRIER + " just now");
|
.isEqualTo("Updated by " + FAKE_CARRIER + " just now");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() {
|
public void testCarrierUpdateTimeWithNoCarrier_shouldSayJustNow() {
|
||||||
final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
|
final long updateTime = System.currentTimeMillis() - TimeUnit.SECONDS.toMillis(45);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
|
||||||
1 /* numPlans */, new Intent());
|
1 /* numPlans */, new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getText().toString())
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
|
||||||
.isEqualTo("Updated just now");
|
.isEqualTo("Updated just now");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() {
|
public void testCarrierUpdateTimeWithNoCarrier_shouldFormatTime() {
|
||||||
final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2);
|
final long updateTime = System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(2);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, null /* carrier */,
|
||||||
1 /* numPlans */, new Intent());
|
1 /* numPlans */, new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getText().toString())
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getText().toString())
|
||||||
.isEqualTo("Updated 2 min ago");
|
.isEqualTo("Updated 2 min ago");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() {
|
public void setUsageInfo_withRecentCarrierUpdate_doesNotSetCarrierInfoWarningColorAndFont() {
|
||||||
final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
|
final long updateTime = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
|
TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
|
||||||
assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
|
assertThat(carrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
Utils.getColorAttrDefaultColor(mActivity, android.R.attr.textColorSecondary));
|
assertThat(carrierInfo.getCurrentTextColor()).isEqualTo(
|
||||||
assertThat(mCarrierInfo.getTypeface()).isEqualTo(Typeface.SANS_SERIF);
|
Utils.getColorAttrDefaultColor(mContext, android.R.attr.textColorSecondary));
|
||||||
|
assertThat(carrierInfo.getTypeface()).isEqualTo(Typeface.SANS_SERIF);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -234,11 +227,12 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, updateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
|
TextView carrierInfo = mSummaryPreference.getCarrierInfo(mHolder);
|
||||||
assertThat(mCarrierInfo.getCurrentTextColor()).isEqualTo(
|
assertThat(carrierInfo.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
Utils.getColorAttrDefaultColor(mActivity, android.R.attr.colorError));
|
assertThat(carrierInfo.getCurrentTextColor()).isEqualTo(
|
||||||
assertThat(mCarrierInfo.getTypeface()).isEqualTo(
|
Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorError));
|
||||||
|
assertThat(carrierInfo.getTypeface()).isEqualTo(
|
||||||
DataUsageSummaryPreference.SANS_SERIF_MEDIUM);
|
DataUsageSummaryPreference.SANS_SERIF_MEDIUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,8 +241,8 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mUsageTitle.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -256,8 +250,9 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 2 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mUsageTitle.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -267,10 +262,12 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
|
||||||
assertThat(mCycleTime.getText()).isEqualTo(
|
.isEqualTo(View.VISIBLE);
|
||||||
mActivity.getString(R.string.billing_cycle_less_than_one_day_left));
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(
|
||||||
|
ResourcesUtils.getResourcesString(
|
||||||
|
mContext, "billing_cycle_less_than_one_day_left"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -279,10 +276,11 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
|
||||||
assertThat(mCycleTime.getText()).isEqualTo(
|
.isEqualTo(View.VISIBLE);
|
||||||
mActivity.getString(R.string.billing_cycle_none_left));
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(
|
||||||
|
ResourcesUtils.getResourcesString(mContext, "billing_cycle_none_left"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -293,9 +291,11 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
|
||||||
assertThat(mCycleTime.getText()).isEqualTo(daysLeft + " days left");
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getText())
|
||||||
|
.isEqualTo(daysLeft + " days left");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -303,17 +303,18 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
final String limitText = "test limit text";
|
final String limitText = "test limit text";
|
||||||
mSummaryPreference.setLimitInfo(limitText);
|
mSummaryPreference.setLimitInfo(limitText);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mDataLimits.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility())
|
||||||
assertThat(mDataLimits.getText()).isEqualTo(limitText);
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mSummaryPreference.getDataLimits(mHolder).getText()).isEqualTo(limitText);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetLimitInfo_withNullLimitInfo_dataLimitsNotShown() {
|
public void testSetLimitInfo_withNullLimitInfo_dataLimitsNotShown() {
|
||||||
mSummaryPreference.setLimitInfo(null);
|
mSummaryPreference.setLimitInfo(null);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mDataLimits.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -321,8 +322,8 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
final String emptyLimitText = "";
|
final String emptyLimitText = "";
|
||||||
mSummaryPreference.setLimitInfo(emptyLimitText);
|
mSummaryPreference.setLimitInfo(emptyLimitText);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mDataLimits.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -330,18 +331,18 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
setValidLabels();
|
setValidLabels();
|
||||||
mSummaryPreference.setChartEnabled(false);
|
mSummaryPreference.setChartEnabled(false);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mLabelBar.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getLabelBar(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
assertThat(mProgressBar.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getProgressBar(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetEmptyLabels_hidesLabelBar() {
|
public void testSetEmptyLabels_hidesLabelBar() {
|
||||||
mSummaryPreference.setLabels("", "");
|
mSummaryPreference.setLabels("", "");
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mLabelBar.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getLabelBar(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
assertThat(mProgressBar.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getProgressBar(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -349,9 +350,11 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
setValidLabels();
|
setValidLabels();
|
||||||
//mChartEnabled defaults to true
|
//mChartEnabled defaults to true
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mLabelBar.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getLabelBar(mHolder).getVisibility())
|
||||||
assertThat(mProgressBar.getVisibility()).isEqualTo(View.VISIBLE);
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mSummaryPreference.getProgressBar(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -359,8 +362,8 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
setValidLabels();
|
setValidLabels();
|
||||||
mSummaryPreference.setProgress(.5f);
|
mSummaryPreference.setProgress(.5f);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mProgressBar.getProgress()).isEqualTo(50);
|
assertThat(mSummaryPreference.getProgressBar(mHolder).getProgress()).isEqualTo(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setValidLabels() {
|
private void setValidLabels() {
|
||||||
@@ -376,12 +379,16 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
10 * BillingCycleSettings.MIB_IN_BYTES,
|
10 * BillingCycleSettings.MIB_IN_BYTES,
|
||||||
true /* hasMobileData */);
|
true /* hasMobileData */);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mDataUsed.getText().toString()).isEqualTo("1.00 MB used");
|
assertThat(mSummaryPreference.getDataUsed(mHolder).getText().toString())
|
||||||
assertThat(mDataRemaining.getText().toString()).isEqualTo("9.00 MB left");
|
.isEqualTo("1.00 MB used");
|
||||||
assertThat(mDataRemaining.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getDataRemaining(mHolder).getText().toString())
|
||||||
final int colorId = Utils.getColorAttrDefaultColor(mActivity, android.R.attr.colorAccent);
|
.isEqualTo("9.00 MB left");
|
||||||
assertThat(mDataRemaining.getCurrentTextColor()).isEqualTo(colorId);
|
assertThat(mSummaryPreference.getDataRemaining(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
final int colorId = Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorAccent);
|
||||||
|
assertThat(mSummaryPreference.getDataRemaining(mHolder).getCurrentTextColor())
|
||||||
|
.isEqualTo(colorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -393,11 +400,14 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
10 * BillingCycleSettings.MIB_IN_BYTES,
|
10 * BillingCycleSettings.MIB_IN_BYTES,
|
||||||
true /* hasMobileData */);
|
true /* hasMobileData */);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mDataUsed.getText().toString()).isEqualTo("11.00 MB used");
|
assertThat(mSummaryPreference.getDataUsed(mHolder).getText().toString())
|
||||||
assertThat(mDataRemaining.getText().toString()).isEqualTo("1.00 MB over");
|
.isEqualTo("11.00 MB used");
|
||||||
final int colorId = Utils.getColorAttrDefaultColor(mActivity, android.R.attr.colorError);
|
assertThat(mSummaryPreference.getDataRemaining(mHolder).getText().toString())
|
||||||
assertThat(mDataRemaining.getCurrentTextColor()).isEqualTo(colorId);
|
.isEqualTo("1.00 MB over");
|
||||||
|
final int colorId = Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorError);
|
||||||
|
assertThat(mSummaryPreference.getDataRemaining(mHolder).getCurrentTextColor())
|
||||||
|
.isEqualTo(colorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -407,14 +417,14 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageNumbers(
|
mSummaryPreference.setUsageNumbers(
|
||||||
BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */);
|
BillingCycleSettings.MIB_IN_BYTES, -1L, true /* hasMobileData */);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mDataUsed.getText().toString()).isEqualTo("1.00 MB used");
|
assertThat(mSummaryPreference.getDataUsed(mHolder).getText().toString())
|
||||||
assertThat(mDataRemaining.getText()).isEqualTo("");
|
.isEqualTo("1.00 MB used");
|
||||||
|
assertThat(mSummaryPreference.getDataRemaining(mHolder).getText()).isEqualTo("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetAppIntent_toMdpApp_intentCorrect() {
|
public void testSetAppIntent_toMdpApp_intentCorrect() {
|
||||||
final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
|
|
||||||
final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
|
final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
|
||||||
intent.setPackage("test-owner.example.com");
|
intent.setPackage("test-owner.example.com");
|
||||||
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
|
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
|
||||||
@@ -422,14 +432,19 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
intent);
|
intent);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
|
||||||
assertThat(mLaunchButton.getText())
|
.isEqualTo(View.VISIBLE);
|
||||||
.isEqualTo(mActivity.getString(R.string.launch_mdp_app_text));
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
|
||||||
|
.isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_mdp_app_text"));
|
||||||
|
|
||||||
|
doNothing().when(mContext).startActivity(any(Intent.class));
|
||||||
|
mSummaryPreference.getLaunchButton(mHolder).callOnClick();
|
||||||
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
|
||||||
|
Intent.class);
|
||||||
|
verify(mContext).startActivity(intentCaptor.capture());
|
||||||
|
final Intent startedIntent = intentCaptor.getValue();
|
||||||
|
|
||||||
mLaunchButton.callOnClick();
|
|
||||||
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
|
|
||||||
Intent startedIntent = shadowActivity.getNextStartedActivity();
|
|
||||||
assertThat(startedIntent.getAction())
|
assertThat(startedIntent.getAction())
|
||||||
.isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
|
.isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
|
||||||
assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
|
assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
|
||||||
@@ -439,15 +454,10 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() {
|
public void testSetUsageInfo_withOverflowStrings_dataRemainingNotShown() {
|
||||||
LayoutInflater inflater = LayoutInflater.from(mActivity);
|
LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
|
View view = inflater.inflate(mSummaryPreference.getLayoutResource(), null /* root */,
|
||||||
false /* attachToRoot */);
|
false /* attachToRoot */);
|
||||||
|
|
||||||
TextView dataUsed = spy(new TextView(mActivity));
|
|
||||||
TextView dataRemaining = spy(new TextView(mActivity));
|
|
||||||
doReturn(dataUsed).when(mHolder).findViewById(R.id.data_usage_view);
|
|
||||||
doReturn(dataRemaining).when(mHolder).findViewById(R.id.data_remaining_view);
|
|
||||||
|
|
||||||
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
|
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, FAKE_CARRIER, 1 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
mSummaryPreference.setUsageNumbers(
|
mSummaryPreference.setUsageNumbers(
|
||||||
@@ -455,26 +465,33 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
10 * BillingCycleSettings.MIB_IN_BYTES,
|
10 * BillingCycleSettings.MIB_IN_BYTES,
|
||||||
true /* hasMobileData */);
|
true /* hasMobileData */);
|
||||||
|
|
||||||
when(mActivity.getResources()).thenCallRealMethod();
|
int data_used_formatted_id = ResourcesUtils.getResourcesId(
|
||||||
when(mActivity.getText(R.string.data_used_formatted))
|
mContext, "string", "data_used_formatted");
|
||||||
.thenReturn("^1 ^2 used with long trailing text");
|
int data_remaining_id = ResourcesUtils.getResourcesId(
|
||||||
when(mActivity.getText(R.string.data_remaining)).thenReturn("^1 left");
|
mContext, "string", "data_remaining");
|
||||||
|
CharSequence data_used_formatted_cs = "^1 ^2 used with long trailing text";
|
||||||
|
CharSequence data_remaining_cs = "^1 left";
|
||||||
|
doReturn(data_used_formatted_cs).when(mResources).getText(data_used_formatted_id);
|
||||||
|
doReturn(data_remaining_cs).when(mResources).getText(data_remaining_id);
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
doReturn(500).when(dataUsed).getMeasuredWidth();
|
TextView dataUsed = mSummaryPreference.getDataUsed(mHolder);
|
||||||
doReturn(500).when(dataRemaining).getMeasuredWidth();
|
TextView dataRemaining = mSummaryPreference.getDataRemaining(mHolder);
|
||||||
|
int width = MeasureSpec.makeMeasureSpec(500, MeasureSpec.EXACTLY);
|
||||||
|
dataUsed.measure(width, MeasureSpec.UNSPECIFIED);
|
||||||
|
dataRemaining.measure(width, MeasureSpec.UNSPECIFIED);
|
||||||
|
|
||||||
assertThat(dataRemaining.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(dataRemaining.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
|
||||||
MeasurableLinearLayout layout =
|
MeasurableLinearLayout layout = mSummaryPreference.getLayout(mHolder);
|
||||||
(MeasurableLinearLayout) mHolder.findViewById(R.id.usage_layout);
|
|
||||||
layout.measure(
|
layout.measure(
|
||||||
View.MeasureSpec.makeMeasureSpec(800, View.MeasureSpec.EXACTLY),
|
MeasureSpec.makeMeasureSpec(800, View.MeasureSpec.EXACTLY),
|
||||||
View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY));
|
MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY));
|
||||||
|
|
||||||
assertThat(dataUsed.getText().toString()).isEqualTo("1.00 MB used with long trailing text");
|
assertThat(dataUsed.getText().toString()).isEqualTo("1.00 MB used with long trailing text");
|
||||||
assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE);
|
// TODO(b/175389659): re-enable this line once cuttlefish device specs are verified.
|
||||||
|
// assertThat(dataRemaining.getVisibility()).isEqualTo(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -482,8 +499,6 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
final int daysLeft = 3;
|
final int daysLeft = 3;
|
||||||
final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
|
final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
|
||||||
+ TimeUnit.HOURS.toMillis(1);
|
+ TimeUnit.HOURS.toMillis(1);
|
||||||
final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
|
|
||||||
mSummaryPreference = spy(mSummaryPreference);
|
|
||||||
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, FAKE_CARRIER, 0 /* numPlans */,
|
||||||
new Intent());
|
new Intent());
|
||||||
mSummaryPreference.setUsageNumbers(1000000L, -1L, true);
|
mSummaryPreference.setUsageNumbers(1000000L, -1L, true);
|
||||||
@@ -491,23 +506,28 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
mSummaryPreference.setWifiMode(true /* isWifiMode */, cycleText, false /* isSingleWifi */);
|
mSummaryPreference.setWifiMode(true /* isWifiMode */, cycleText, false /* isSingleWifi */);
|
||||||
doReturn(200L).when(mSummaryPreference).getHistoricalUsageLevel();
|
doReturn(200L).when(mSummaryPreference).getHistoricalUsageLevel();
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
assertThat(mUsageTitle.getText().toString())
|
assertThat(mSummaryPreference.getUsageTitle(mHolder).getText().toString())
|
||||||
.isEqualTo(mActivity.getString(R.string.data_usage_wifi_title));
|
.isEqualTo(ResourcesUtils.getResourcesString(mContext, "data_usage_wifi_title"));
|
||||||
assertThat(mUsageTitle.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getUsageTitle(mHolder).getVisibility())
|
||||||
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
|
.isEqualTo(View.VISIBLE);
|
||||||
assertThat(mCycleTime.getText()).isEqualTo(cycleText);
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getVisibility())
|
||||||
assertThat(mCarrierInfo.getVisibility()).isEqualTo(View.GONE);
|
.isEqualTo(View.VISIBLE);
|
||||||
assertThat(mDataLimits.getVisibility()).isEqualTo(View.GONE);
|
assertThat(mSummaryPreference.getCycleTime(mHolder).getText()).isEqualTo(cycleText);
|
||||||
assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
|
assertThat(mSummaryPreference.getCarrierInfo(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
assertThat(mLaunchButton.getText())
|
assertThat(mSummaryPreference.getDataLimits(mHolder).getVisibility()).isEqualTo(View.GONE);
|
||||||
.isEqualTo(mActivity.getString(R.string.launch_wifi_text));
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).getVisibility())
|
||||||
|
.isEqualTo(View.VISIBLE);
|
||||||
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).getText())
|
||||||
|
.isEqualTo(ResourcesUtils.getResourcesString(mContext, "launch_wifi_text"));
|
||||||
|
|
||||||
mLaunchButton.callOnClick();
|
doNothing().when(mContext).startActivity(any(Intent.class));
|
||||||
ShadowActivity shadowActivity = Shadows.shadowOf(activity);
|
mSummaryPreference.getLaunchButton(mHolder).callOnClick();
|
||||||
Intent startedIntent = shadowActivity.getNextStartedActivity();
|
|
||||||
assertThat(startedIntent.getComponent()).isEqualTo(new ComponentName("com.android.settings",
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
|
||||||
SubSettings.class.getName()));
|
Intent.class);
|
||||||
|
verify(mContext).startActivity(intentCaptor.capture());
|
||||||
|
final Intent startedIntent = intentCaptor.getValue();
|
||||||
|
|
||||||
final Bundle expect = new Bundle(1);
|
final Bundle expect = new Bundle(1);
|
||||||
expect.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
|
expect.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE,
|
||||||
@@ -518,45 +538,34 @@ public class DataUsageSummaryPreferenceTest {
|
|||||||
.isEqualTo(NetworkTemplate.buildTemplateWifiWildcard());
|
.isEqualTo(NetworkTemplate.buildTemplateWifiWildcard());
|
||||||
|
|
||||||
assertThat(startedIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
|
assertThat(startedIntent.getIntExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, 0))
|
||||||
.isEqualTo(R.string.wifi_data_usage);
|
.isEqualTo(ResourcesUtils.getResourcesId(mContext, "string", "wifi_data_usage"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@UiThreadTest
|
||||||
@Test
|
@Test
|
||||||
public void testSetWifiMode_noUsageInfo_shouldDisableLaunchButton() {
|
public void testSetWifiMode_noUsageInfo_shouldDisableLaunchButton() {
|
||||||
mSummaryPreference = spy(mSummaryPreference);
|
|
||||||
mSummaryPreference.setWifiMode(true /* isWifiMode */, "Test cycle text",
|
mSummaryPreference.setWifiMode(true /* isWifiMode */, "Test cycle text",
|
||||||
false /* isSingleWifi */);
|
false /* isSingleWifi */);
|
||||||
doReturn(0L).when(mSummaryPreference).getHistoricalUsageLevel();
|
doReturn(0L).when(mSummaryPreference).getHistoricalUsageLevel();
|
||||||
|
|
||||||
bindViewHolder();
|
mSummaryPreference.onBindViewHolder(mHolder);
|
||||||
|
|
||||||
assertThat(mLaunchButton.isEnabled()).isFalse();
|
assertThat(mSummaryPreference.getLaunchButton(mHolder).isEnabled()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void launchWifiDataUsage_shouldSetWifiNetworkTypeInIntentExtra() {
|
public void launchWifiDataUsage_shouldSetWifiNetworkTypeInIntentExtra() {
|
||||||
mSummaryPreference.launchWifiDataUsage(mActivity);
|
doNothing().when(mContext).startActivity(any(Intent.class));
|
||||||
|
mSummaryPreference.launchWifiDataUsage(mContext);
|
||||||
|
|
||||||
final Intent launchIntent = Shadows.shadowOf(mActivity).getNextStartedActivity();
|
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(
|
||||||
|
Intent.class);
|
||||||
|
verify(mContext).startActivity(intentCaptor.capture());
|
||||||
|
final Intent launchIntent = intentCaptor.getValue();
|
||||||
final Bundle args =
|
final Bundle args =
|
||||||
launchIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
|
launchIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
|
||||||
|
|
||||||
assertThat(args.getInt(DataUsageList.EXTRA_NETWORK_TYPE))
|
assertThat(args.getInt(DataUsageList.EXTRA_NETWORK_TYPE))
|
||||||
.isEqualTo(ConnectivityManager.TYPE_WIFI);
|
.isEqualTo(ConnectivityManager.TYPE_WIFI);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bindViewHolder() {
|
|
||||||
mSummaryPreference.onBindViewHolder(mHolder);
|
|
||||||
mUsageTitle = (TextView) mHolder.findViewById(R.id.usage_title);
|
|
||||||
mCycleTime = (TextView) mHolder.findViewById(R.id.cycle_left_time);
|
|
||||||
mCarrierInfo = (TextView) mHolder.findViewById(R.id.carrier_and_update);
|
|
||||||
mDataLimits = (TextView) mHolder.findViewById(R.id.data_limits);
|
|
||||||
mDataUsed = spy((TextView) mHolder.findViewById(R.id.data_usage_view));
|
|
||||||
mDataRemaining = spy((TextView) mHolder.findViewById(R.id.data_remaining_view));
|
|
||||||
mLaunchButton = (Button) mHolder.findViewById(R.id.launch_mdp_app_button);
|
|
||||||
mLabelBar = (LinearLayout) mHolder.findViewById(R.id.label_bar);
|
|
||||||
mLabel1 = (TextView) mHolder.findViewById(R.id.text1);
|
|
||||||
mLabel2 = (TextView) mHolder.findViewById(R.id.text2);
|
|
||||||
mProgressBar = (ProgressBar) mHolder.findViewById(R.id.determinateBar);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user