/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ package org.mozilla.android.sync.test; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.mozilla.gecko.sync.PrefsSource; import org.mozilla.gecko.sync.SyncConfiguration; import android.content.SharedPreferences; public class TestSyncConfiguration extends AndroidSyncTestCase implements PrefsSource { public static final String TEST_PREFS_NAME = "test"; /* * PrefsSource methods. */ @Override public SharedPreferences getPrefs(String name, int mode) { return this.getApplicationContext().getSharedPreferences(name, mode); } public void testEnabledEngineNames() { SyncConfiguration config = null; SharedPreferences prefs = getPrefs(TEST_PREFS_NAME, 0); config = new SyncConfiguration(TEST_PREFS_NAME, this); config.enabledEngineNames = new HashSet<String>(); config.enabledEngineNames.add("test1"); config.enabledEngineNames.add("test2"); config.persistToPrefs(); assertTrue(prefs.contains(SyncConfiguration.PREF_ENABLED_ENGINE_NAMES)); config = new SyncConfiguration(TEST_PREFS_NAME, this); Set<String> expected = new HashSet<String>(); for (String name : new String[] { "test1", "test2" }) { expected.add(name); } assertEquals(expected, config.enabledEngineNames); config.enabledEngineNames = null; config.persistToPrefs(); assertFalse(prefs.contains(SyncConfiguration.PREF_ENABLED_ENGINE_NAMES)); config = new SyncConfiguration(TEST_PREFS_NAME, this); assertNull(config.enabledEngineNames); } public void testSyncID() { SyncConfiguration config = null; SharedPreferences prefs = getPrefs(TEST_PREFS_NAME, 0); config = new SyncConfiguration(TEST_PREFS_NAME, this); config.syncID = "test1"; config.persistToPrefs(); assertTrue(prefs.contains(SyncConfiguration.PREF_SYNC_ID)); config = new SyncConfiguration(TEST_PREFS_NAME, this); assertEquals("test1", config.syncID); } public void testStoreSelectedEnginesToPrefs() { SharedPreferences prefs = getPrefs(TEST_PREFS_NAME, 0); // Store engines, excluding history/forms special case. Map<String, Boolean> expectedEngines = new HashMap<String, Boolean>(); expectedEngines.put("test1", true); expectedEngines.put("test2", false); expectedEngines.put("test3", true); SyncConfiguration.storeSelectedEnginesToPrefs(prefs, expectedEngines); // Read values from selectedEngines. assertTrue(prefs.contains(SyncConfiguration.PREF_USER_SELECTED_ENGINES_TO_SYNC)); SyncConfiguration config = null; config = new SyncConfiguration(TEST_PREFS_NAME, this); config.loadFromPrefs(prefs); assertEquals(expectedEngines, config.userSelectedEngines); } /** * Tests dependency of forms engine on history engine. */ public void testSelectedEnginesHistoryAndForms() { SharedPreferences prefs = getPrefs(TEST_PREFS_NAME, 0); // Store engines, excluding history/forms special case. Map<String, Boolean> storedEngines = new HashMap<String, Boolean>(); storedEngines.put("history", true); SyncConfiguration.storeSelectedEnginesToPrefs(prefs, storedEngines); // Expected engines. storedEngines.put("forms", true); // Read values from selectedEngines. assertTrue(prefs.contains(SyncConfiguration.PREF_USER_SELECTED_ENGINES_TO_SYNC)); SyncConfiguration config = null; config = new SyncConfiguration(TEST_PREFS_NAME, this); config.loadFromPrefs(prefs); assertEquals(storedEngines, config.userSelectedEngines); } public void testsSelectedEnginesNoHistoryNorForms() { SharedPreferences prefs = getPrefs(TEST_PREFS_NAME, 0); // Store engines, excluding history/forms special case. Map<String, Boolean> storedEngines = new HashMap<String, Boolean>(); storedEngines.put("forms", true); SyncConfiguration.storeSelectedEnginesToPrefs(prefs, storedEngines); // Read values from selectedEngines. assertTrue(prefs.contains(SyncConfiguration.PREF_USER_SELECTED_ENGINES_TO_SYNC)); SyncConfiguration config = null; config = new SyncConfiguration(TEST_PREFS_NAME, this); config.loadFromPrefs(prefs); // Forms should not be selected if history is not present. assertTrue(config.userSelectedEngines.isEmpty()); } }