| Index: libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/SharedPrefsStorageTest.java |
| diff --git a/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/SharedPrefsStorageTest.java b/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/SharedPrefsStorageTest.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..229acd911fac912e565f92d804a03231663f60f3 |
| --- /dev/null |
| +++ b/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/SharedPrefsStorageTest.java |
| @@ -0,0 +1,380 @@ |
| +/* |
| + * This file is part of Adblock Plus <https://adblockplus.org/>, |
| + * Copyright (C) 2006-2017 Eyeo GmbH |
| + * |
| + * Adblock Plus is free software: you can redistribute it and/or modify |
| + * it under the terms of the GNU General Public License version 3 as |
| + * published by the Free Software Foundation. |
| + * |
| + * Adblock Plus is distributed in the hope that it will be useful, |
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| + * GNU General Public License for more details. |
| + * |
| + * You should have received a copy of the GNU General Public License |
| + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| + */ |
| + |
| +package org.adblockplus.libadblockplus.tests; |
| + |
| +import android.content.Context; |
| +import android.content.SharedPreferences; |
| +import android.test.AndroidTestCase; |
| + |
| +import org.adblockplus.libadblockplus.android.Subscription; |
| +import org.adblockplus.libadblockplus.android.settings.AdblockSettings; |
| +import org.adblockplus.libadblockplus.android.settings.ConnectionType; |
| +import org.adblockplus.libadblockplus.android.settings.SharedPrefsStorage; |
| +import org.junit.Test; |
| + |
| +import java.util.Collections; |
| +import java.util.LinkedList; |
| +import java.util.List; |
| + |
| +public class SharedPrefsStorageTest extends AndroidTestCase |
| +{ |
| + protected static final String NAME = "prefs"; |
| + |
| + protected SharedPreferences prefs; |
| + protected SharedPrefsStorage storage; |
| + |
| + @Override |
| + protected void setUp() throws Exception |
| + { |
| + super.setUp(); |
| + |
| + prefs = getContext().getSharedPreferences(NAME, Context.MODE_PRIVATE); |
| + prefs.edit().clear().commit(); |
| + |
| + storage = new SharedPrefsStorage(prefs); |
| + storage.setCommit(true); |
| + } |
| + |
| + @Test |
| + public void testNeverSaved() |
| + { |
| + final AdblockSettings settings = storage.load(); |
| + assertNull(settings); |
| + } |
| + |
| + protected void _testAdblockEnabled() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + storage.save(savedSettings); |
| + |
| + AdblockSettings loadedSettings = storage.load(); |
| + assertEquals(savedSettings.isAdblockEnabled(), loadedSettings.isAdblockEnabled()); |
| + |
| + savedSettings.setAdblockEnabled(false); |
| + storage.save(savedSettings); |
| + |
| + loadedSettings = storage.load(); |
| + assertEquals(savedSettings.isAdblockEnabled(), loadedSettings.isAdblockEnabled()); |
| + } |
| + |
| + @Test |
| + public void testAdblockEnabled() |
| + { |
| + storage.setCommit(true); |
| + _testAdblockEnabled(); |
| + } |
| + |
| + @Test |
| + public void testAdblockEnabled_Apply() |
| + { |
| + storage.setCommit(false); // commit is sync (for `true`), apply is async (for `false`) |
| + _testAdblockEnabled(); |
| + } |
| + |
| + @Test |
| + public void testAcceptableAdsEnabled() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAcceptableAdsEnabled(true); |
| + storage.save(savedSettings); |
| + |
| + AdblockSettings loadedSettings = storage.load(); |
| + assertEquals(savedSettings.isAcceptableAdsEnabled(), loadedSettings.isAcceptableAdsEnabled()); |
| + |
| + savedSettings.setAcceptableAdsEnabled(false); |
| + storage.save(savedSettings); |
| + |
| + loadedSettings = storage.load(); |
| + assertEquals(savedSettings.isAcceptableAdsEnabled(), loadedSettings.isAcceptableAdsEnabled()); |
| + } |
| + |
| + @Test |
| + public void testSubscriptions_Null() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + assertNull(savedSettings.getSubscriptions()); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNull(loadedSettings.getSubscriptions()); |
| + } |
| + |
| + @Test |
| + public void testSubscriptions_Empty() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + savedSettings.setSubscriptions(Collections.<Subscription>emptyList()); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getSubscriptions()); |
| + assertEquals(0, loadedSettings.getSubscriptions().size()); |
| + } |
| + |
| + @Test |
| + public void testSubscriptions_OneValue() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<Subscription> subscriptions = new LinkedList<Subscription>(); |
| + final Subscription savedSubscription = new Subscription(); |
| + savedSubscription.title = "Title"; |
| + savedSubscription.url = "URL"; |
| + subscriptions.add(savedSubscription); |
| + |
| + savedSettings.setSubscriptions(subscriptions); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getSubscriptions()); |
| + assertEquals(1, loadedSettings.getSubscriptions().size()); |
| + |
| + final Subscription loadedSubscription = loadedSettings.getSubscriptions().get(0); |
| + assertEquals(savedSubscription.title, loadedSubscription.title); |
| + assertEquals(savedSubscription.url, loadedSubscription.url); |
| + |
| + // 'author', 'homepage', 'specialization', 'prefixes' settings are not saved by SharedPrefsStorage |
|
anton
2017/04/14 08:14:01
All that fields are NOT saved because they were no
|
| + } |
| + |
| + @Test |
| + public void testSubscriptions_OneValueNonEnglishTitle() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<Subscription> subscriptions = new LinkedList<Subscription>(); |
| + final Subscription savedSubscription = new Subscription(); |
| + savedSubscription.title = "Заголовок"; // non-English characters |
| + savedSubscription.url = "URL"; |
| + subscriptions.add(savedSubscription); |
| + |
| + savedSettings.setSubscriptions(subscriptions); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getSubscriptions()); |
| + assertEquals(1, loadedSettings.getSubscriptions().size()); |
| + |
| + final Subscription loadedSubscription = loadedSettings.getSubscriptions().get(0); |
| + assertEquals(savedSubscription.title, loadedSubscription.title); |
| + assertEquals(savedSubscription.url, loadedSubscription.url); |
| + |
| + // 'author', 'homepage', 'specialization', 'prefixes' settings are not saved by SharedPrefsStorage |
| + } |
| + |
| + @Test |
| + public void testSubscriptions_OneValueNonEnglishUrl() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<Subscription> subscriptions = new LinkedList<Subscription>(); |
| + final Subscription savedSubscription = new Subscription(); |
| + savedSubscription.title = "Title"; |
| + savedSubscription.url = "http://почта.рф"; // non-English characters |
| + subscriptions.add(savedSubscription); |
| + |
| + savedSettings.setSubscriptions(subscriptions); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getSubscriptions()); |
| + assertEquals(1, loadedSettings.getSubscriptions().size()); |
| + |
| + final Subscription loadedSubscription = loadedSettings.getSubscriptions().get(0); |
| + assertEquals(savedSubscription.title, loadedSubscription.title); |
| + assertEquals(savedSubscription.url, loadedSubscription.url); |
| + |
| + // 'author', 'homepage', 'specialization', 'prefixes' settings are not saved by SharedPrefsStorage |
| + } |
| + |
| + @Test |
| + public void testSubscriptions_MultipleValues() |
| + { |
| + AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<Subscription> subscriptions = new LinkedList<Subscription>(); |
| + final Subscription savedSubscription1 = new Subscription(); |
| + savedSubscription1.title = "Title1"; |
| + savedSubscription1.url = "URL1"; |
| + subscriptions.add(savedSubscription1); |
| + |
| + final Subscription savedSubscription2 = new Subscription(); |
| + savedSubscription2.title = "Title2"; |
| + savedSubscription2.url = "URL2"; |
| + subscriptions.add(savedSubscription2); |
| + |
| + savedSettings.setSubscriptions(subscriptions); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getSubscriptions()); |
| + assertEquals(2, loadedSettings.getSubscriptions().size()); |
| + |
| + final Subscription loadedSubscription1 = loadedSettings.getSubscriptions().get(0); |
| + assertEquals(savedSubscription1.title, loadedSubscription1.title); |
| + assertEquals(savedSubscription1.url, loadedSubscription1.url); |
| + |
| + final Subscription loadedSubscription2 = loadedSettings.getSubscriptions().get(1); |
| + assertEquals(savedSubscription2.title, loadedSubscription2.title); |
| + assertEquals(savedSubscription2.url, loadedSubscription2.url); |
| + } |
| + |
| + @Test |
| + public void testWhitelistedDomains_Null() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + assertNull(savedSettings.getWhitelistedDomains()); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNull(loadedSettings.getWhitelistedDomains()); |
| + } |
| + |
| + @Test |
| + public void testWhitelistedDomains_Empty() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + savedSettings.setWhitelistedDomains(Collections.<String>emptyList()); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getWhitelistedDomains()); |
| + assertEquals(0, loadedSettings.getWhitelistedDomains().size()); |
| + } |
| + |
| + @Test |
| + public void testWhitelistedDomains_SingleValue() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<String> whitelistedDomains = new LinkedList<String>(); |
| + whitelistedDomains.add("http://www.domain1.com"); |
| + |
| + savedSettings.setWhitelistedDomains(whitelistedDomains); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getWhitelistedDomains()); |
| + assertEquals(1, loadedSettings.getWhitelistedDomains().size()); |
| + |
| + assertEquals( |
| + savedSettings.getWhitelistedDomains().get(0), |
| + loadedSettings.getWhitelistedDomains().get(0)); |
| + } |
| + |
| + @Test |
| + public void testWhitelistedDomains_SingleValueNonEnglish() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<String> whitelistedDomains = new LinkedList<String>(); |
| + whitelistedDomains.add("http://почта.рф"); |
| + |
| + savedSettings.setWhitelistedDomains(whitelistedDomains); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getWhitelistedDomains()); |
| + assertEquals(1, loadedSettings.getWhitelistedDomains().size()); |
| + |
| + assertEquals( |
| + savedSettings.getWhitelistedDomains().get(0), |
| + loadedSettings.getWhitelistedDomains().get(0)); |
| + } |
| + |
| + @Test |
| + public void testWhitelistedDomains_MultipleValues() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAdblockEnabled(true); |
| + |
| + final List<String> whitelistedDomains = new LinkedList<String>(); |
| + whitelistedDomains.add("http://www.domain1.com"); |
| + whitelistedDomains.add("http://www.domain2.com"); |
| + |
| + savedSettings.setWhitelistedDomains(whitelistedDomains); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNotNull(loadedSettings.getWhitelistedDomains()); |
| + assertEquals(2, loadedSettings.getWhitelistedDomains().size()); |
| + |
| + assertEquals( |
| + savedSettings.getWhitelistedDomains().get(0), |
| + loadedSettings.getWhitelistedDomains().get(0)); |
| + |
| + assertEquals( |
| + savedSettings.getWhitelistedDomains().get(1), |
| + loadedSettings.getWhitelistedDomains().get(1)); |
| + } |
| + |
| + @Test |
| + public void testAllowedConnectionType_Null() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + savedSettings.setAllowedConnectionType(null); |
| + assertNull(savedSettings.getAllowedConnectionType()); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertNull(loadedSettings.getAllowedConnectionType()); |
| + } |
| + |
| + @Test |
| + public void testAllowedConnectionType() |
| + { |
| + final AdblockSettings savedSettings = new AdblockSettings(); |
| + |
| + for (ConnectionType eachConnectionType : ConnectionType.values()) |
| + { |
| + savedSettings.setAllowedConnectionType(eachConnectionType); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + assertEquals(savedSettings.getAllowedConnectionType(), loadedSettings.getAllowedConnectionType()); |
| + } |
| + } |
| + |
| + @Test |
| + public void testFullModel() |
| + { |
| + final AdblockSettings savedSettings = AdblockSettingsTest.buildModel(2, 1); |
| + storage.save(savedSettings); |
| + |
| + final AdblockSettings loadedSettings = storage.load(); |
| + |
| + AdblockSettingsTest.assertSettingsEquals(savedSettings, loadedSettings); |
| + } |
| + |
| + @Override |
| + protected void tearDown() throws Exception |
| + { |
| + prefs.edit().clear().commit(); |
| + super.tearDown(); |
| + } |
| +} |