ShadowParcel.java revision 6ca1c54a32a83fcc3e347c141a0fc3ba653193b3
1cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampackage com.xtremelabs.robolectric.shadows;
2cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham
3cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport android.os.Parcel;
46ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkelimport android.os.Parcelable;
5cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.Robolectric;
6cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implementation;
7cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implements;
8cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham
9e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.ArrayList;
10e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.List;
11e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
12cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham@Implements(Parcel.class)
136ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel@SuppressWarnings("unchecked")
14cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampublic class ShadowParcel {
157598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    private ArrayList parcelData = new ArrayList();
167598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    private int index = 0;
177598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
187598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
197598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public static Parcel obtain() {
207598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return Robolectric.newInstanceOf(Parcel.class);
217598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
227598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
237598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
247598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public void writeString(String str) {
257598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        if (str == null) {
267598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz            return;
277598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        }
287598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        parcelData.add(str);
297598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
307598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
317598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
327598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public void writeInt(int i) {
337598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        parcelData.add(i);
347598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
357598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
367598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
37e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    public void writeLong(long i) {
38e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson        parcelData.add(i);
39e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    }
40e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
41e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    @Implementation
427598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public String readString() {
437598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index < parcelData.size() ? (String) parcelData.get(index++) : null;
447598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
457598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
467598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
477598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int readInt() {
487598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index < parcelData.size() ? (Integer) parcelData.get(index++) : 0;
497598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
507598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
51e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    @Implementation
52e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    public long readLong() {
53e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson        return index < parcelData.size() ? (Long) parcelData.get(index++) : 0;
54e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    }
55e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
566ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    @Implementation
576ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    public void writeParcelable(Parcelable p, int flags) {
586ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel        parcelData.add(p);
596ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    }
606ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel
616ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    @Implementation
626ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    public Parcelable readParcelable(ClassLoader cl) {
636ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel        return index < parcelData.size() ? (Parcelable) parcelData.get(index++) : null;
646ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    }
656ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel
667598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int getIndex() {
677598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index;
687598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
697598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
707598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public List getParcelData() {
717598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return parcelData;
727598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
73cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham}
74