1package com.android.settings.datausage; 2 3import android.net.NetworkPolicy; 4import android.net.NetworkTemplate; 5import com.android.settings.testutils.SettingsRobolectricTestRunner; 6import com.android.settings.TestConfig; 7import com.android.settingslib.net.DataUsageController.DataUsageInfo; 8import org.junit.Before; 9import org.junit.Test; 10import org.junit.runner.RunWith; 11import org.robolectric.annotation.Config; 12 13import static com.google.common.truth.Truth.assertThat; 14 15@RunWith(SettingsRobolectricTestRunner.class) 16@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) 17public class DataUsageInfoControllerTest { 18 private DataUsageInfoController mInfoController; 19 private DataUsageInfo info; 20 private static final int NEGATIVE = -1; 21 private static final int ZERO = 0; 22 private static final int POSITIVE_SMALL = 1; 23 private static final int POSITIVE_LARGE = 5; 24 25 @Before 26 public void setUp() { 27 mInfoController = new DataUsageInfoController(); 28 info = new DataUsageInfo(); 29 } 30 31 @Test 32 public void testLowUsageLowWarning_LimitUsed() { 33 info.warningLevel = POSITIVE_SMALL; 34 info.limitLevel = POSITIVE_LARGE; 35 info.usageLevel = POSITIVE_SMALL; 36 assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.limitLevel); 37 } 38 39 @Test 40 public void testLowUsageEqualWarning_LimitUsed() { 41 info.warningLevel = POSITIVE_LARGE; 42 info.limitLevel = POSITIVE_LARGE; 43 info.usageLevel = POSITIVE_SMALL; 44 assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.limitLevel); 45 } 46 47 @Test 48 public void testNoLimitNoUsage_WarningUsed() { 49 info.warningLevel = POSITIVE_LARGE; 50 info.limitLevel = ZERO; 51 info.usageLevel = ZERO; 52 assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.warningLevel); 53 } 54 55 @Test 56 public void testNoLimitLowUsage_WarningUsed() { 57 info.warningLevel = POSITIVE_LARGE; 58 info.limitLevel = ZERO; 59 info.usageLevel = POSITIVE_SMALL; 60 assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.warningLevel); 61 } 62 63 @Test 64 public void testLowWarningNoLimit_UsageUsed() { 65 info.warningLevel = POSITIVE_SMALL; 66 info.limitLevel = ZERO; 67 info.usageLevel = POSITIVE_LARGE; 68 assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.usageLevel); 69 } 70 71 @Test 72 public void testLowWarningLowLimit_UsageUsed() { 73 info.warningLevel = POSITIVE_SMALL; 74 info.limitLevel = POSITIVE_SMALL; 75 info.usageLevel = POSITIVE_LARGE; 76 assertThat(mInfoController.getSummaryLimit(info)).isEqualTo(info.usageLevel); 77 } 78 79 private NetworkPolicy getDefaultNetworkPolicy() { 80 NetworkTemplate template = new NetworkTemplate(NetworkTemplate.MATCH_WIFI_WILDCARD, 81 null, null); 82 int cycleDay = -1; 83 String cycleTimezone = "UTC"; 84 long warningBytes = -1; 85 long limitBytes = -1; 86 return new NetworkPolicy(template,cycleDay, cycleTimezone, warningBytes, limitBytes, true); 87 } 88 89 @Test 90 public void testNullArguments_NoError() { 91 mInfoController.updateDataLimit(null, null); 92 mInfoController.updateDataLimit(info, null); 93 mInfoController.updateDataLimit(null, getDefaultNetworkPolicy()); 94 } 95 96 @Test 97 public void testNegativeWarning_UpdatedToZero() { 98 NetworkPolicy policy = getDefaultNetworkPolicy(); 99 policy.warningBytes = NEGATIVE; 100 mInfoController.updateDataLimit(info, policy); 101 assertThat(info.warningLevel).isEqualTo(ZERO); 102 } 103 104 @Test 105 public void testWarningZero_UpdatedToZero() { 106 NetworkPolicy policy = getDefaultNetworkPolicy(); 107 policy.warningBytes = ZERO; 108 mInfoController.updateDataLimit(info, policy); 109 assertThat(info.warningLevel).isEqualTo(ZERO); 110 } 111 112 @Test 113 public void testWarningPositive_UpdatedToWarning() { 114 NetworkPolicy policy = getDefaultNetworkPolicy(); 115 policy.warningBytes = POSITIVE_SMALL; 116 mInfoController.updateDataLimit(info, policy); 117 assertThat(info.warningLevel).isEqualTo(policy.warningBytes); 118 } 119 120 @Test 121 public void testLimitNegative_UpdatedToZero() { 122 NetworkPolicy policy = getDefaultNetworkPolicy(); 123 policy.limitBytes = NEGATIVE; 124 mInfoController.updateDataLimit(info, policy); 125 assertThat(info.limitLevel).isEqualTo(ZERO); 126 } 127 128 @Test 129 public void testLimitZero_UpdatedToZero() { 130 NetworkPolicy policy = getDefaultNetworkPolicy(); 131 policy.limitBytes = ZERO; 132 mInfoController.updateDataLimit(info, policy); 133 assertThat(info.limitLevel).isEqualTo(ZERO); 134 } 135 136 @Test 137 public void testLimitPositive_UpdatedToLimit() { 138 NetworkPolicy policy = getDefaultNetworkPolicy(); 139 policy.limitBytes = POSITIVE_SMALL; 140 mInfoController.updateDataLimit(info, policy); 141 assertThat(info.limitLevel).isEqualTo(policy.limitBytes); 142 } 143}