ShadowParcel.java revision 1ab27d4c44e132753f0484e826b98bbcac97d3e5
1package com.xtremelabs.robolectric.shadows;
2
3import android.os.Parcel;
4import android.os.Parcelable;
5import com.xtremelabs.robolectric.Robolectric;
6import com.xtremelabs.robolectric.internal.Implementation;
7import com.xtremelabs.robolectric.internal.Implements;
8
9import java.util.ArrayList;
10import java.util.List;
11
12@Implements(Parcel.class)
13@SuppressWarnings("unchecked")
14public class ShadowParcel {
15    private ArrayList parcelData = new ArrayList();
16    private int index = 0;
17
18    @Implementation
19    public static Parcel obtain() {
20        return Robolectric.newInstanceOf(Parcel.class);
21    }
22
23    @Implementation
24    public void writeString(String str) {
25        if (str == null) {
26            return;
27        }
28        parcelData.add(str);
29    }
30
31    @Implementation
32    public void writeInt(int i) {
33        parcelData.add(i);
34    }
35
36    @Implementation
37    public void writeLong(long i) {
38        parcelData.add(i);
39    }
40
41    @Implementation
42    @SuppressWarnings("unchecked")
43    public void writeByte( byte b ) {
44    	parcelData.add( b );
45    }
46
47    @Implementation
48    public String readString() {
49        return index < parcelData.size() ? (String) parcelData.get(index++) : null;
50    }
51
52    @Implementation
53    public int readInt() {
54        return index < parcelData.size() ? (Integer) parcelData.get(index++) : 0;
55    }
56
57    @Implementation
58    public byte readByte() {
59        return index < parcelData.size() ? (Byte) parcelData.get(index++) : 0;
60    }
61
62    @Implementation
63    public long readLong() {
64        return index < parcelData.size() ? (Long) parcelData.get(index++) : 0;
65    }
66
67    @Implementation
68    public void writeParcelable(Parcelable p, int flags) {
69        parcelData.add(p);
70    }
71
72    @Implementation
73    public Parcelable readParcelable(ClassLoader cl) {
74        return index < parcelData.size() ? (Parcelable) parcelData.get(index++) : null;
75    }
76
77    public int getIndex() {
78        return index;
79    }
80
81    public List getParcelData() {
82        return parcelData;
83    }
84}
85