Yuvipanda has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/95087


Change subject: Add tests for ParcelableLruCache
......................................................................

Add tests for ParcelableLruCache

Also made the ParcelableLruCache more robust, fixing some crashes
found by failing tests.

Change-Id: Iec85060e184614658eed53e112f58fca919489b9
---
M wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/ParcelableTest.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/ParcelableLruCache.java
2 files changed, 25 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/87/95087/1

diff --git 
a/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/ParcelableTest.java 
b/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/ParcelableTest.java
index 80b6cfd..38f0279 100644
--- 
a/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/ParcelableTest.java
+++ 
b/wikipedia-it/src/main/java/org/wikimedia/wikipedia/test/ParcelableTest.java
@@ -3,12 +3,10 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import junit.framework.TestCase;
-import org.wikimedia.wikipedia.Page;
-import org.wikimedia.wikipedia.PageTitle;
-import org.wikimedia.wikipedia.Section;
-import org.wikimedia.wikipedia.Site;
+import org.wikimedia.wikipedia.*;
 
 import java.util.ArrayList;
+import java.util.List;
 
 public class ParcelableTest extends TestCase {
     private void parcelAndTestObjects(Parcelable p) throws Exception {
@@ -52,4 +50,21 @@
         parcelAndTestObjects(page);
     }
 
+    public void testLruCache() throws Exception {
+        ParcelableLruCache<Site> oldCache = new ParcelableLruCache<Site>(2, 
Site.class);
+        oldCache.put("english", new Site("en.wikipedia.org"));
+        oldCache.put("tamil", new Site("ta.wikipedia.org"));
+
+        Parcel parcel = Parcel.obtain();
+        oldCache.writeToParcel(parcel, 0);
+
+        parcel.setDataPosition(0);
+        Parcelable.Creator creator = (Parcelable.Creator) 
oldCache.getClass().getField("CREATOR").get(null);
+        ParcelableLruCache<Site> newCache = (ParcelableLruCache<Site>) 
creator.createFromParcel(parcel);
+
+        assertEquals(newCache.maxSize(), oldCache.maxSize());
+        assertEquals(newCache.size(), oldCache.size());
+        assertEquals(newCache.get("english"), oldCache.get("english"));
+        assertEquals(newCache.get("tamil"), oldCache.get("tamil"));
+    }
 }
diff --git 
a/wikipedia/src/main/java/org/wikimedia/wikipedia/ParcelableLruCache.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/ParcelableLruCache.java
index fc9449c..ec31b52 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/ParcelableLruCache.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/ParcelableLruCache.java
@@ -32,9 +32,14 @@
         super(in.readInt());
         isList = in.readInt() != 0;
         Bundle contents = in.readBundle();
+        contents.setClassLoader(getClass().getClassLoader());
         Set<String> keys = contents.keySet();
         for (String key : keys) {
-            put(key, (V) contents.get(key));
+            if (isList) {
+                put(key, (V) contents.getParcelableArrayList(key));
+            } else {
+                put(key, (V) contents.getParcelable(key));
+            }
         }
     }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/95087
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iec85060e184614658eed53e112f58fca919489b9
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to