package org.robolectric.fakes;
import android.webkit.WebSettings;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.TestRunners;
import org.robolectric.annotation.internal.DoNotInstrument;
import static org.assertj.core.api.Assertions.assertThat;
@DoNotInstrument
@RunWith(TestRunners.SelfTest.class)
public class RoboWebSettingsTest {
private final RoboWebSettings webSettings = new RoboWebSettings();
private static final boolean[] TRUE_AND_FALSE = {true, false};
@Test
public void testDefaults() {
assertThat(webSettings.getAllowContentAccess()).isTrue();
assertThat(webSettings.getAllowFileAccess()).isTrue();
assertThat(webSettings.getAppCacheEnabled()).isFalse();
assertThat(webSettings.getBlockNetworkImage()).isFalse();
assertThat(webSettings.getBlockNetworkLoads()).isFalse();
assertThat(webSettings.getBuiltInZoomControls()).isTrue();
assertThat(webSettings.getDatabaseEnabled()).isFalse();
assertThat(webSettings.getDomStorageEnabled()).isFalse();
assertThat(webSettings.getGeolocationEnabled()).isFalse();
assertThat(webSettings.getJavaScriptEnabled()).isFalse();
assertThat(webSettings.getLightTouchEnabled()).isFalse();
assertThat(webSettings.getLoadWithOverviewMode()).isFalse();
assertThat(webSettings.getMediaPlaybackRequiresUserGesture()).isTrue();
assertThat(webSettings.getPluginState()).isEqualTo(WebSettings.PluginState.OFF);
assertThat(webSettings.getSaveFormData()).isFalse();
assertThat(webSettings.getTextZoom()).isEqualTo(100);
assertThat(webSettings.getDefaultTextEncodingName()).isEqualTo("UTF-8");
assertThat(webSettings.getDefaultFontSize()).isEqualTo(16);
// deprecated methods
assertThat(webSettings.getPluginsEnabled()).isFalse();
// obsoleted methods
assertThat(webSettings.getNeedInitialFocus()).isFalse();
assertThat(webSettings.getSupportMultipleWindows()).isFalse();
assertThat(webSettings.getSupportZoom()).isTrue();
}
@Test
public void testAllowContentAccess() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setAllowContentAccess(value);
assertThat(webSettings.getAllowContentAccess()).isEqualTo(value);
}
}
@Test
public void testAllowFileAccess() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setAllowFileAccess(value);
assertThat(webSettings.getAllowFileAccess()).isEqualTo(value);
}
}
@Test
public void testAllowFileAccessFromFileURLs() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setAllowFileAccessFromFileURLs(value);
assertThat(webSettings.getAllowFileAccessFromFileURLs()).isEqualTo(value);
}
}
@Test
public void testAllowUniversalAccessFromFileURLs() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setAllowUniversalAccessFromFileURLs(value);
assertThat(webSettings.getAllowUniversalAccessFromFileURLs()).isEqualTo(value);
}
}
@Test
public void testBlockNetworkImage() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setBlockNetworkImage(value);
assertThat(webSettings.getBlockNetworkImage()).isEqualTo(value);
}
}
@Test
public void testBlockNetworkLoads() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setBlockNetworkLoads(value);
assertThat(webSettings.getBlockNetworkLoads()).isEqualTo(value);
}
}
@Test
public void testBuiltInZoomControls() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setBuiltInZoomControls(value);
assertThat(webSettings.getBuiltInZoomControls()).isEqualTo(value);
}
}
@Test
public void testDatabaseEnabled() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setDatabaseEnabled(value);
assertThat(webSettings.getDatabaseEnabled()).isEqualTo(value);
}
}
@Test
public void testDomStorageEnabled() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setDomStorageEnabled(value);
assertThat(webSettings.getDomStorageEnabled()).isEqualTo(value);
}
}
@Test
public void testJavaScriptEnabled() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setJavaScriptEnabled(value);
assertThat(webSettings.getJavaScriptEnabled()).isEqualTo(value);
}
}
@Test
public void testLightTouchEnabled() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setLightTouchEnabled(value);
assertThat(webSettings.getLightTouchEnabled()).isEqualTo(value);
}
}
@Test
public void testLoadWithOverviewMode() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setLoadWithOverviewMode(value);
assertThat(webSettings.getLoadWithOverviewMode()).isEqualTo(value);
}
}
@Test
public void testMediaPlaybackRequiresUserGesture() throws Exception {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setMediaPlaybackRequiresUserGesture(value);
assertThat(webSettings.getMediaPlaybackRequiresUserGesture()).isEqualTo(value);
}
}
@Test
public void testNeedInitialFocus() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setNeedInitialFocus(value);
assertThat(webSettings.getNeedInitialFocus()).isEqualTo(value);
}
}
@Test
public void testPluginsEnabled() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setPluginsEnabled(value);
assertThat(webSettings.getPluginsEnabled()).isEqualTo(value);
}
}
@Test
public void testPluginState() {
for (WebSettings.PluginState state : WebSettings.PluginState.values()) {
webSettings.setPluginState(state);
assertThat(webSettings.getPluginState()).isEqualTo(state);
}
}
@Test
public void testSupportMultipleWindows() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setSupportMultipleWindows(value);
assertThat(webSettings.getSupportMultipleWindows()).isEqualTo(value);
}
}
@Test
public void testSupportZoom() {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setSupportZoom(value);
assertThat(webSettings.getSupportZoom()).isEqualTo(value);
}
}
@Test
public void testSetCacheMode() throws Exception {
webSettings.setCacheMode(7);
assertThat(webSettings.getCacheMode()).isEqualTo(7);
}
@Test
public void testSetUseWideViewPort() throws Exception {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setUseWideViewPort(value);
assertThat(webSettings.getUseWideViewPort()).isEqualTo(value);
}
}
@Test
public void testSetAppCacheEnabled() throws Exception {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setAppCacheEnabled(value);
assertThat(webSettings.getAppCacheEnabled()).isEqualTo(value);
}
}
@Test
public void testSetGeolocationEnabled() throws Exception {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setGeolocationEnabled(value);
assertThat(webSettings.getGeolocationEnabled()).isEqualTo(value);
}
}
@Test
public void testSetSaveFormData() throws Exception {
for (boolean value : TRUE_AND_FALSE) {
webSettings.setSaveFormData(value);
assertThat(webSettings.getSaveFormData()).isEqualTo(value);
}
}
@Test
public void testSetDatabasePath() throws Exception {
webSettings.setDatabasePath("new_path");
assertThat(webSettings.getDatabasePath()).isEqualTo("new_path");
}
@Test
public void testSetRenderPriority() throws Exception {
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
assertThat(webSettings.getRenderPriority()).isEqualTo(WebSettings.RenderPriority.HIGH);
}
@Test
public void testSetAppCachePath() throws Exception {
webSettings.setAppCachePath("new_path");
assertThat(webSettings.getAppCachePath()).isEqualTo("new_path");
}
@Test
public void testSetAppCacheMaxSize() throws Exception {
webSettings.setAppCacheMaxSize(100);
assertThat(webSettings.getAppCacheMaxSize()).isEqualTo(100);
}
@Test
public void testSetGeolocationDatabasePath() throws Exception {
webSettings.setGeolocationDatabasePath("new_path");
assertThat(webSettings.getGeolocationDatabasePath()).isEqualTo("new_path");
}
@Test
public void testSetJavascriptCanOpenWindowsAutomaticallyIsTrue() throws Exception {
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
assertThat(webSettings.getJavaScriptCanOpenWindowsAutomatically()).isTrue();
}
@Test
public void testSetJavascriptCanOpenWindowsAutomaticallyIsFalse() throws Exception {
webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
assertThat(webSettings.getJavaScriptCanOpenWindowsAutomatically()).isFalse();
}
@Test
public void testSetTextZoom() throws Exception {
webSettings.setTextZoom(50);
assertThat(webSettings.getTextZoom()).isEqualTo(50);
}
@Test
public void setDefaultTextEncodingName_shouldGetSetValue() {
webSettings.setDefaultTextEncodingName("UTF-16");
assertThat(webSettings.getDefaultTextEncodingName()).isEqualTo("UTF-16");
}
@Test
public void setDefaultFontSize_shouldGetSetValues() {
webSettings.setDefaultFontSize(2);
assertThat(webSettings.getDefaultFontSize()).isEqualTo(2);
}
}