• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.xtremelabs.robolectric.shadows;
2 
3 import android.content.ComponentName;
4 import android.content.Context;
5 import android.os.Parcel;
6 
7 import com.xtremelabs.robolectric.internal.Implementation;
8 import com.xtremelabs.robolectric.internal.Implements;
9 
10 import static com.xtremelabs.robolectric.Robolectric.shadowOf_;
11 
12 /**
13  * Shadows the {@code android.content.ComponentName} class.
14  * <p/>
15  * Just keeps track of the package and class names, and then gives them back when you ask for them.
16  */
17 @SuppressWarnings({"UnusedDeclaration"})
18 @Implements(ComponentName.class)
19 public class ShadowComponentName {
20     private String pkg;
21     private String cls;
22 
__constructor__(String pkg, String cls)23     public void __constructor__(String pkg, String cls) {
24         if (pkg == null) throw new NullPointerException("package name is null");
25         if (cls == null) throw new NullPointerException("class name is null");
26         this.pkg = pkg;
27         this.cls = cls;
28     }
29 
__constructor__(Context pkg, String cls)30     public void __constructor__(Context pkg, String cls) {
31         if (cls == null) throw new NullPointerException("class name is null");
32         this.pkg = pkg.getPackageName();
33         this.cls = cls;
34     }
35 
__constructor__(Context pkg, Class<?> cls)36     public void __constructor__(Context pkg, Class<?> cls) {
37         this.pkg = pkg.getPackageName();
38         this.cls = cls.getName();
39     }
40 
41     @Implementation
getPackageName()42     public String getPackageName() {
43         return pkg;
44     }
45 
46     @Implementation
getClassName()47     public String getClassName() {
48         return cls;
49     }
50 
51     @Implementation
readFromParcel(Parcel in)52     public static ComponentName readFromParcel(Parcel in) {
53         if (in.readInt() == 0) {
54             return null;
55         }
56         String pkg = in.readString();
57         String cls = in.readString();
58         return new ComponentName(pkg, cls);
59     }
60 
61     @Implementation
writeToParcel(Parcel out, int flags)62     public void writeToParcel(Parcel out, int flags) {
63         out.writeInt(1);
64         out.writeString(pkg);
65         out.writeString(cls);
66     }
67 
68     @Implementation
writeToParcel(ComponentName c, Parcel out)69     public static void writeToParcel(ComponentName c, Parcel out) {
70         if (c == null) {
71             out.writeInt(0);
72         } else {
73             c.writeToParcel(out, 0);
74         }
75     }
76 
77     @Override @Implementation
equals(Object o)78     public boolean equals(Object o) {
79         if (o == null) return false;
80         o = shadowOf_(o);
81         if (o == null) return false;
82         if (this == o) return true;
83         if (getClass() != o.getClass()) return false;
84 
85         ShadowComponentName that = (ShadowComponentName) o;
86 
87         if (cls != null ? !cls.equals(that.cls) : that.cls != null) return false;
88         if (pkg != null ? !pkg.equals(that.pkg) : that.pkg != null) return false;
89 
90         return true;
91     }
92 
93     @Override @Implementation
hashCode()94     public int hashCode() {
95         int result = pkg != null ? pkg.hashCode() : 0;
96         result = 31 * result + (cls != null ? cls.hashCode() : 0);
97         return result;
98     }
99 
100     @Override @Implementation
toString()101     public String toString() {
102         return "ComponentName{" +
103                 "pkg='" + pkg + '\'' +
104                 ", cls='" + cls + '\'' +
105                 '}';
106     }
107 }
108