Index: chrome/android/junit/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java |
similarity index 16% |
rename from chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java |
rename to chrome/android/junit/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java |
index 6e198514367aabc27a69adf542952eb522689ffc..619b127b84b843fb4334ddc373e9cdf6de5c32d2 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java |
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManagerTest.java |
@@ -4,118 +4,106 @@ |
package org.chromium.chrome.browser.preferences.privacy; |
+import static org.mockito.Mockito.mock; |
+import static org.mockito.Mockito.when; |
+ |
import android.content.Context; |
-import android.support.test.filters.SmallTest; |
-import android.test.InstrumentationTestCase; |
-import android.test.UiThreadTest; |
+import android.net.ConnectivityManager; |
+import android.net.NetworkInfo; |
+ |
+import static org.junit.Assert.assertEquals; |
+ |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+import org.robolectric.RuntimeEnvironment; |
+import org.robolectric.annotation.Config; |
import org.chromium.base.CommandLine; |
import org.chromium.base.ContextUtils; |
-import org.chromium.base.test.util.AdvancedMockContext; |
-import org.chromium.base.test.util.Feature; |
+import org.chromium.testing.local.LocalRobolectricTestRunner; |
/** |
- * Tests "Usage and Crash reporting" preferences. |
+ * junit tests for {@link PrivacyPreferencesManager}'s handling of "Usage and Crash reporting" |
+ * preferences. |
*/ |
-public class PrivacyPreferencesManagerTest extends InstrumentationTestCase { |
- |
+@RunWith(LocalRobolectricTestRunner.class) |
+@Config(manifest = Config.NONE) |
+public class PrivacyPreferencesManagerTest { |
+ // Parameters to simulate user- and network-permission state. |
private static final boolean CONNECTED = true; |
private static final boolean DISCONNECTED = false; |
- private static final boolean WIFI_ON = true; |
- private static final boolean WIFI_OFF = false; |
+ private static final boolean METERED = true; |
+ private static final boolean UNMETERED = false; |
- private static final boolean METRICS_UPLOAD_OK = true; |
- private static final boolean METRICS_UPLOAD_NOT_PERMITTED = false; |
+ private static final boolean METRICS_REPORTING_ENABLED = true; |
+ private static final boolean METRICS_REPORTING_DISABLED = false; |
- private static final boolean CRASH_NETWORK_OK = true; |
- private static final boolean CRASH_NETWORK_NOT_PERMITTED = false; |
- |
- private static final boolean METRIC_REPORTING_ENABLED = true; |
- private static final boolean METRIC_REPORTING_DISABLED = false; |
+ // Used to set test expectations. |
+ private static final boolean METRICS_UPLOAD_PERMITTED = true; |
+ private static final boolean METRICS_UPLOAD_NOT_PERMITTED = false; |
- // Perform the same test a few times to make sure any sort of |
- // caching still works. |
- private static final int REPS = 3; |
+ private static final boolean CRASH_NETWORK_AVAILABLE = true; |
+ private static final boolean CRASH_NETWORK_UNAVAILABLE = false; |
- @SmallTest |
- @Feature({"Android-AppBase"}) |
- @UiThreadTest |
- public void testAllowCrashDumpUploadNowCellDev() { |
+ @Test |
+ public void testUsageAndCrashReportingAccessors() { |
CommandLine.init(null); |
- runTest(CONNECTED, WIFI_ON, METRIC_REPORTING_ENABLED, METRICS_UPLOAD_OK, CRASH_NETWORK_OK); |
- runTest(CONNECTED, WIFI_OFF, METRIC_REPORTING_ENABLED, METRICS_UPLOAD_OK, |
- CRASH_NETWORK_NOT_PERMITTED); |
- runTest(DISCONNECTED, WIFI_OFF, METRIC_REPORTING_ENABLED, METRICS_UPLOAD_NOT_PERMITTED, |
- CRASH_NETWORK_NOT_PERMITTED); |
- |
- runTest(CONNECTED, WIFI_ON, METRIC_REPORTING_DISABLED, METRICS_UPLOAD_NOT_PERMITTED, |
- CRASH_NETWORK_OK); |
- runTest(CONNECTED, WIFI_OFF, METRIC_REPORTING_DISABLED, METRICS_UPLOAD_NOT_PERMITTED, |
- CRASH_NETWORK_NOT_PERMITTED); |
- runTest(DISCONNECTED, WIFI_OFF, METRIC_REPORTING_DISABLED, METRICS_UPLOAD_NOT_PERMITTED, |
- CRASH_NETWORK_NOT_PERMITTED); |
+ runTest(CONNECTED, UNMETERED, METRICS_REPORTING_ENABLED, METRICS_UPLOAD_PERMITTED, |
Maria
2017/03/20 23:23:40
So I recently saw a presentation on junit4 and usi
|
+ CRASH_NETWORK_AVAILABLE); |
+ runTest(CONNECTED, METERED, METRICS_REPORTING_ENABLED, METRICS_UPLOAD_PERMITTED, |
+ CRASH_NETWORK_UNAVAILABLE); |
+ runTest(DISCONNECTED, UNMETERED, METRICS_REPORTING_ENABLED, METRICS_UPLOAD_NOT_PERMITTED, |
+ CRASH_NETWORK_UNAVAILABLE); |
+ |
+ runTest(CONNECTED, UNMETERED, METRICS_REPORTING_DISABLED, METRICS_UPLOAD_NOT_PERMITTED, |
+ CRASH_NETWORK_AVAILABLE); |
+ runTest(CONNECTED, METERED, METRICS_REPORTING_DISABLED, METRICS_UPLOAD_NOT_PERMITTED, |
+ CRASH_NETWORK_UNAVAILABLE); |
+ runTest(DISCONNECTED, UNMETERED, METRICS_REPORTING_DISABLED, METRICS_UPLOAD_NOT_PERMITTED, |
+ CRASH_NETWORK_UNAVAILABLE); |
} |
- private void runTest(boolean isConnected, boolean wifiOn, boolean isMetricsReportingEnabled, |
+ private void runTest(boolean isConnected, boolean isMetered, boolean isMetricsReportingEnabled, |
boolean expectedMetricsUploadPermitted, |
boolean expectedNetworkAvailableForCrashUploads) { |
- PermissionContext context = new PermissionContext(getInstrumentation().getTargetContext()); |
- ContextUtils.initApplicationContextForTests(context.getApplicationContext()); |
- PrivacyPreferencesManager preferenceManager = new MockPrivacyPreferencesManager( |
- context, isConnected, wifiOn, isMetricsReportingEnabled); |
- |
- for (int i = 0; i < REPS; i++) { |
- String state = String.format("[connected = %b, wifi = %b, reporting = %b]", isConnected, |
- wifiOn, isMetricsReportingEnabled); |
- String msg = String.format("Metrics reporting should be %1$b for %2$s", |
- expectedMetricsUploadPermitted, state); |
- assertEquals(msg, expectedMetricsUploadPermitted, |
- preferenceManager.isMetricsUploadPermitted()); |
- |
- msg = String.format("Crash reporting should be %1$b for wifi %2$s", |
- expectedNetworkAvailableForCrashUploads, wifiOn); |
- assertEquals(msg, expectedNetworkAvailableForCrashUploads, |
- preferenceManager.isNetworkAvailableForCrashUploads()); |
- } |
+ // Mock out the network info accessors. |
+ NetworkInfo networkInfo = mock(NetworkInfo.class); |
+ when(networkInfo.isConnected()).thenReturn(isConnected); |
+ |
+ ConnectivityManager connectivityManager = mock(ConnectivityManager.class); |
+ when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); |
+ when(connectivityManager.isActiveNetworkMetered()).thenReturn(isMetered); |
+ |
+ Context context = mock(Context.class); |
+ when(context.getSystemService(Context.CONNECTIVITY_SERVICE)) |
+ .thenReturn(connectivityManager); |
+ |
+ // Perform other setup. |
+ ContextUtils.initApplicationContextForTests(RuntimeEnvironment.application); |
+ PrivacyPreferencesManager preferenceManager = new TestPrivacyPreferencesManager(context); |
+ preferenceManager.setUsageAndCrashReporting(isMetricsReportingEnabled); |
+ |
+ // Test the usage and crash reporting permission accessors! |
+ String state = String.format("[connected = %b, metered = %b, reporting = %b]", isConnected, |
+ isMetered, isMetricsReportingEnabled); |
+ String msg = String.format( |
+ "Metrics reporting should be %1$b for %2$s", expectedMetricsUploadPermitted, state); |
+ assertEquals( |
+ msg, expectedMetricsUploadPermitted, preferenceManager.isMetricsUploadPermitted()); |
+ |
+ msg = String.format("Crash reporting should be %1$b for metered state %2$s", |
+ expectedNetworkAvailableForCrashUploads, isMetered); |
+ assertEquals(msg, expectedNetworkAvailableForCrashUploads, |
+ preferenceManager.isNetworkAvailableForCrashUploads()); |
} |
- private static class MockPrivacyPreferencesManager extends PrivacyPreferencesManager { |
- private final boolean mIsConnected; |
- private final boolean mIsWifi; |
- |
- MockPrivacyPreferencesManager(Context context, boolean isConnected, boolean isWifi, |
- boolean isMetricsReportingEnabled) { |
+ private static class TestPrivacyPreferencesManager extends PrivacyPreferencesManager { |
+ TestPrivacyPreferencesManager(Context context) { |
super(context); |
- mIsConnected = isConnected; |
- mIsWifi = isWifi; |
- |
- setUsageAndCrashReporting(isMetricsReportingEnabled); |
- } |
- |
- @Override |
- public boolean isNetworkAvailable() { |
- return mIsConnected; |
} |
- @Override |
- public boolean isWiFiOrEthernetNetwork() { |
- return mIsWifi; |
- } |
- } |
- |
- private static class PermissionContext extends AdvancedMockContext { |
- public PermissionContext(Context targetContext) { |
- super(targetContext); |
- } |
- |
- @Override |
- public Object getSystemService(String name) { |
- if (Context.CONNECTIVITY_SERVICE.equals(name)) { |
- return null; |
- } |
- fail("Should not ask for any other service than the ConnectionManager."); |
- return super.getSystemService(name); |
- } |
+ // Stub out this call, as it could otherwise call into native code. |
+ public void syncUsageAndCrashReportingPrefs() {} |
} |
} |