| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|  | 3  * Copyright (C) 2006-2017 Eyeo GmbH | 
|  | 4  * | 
|  | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|  | 6  * it under the terms of the GNU General Public License version 3 as | 
|  | 7  * published by the Free Software Foundation. | 
|  | 8  * | 
|  | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
|  | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 12  * GNU General Public License for more details. | 
|  | 13  * | 
|  | 14  * You should have received a copy of the GNU General Public License | 
|  | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|  | 16  */ | 
|  | 17 | 
|  | 18 package org.adblockplus.libadblockplus.tests; | 
|  | 19 | 
|  | 20 import android.content.Context; | 
|  | 21 import android.content.SharedPreferences; | 
|  | 22 import android.test.AndroidTestCase; | 
|  | 23 | 
|  | 24 import org.adblockplus.libadblockplus.android.Subscription; | 
|  | 25 import org.adblockplus.libadblockplus.android.settings.AdblockSettings; | 
|  | 26 import org.adblockplus.libadblockplus.android.settings.ConnectionType; | 
|  | 27 import org.adblockplus.libadblockplus.android.settings.SharedPrefsStorage; | 
|  | 28 import org.junit.Test; | 
|  | 29 | 
|  | 30 import java.util.Collections; | 
|  | 31 import java.util.LinkedList; | 
|  | 32 import java.util.List; | 
|  | 33 | 
|  | 34 public class SharedPrefsStorageTest extends AndroidTestCase | 
|  | 35 { | 
|  | 36   protected static final String NAME = "prefs"; | 
|  | 37 | 
|  | 38   protected SharedPreferences prefs; | 
|  | 39   protected SharedPrefsStorage storage; | 
|  | 40 | 
|  | 41   @Override | 
|  | 42   protected void setUp() throws Exception | 
|  | 43   { | 
|  | 44     super.setUp(); | 
|  | 45 | 
|  | 46     prefs = getContext().getSharedPreferences(NAME, Context.MODE_PRIVATE); | 
|  | 47     prefs.edit().clear().commit(); | 
|  | 48 | 
|  | 49     storage = new SharedPrefsStorage(prefs); | 
|  | 50     storage.setCommit(true); | 
|  | 51   } | 
|  | 52 | 
|  | 53   @Test | 
|  | 54   public void testNeverSaved() | 
|  | 55   { | 
|  | 56     final AdblockSettings settings = storage.load(); | 
|  | 57     assertNull(settings); | 
|  | 58   } | 
|  | 59 | 
|  | 60   protected void _testAdblockEnabled() | 
|  | 61   { | 
|  | 62     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 63     savedSettings.setAdblockEnabled(true); | 
|  | 64     storage.save(savedSettings); | 
|  | 65 | 
|  | 66     AdblockSettings loadedSettings = storage.load(); | 
|  | 67     assertEquals(savedSettings.isAdblockEnabled(), loadedSettings.isAdblockEnabl
     ed()); | 
|  | 68 | 
|  | 69     savedSettings.setAdblockEnabled(false); | 
|  | 70     storage.save(savedSettings); | 
|  | 71 | 
|  | 72     loadedSettings = storage.load(); | 
|  | 73     assertEquals(savedSettings.isAdblockEnabled(), loadedSettings.isAdblockEnabl
     ed()); | 
|  | 74   } | 
|  | 75 | 
|  | 76   @Test | 
|  | 77   public void testAdblockEnabled() | 
|  | 78   { | 
|  | 79     storage.setCommit(true); | 
|  | 80     _testAdblockEnabled(); | 
|  | 81   } | 
|  | 82 | 
|  | 83   @Test | 
|  | 84   public void testAdblockEnabled_Apply() | 
|  | 85   { | 
|  | 86     storage.setCommit(false); // commit is sync (for `true`), apply is async (fo
     r `false`) | 
|  | 87     _testAdblockEnabled(); | 
|  | 88   } | 
|  | 89 | 
|  | 90   @Test | 
|  | 91   public void testAcceptableAdsEnabled() | 
|  | 92   { | 
|  | 93     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 94     savedSettings.setAcceptableAdsEnabled(true); | 
|  | 95     storage.save(savedSettings); | 
|  | 96 | 
|  | 97     AdblockSettings loadedSettings = storage.load(); | 
|  | 98     assertEquals(savedSettings.isAcceptableAdsEnabled(), loadedSettings.isAccept
     ableAdsEnabled()); | 
|  | 99 | 
|  | 100     savedSettings.setAcceptableAdsEnabled(false); | 
|  | 101     storage.save(savedSettings); | 
|  | 102 | 
|  | 103     loadedSettings = storage.load(); | 
|  | 104     assertEquals(savedSettings.isAcceptableAdsEnabled(), loadedSettings.isAccept
     ableAdsEnabled()); | 
|  | 105   } | 
|  | 106 | 
|  | 107   @Test | 
|  | 108   public void testSubscriptions_Null() | 
|  | 109   { | 
|  | 110     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 111     savedSettings.setAdblockEnabled(true); | 
|  | 112     assertNull(savedSettings.getSubscriptions()); | 
|  | 113     storage.save(savedSettings); | 
|  | 114 | 
|  | 115     final AdblockSettings loadedSettings = storage.load(); | 
|  | 116     assertNull(loadedSettings.getSubscriptions()); | 
|  | 117   } | 
|  | 118 | 
|  | 119   @Test | 
|  | 120   public void testSubscriptions_Empty() | 
|  | 121   { | 
|  | 122     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 123     savedSettings.setAdblockEnabled(true); | 
|  | 124     savedSettings.setSubscriptions(Collections.<Subscription>emptyList()); | 
|  | 125     storage.save(savedSettings); | 
|  | 126 | 
|  | 127     final AdblockSettings loadedSettings = storage.load(); | 
|  | 128     assertNotNull(loadedSettings.getSubscriptions()); | 
|  | 129     assertEquals(0, loadedSettings.getSubscriptions().size()); | 
|  | 130   } | 
|  | 131 | 
|  | 132   @Test | 
|  | 133   public void testSubscriptions_OneValue() | 
|  | 134   { | 
|  | 135     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 136     savedSettings.setAdblockEnabled(true); | 
|  | 137 | 
|  | 138     final List<Subscription> subscriptions = new LinkedList<Subscription>(); | 
|  | 139     final Subscription savedSubscription = new Subscription(); | 
|  | 140     savedSubscription.title = "Title"; | 
|  | 141     savedSubscription.url = "URL"; | 
|  | 142     subscriptions.add(savedSubscription); | 
|  | 143 | 
|  | 144     savedSettings.setSubscriptions(subscriptions); | 
|  | 145     storage.save(savedSettings); | 
|  | 146 | 
|  | 147     final AdblockSettings loadedSettings = storage.load(); | 
|  | 148     assertNotNull(loadedSettings.getSubscriptions()); | 
|  | 149     assertEquals(1, loadedSettings.getSubscriptions().size()); | 
|  | 150 | 
|  | 151     final Subscription loadedSubscription = loadedSettings.getSubscriptions().ge
     t(0); | 
|  | 152     assertEquals(savedSubscription.title, loadedSubscription.title); | 
|  | 153     assertEquals(savedSubscription.url, loadedSubscription.url); | 
|  | 154 | 
|  | 155     // 'author', 'homepage', 'specialization', 'prefixes' settings are not saved
      by SharedPrefsStorage | 
|  | 156   } | 
|  | 157 | 
|  | 158   @Test | 
|  | 159   public void testSubscriptions_OneValueNonEnglishTitle() | 
|  | 160   { | 
|  | 161     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 162     savedSettings.setAdblockEnabled(true); | 
|  | 163 | 
|  | 164     final List<Subscription> subscriptions = new LinkedList<Subscription>(); | 
|  | 165     final Subscription savedSubscription = new Subscription(); | 
|  | 166     savedSubscription.title = "Заголовок"; // non-English characters | 
|  | 167     savedSubscription.url = "URL"; | 
|  | 168     subscriptions.add(savedSubscription); | 
|  | 169 | 
|  | 170     savedSettings.setSubscriptions(subscriptions); | 
|  | 171     storage.save(savedSettings); | 
|  | 172 | 
|  | 173     final AdblockSettings loadedSettings = storage.load(); | 
|  | 174     assertNotNull(loadedSettings.getSubscriptions()); | 
|  | 175     assertEquals(1, loadedSettings.getSubscriptions().size()); | 
|  | 176 | 
|  | 177     final Subscription loadedSubscription = loadedSettings.getSubscriptions().ge
     t(0); | 
|  | 178     assertEquals(savedSubscription.title, loadedSubscription.title); | 
|  | 179     assertEquals(savedSubscription.url, loadedSubscription.url); | 
|  | 180 | 
|  | 181     // 'author', 'homepage', 'specialization', 'prefixes' settings are not saved
      by SharedPrefsStorage | 
|  | 182   } | 
|  | 183 | 
|  | 184   @Test | 
|  | 185   public void testSubscriptions_OneValueNonEnglishUrl() | 
|  | 186   { | 
|  | 187     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 188     savedSettings.setAdblockEnabled(true); | 
|  | 189 | 
|  | 190     final List<Subscription> subscriptions = new LinkedList<Subscription>(); | 
|  | 191     final Subscription savedSubscription = new Subscription(); | 
|  | 192     savedSubscription.title = "Title"; | 
|  | 193     savedSubscription.url = "http://почта.рф";  // non-English characters | 
|  | 194     subscriptions.add(savedSubscription); | 
|  | 195 | 
|  | 196     savedSettings.setSubscriptions(subscriptions); | 
|  | 197     storage.save(savedSettings); | 
|  | 198 | 
|  | 199     final AdblockSettings loadedSettings = storage.load(); | 
|  | 200     assertNotNull(loadedSettings.getSubscriptions()); | 
|  | 201     assertEquals(1, loadedSettings.getSubscriptions().size()); | 
|  | 202 | 
|  | 203     final Subscription loadedSubscription = loadedSettings.getSubscriptions().ge
     t(0); | 
|  | 204     assertEquals(savedSubscription.title, loadedSubscription.title); | 
|  | 205     assertEquals(savedSubscription.url, loadedSubscription.url); | 
|  | 206 | 
|  | 207     // 'author', 'homepage', 'specialization', 'prefixes' settings are not saved
      by SharedPrefsStorage | 
|  | 208   } | 
|  | 209 | 
|  | 210   @Test | 
|  | 211   public void testSubscriptions_MultipleValues() | 
|  | 212   { | 
|  | 213     AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 214     savedSettings.setAdblockEnabled(true); | 
|  | 215 | 
|  | 216     final List<Subscription> subscriptions = new LinkedList<Subscription>(); | 
|  | 217     final Subscription savedSubscription1 = new Subscription(); | 
|  | 218     savedSubscription1.title = "Title1"; | 
|  | 219     savedSubscription1.url = "URL1"; | 
|  | 220     subscriptions.add(savedSubscription1); | 
|  | 221 | 
|  | 222     final Subscription savedSubscription2 = new Subscription(); | 
|  | 223     savedSubscription2.title = "Title2"; | 
|  | 224     savedSubscription2.url = "URL2"; | 
|  | 225     subscriptions.add(savedSubscription2); | 
|  | 226 | 
|  | 227     savedSettings.setSubscriptions(subscriptions); | 
|  | 228     storage.save(savedSettings); | 
|  | 229 | 
|  | 230     final AdblockSettings loadedSettings = storage.load(); | 
|  | 231     assertNotNull(loadedSettings.getSubscriptions()); | 
|  | 232     assertEquals(2, loadedSettings.getSubscriptions().size()); | 
|  | 233 | 
|  | 234     final Subscription loadedSubscription1 = loadedSettings.getSubscriptions().g
     et(0); | 
|  | 235     assertEquals(savedSubscription1.title, loadedSubscription1.title); | 
|  | 236     assertEquals(savedSubscription1.url, loadedSubscription1.url); | 
|  | 237 | 
|  | 238     final Subscription loadedSubscription2 = loadedSettings.getSubscriptions().g
     et(1); | 
|  | 239     assertEquals(savedSubscription2.title, loadedSubscription2.title); | 
|  | 240     assertEquals(savedSubscription2.url, loadedSubscription2.url); | 
|  | 241   } | 
|  | 242 | 
|  | 243   @Test | 
|  | 244   public void testWhitelistedDomains_Null() | 
|  | 245   { | 
|  | 246     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 247     savedSettings.setAdblockEnabled(true); | 
|  | 248     assertNull(savedSettings.getWhitelistedDomains()); | 
|  | 249     storage.save(savedSettings); | 
|  | 250 | 
|  | 251     final AdblockSettings loadedSettings = storage.load(); | 
|  | 252     assertNull(loadedSettings.getWhitelistedDomains()); | 
|  | 253   } | 
|  | 254 | 
|  | 255   @Test | 
|  | 256   public void testWhitelistedDomains_Empty() | 
|  | 257   { | 
|  | 258     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 259     savedSettings.setAdblockEnabled(true); | 
|  | 260     savedSettings.setWhitelistedDomains(Collections.<String>emptyList()); | 
|  | 261     storage.save(savedSettings); | 
|  | 262 | 
|  | 263     final AdblockSettings loadedSettings = storage.load(); | 
|  | 264     assertNotNull(loadedSettings.getWhitelistedDomains()); | 
|  | 265     assertEquals(0, loadedSettings.getWhitelistedDomains().size()); | 
|  | 266   } | 
|  | 267 | 
|  | 268   @Test | 
|  | 269   public void testWhitelistedDomains_SingleValue() | 
|  | 270   { | 
|  | 271     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 272     savedSettings.setAdblockEnabled(true); | 
|  | 273 | 
|  | 274     final List<String> whitelistedDomains = new LinkedList<String>(); | 
|  | 275     whitelistedDomains.add("http://www.domain1.com"); | 
|  | 276 | 
|  | 277     savedSettings.setWhitelistedDomains(whitelistedDomains); | 
|  | 278     storage.save(savedSettings); | 
|  | 279 | 
|  | 280     final AdblockSettings loadedSettings = storage.load(); | 
|  | 281     assertNotNull(loadedSettings.getWhitelistedDomains()); | 
|  | 282     assertEquals(1, loadedSettings.getWhitelistedDomains().size()); | 
|  | 283 | 
|  | 284     assertEquals( | 
|  | 285       savedSettings.getWhitelistedDomains().get(0), | 
|  | 286       loadedSettings.getWhitelistedDomains().get(0)); | 
|  | 287   } | 
|  | 288 | 
|  | 289   @Test | 
|  | 290   public void testWhitelistedDomains_SingleValueNonEnglish() | 
|  | 291   { | 
|  | 292     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 293     savedSettings.setAdblockEnabled(true); | 
|  | 294 | 
|  | 295     final List<String> whitelistedDomains = new LinkedList<String>(); | 
|  | 296     whitelistedDomains.add("http://почта.рф"); | 
|  | 297 | 
|  | 298     savedSettings.setWhitelistedDomains(whitelistedDomains); | 
|  | 299     storage.save(savedSettings); | 
|  | 300 | 
|  | 301     final AdblockSettings loadedSettings = storage.load(); | 
|  | 302     assertNotNull(loadedSettings.getWhitelistedDomains()); | 
|  | 303     assertEquals(1, loadedSettings.getWhitelistedDomains().size()); | 
|  | 304 | 
|  | 305     assertEquals( | 
|  | 306       savedSettings.getWhitelistedDomains().get(0), | 
|  | 307       loadedSettings.getWhitelistedDomains().get(0)); | 
|  | 308   } | 
|  | 309 | 
|  | 310   @Test | 
|  | 311   public void testWhitelistedDomains_MultipleValues() | 
|  | 312   { | 
|  | 313     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 314     savedSettings.setAdblockEnabled(true); | 
|  | 315 | 
|  | 316     final List<String> whitelistedDomains = new LinkedList<String>(); | 
|  | 317     whitelistedDomains.add("http://www.domain1.com"); | 
|  | 318     whitelistedDomains.add("http://www.domain2.com"); | 
|  | 319 | 
|  | 320     savedSettings.setWhitelistedDomains(whitelistedDomains); | 
|  | 321     storage.save(savedSettings); | 
|  | 322 | 
|  | 323     final AdblockSettings loadedSettings = storage.load(); | 
|  | 324     assertNotNull(loadedSettings.getWhitelistedDomains()); | 
|  | 325     assertEquals(2, loadedSettings.getWhitelistedDomains().size()); | 
|  | 326 | 
|  | 327     assertEquals( | 
|  | 328       savedSettings.getWhitelistedDomains().get(0), | 
|  | 329       loadedSettings.getWhitelistedDomains().get(0)); | 
|  | 330 | 
|  | 331     assertEquals( | 
|  | 332       savedSettings.getWhitelistedDomains().get(1), | 
|  | 333       loadedSettings.getWhitelistedDomains().get(1)); | 
|  | 334   } | 
|  | 335 | 
|  | 336   @Test | 
|  | 337   public void testAllowedConnectionType_Null() | 
|  | 338   { | 
|  | 339     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 340     savedSettings.setAllowedConnectionType(null); | 
|  | 341     assertNull(savedSettings.getAllowedConnectionType()); | 
|  | 342     storage.save(savedSettings); | 
|  | 343 | 
|  | 344     final AdblockSettings loadedSettings = storage.load(); | 
|  | 345     assertNull(loadedSettings.getAllowedConnectionType()); | 
|  | 346   } | 
|  | 347 | 
|  | 348   @Test | 
|  | 349   public void testAllowedConnectionType() | 
|  | 350   { | 
|  | 351     final AdblockSettings savedSettings = new AdblockSettings(); | 
|  | 352 | 
|  | 353     for (ConnectionType eachConnectionType : ConnectionType.values()) | 
|  | 354     { | 
|  | 355       savedSettings.setAllowedConnectionType(eachConnectionType); | 
|  | 356       storage.save(savedSettings); | 
|  | 357 | 
|  | 358       final AdblockSettings loadedSettings = storage.load(); | 
|  | 359       assertEquals(savedSettings.getAllowedConnectionType(), loadedSettings.getA
     llowedConnectionType()); | 
|  | 360     } | 
|  | 361   } | 
|  | 362 | 
|  | 363   @Test | 
|  | 364   public void testFullModel() | 
|  | 365   { | 
|  | 366     final AdblockSettings savedSettings = AdblockSettingsTest.buildModel(2, 1); | 
|  | 367     storage.save(savedSettings); | 
|  | 368 | 
|  | 369     final AdblockSettings loadedSettings = storage.load(); | 
|  | 370 | 
|  | 371     AdblockSettingsTest.assertSettingsEquals(savedSettings, loadedSettings); | 
|  | 372   } | 
|  | 373 | 
|  | 374   @Override | 
|  | 375   protected void tearDown() throws Exception | 
|  | 376   { | 
|  | 377     prefs.edit().clear().commit(); | 
|  | 378     super.tearDown(); | 
|  | 379   } | 
|  | 380 } | 
| OLD | NEW | 
|---|