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