Home | History | Annotate | Download | only in shadows
      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 
     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 
     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 
     36     public void __constructor__(Context pkg, Class<?> cls) {
     37         this.pkg = pkg.getPackageName();
     38         this.cls = cls.getName();
     39     }
     40 
     41     @Implementation
     42     public String getPackageName() {
     43         return pkg;
     44     }
     45 
     46     @Implementation
     47     public String getClassName() {
     48         return cls;
     49     }
     50 
     51     @Implementation
     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
     62     public void writeToParcel(Parcel out, int flags) {
     63         out.writeInt(1);
     64         out.writeString(pkg);
     65         out.writeString(cls);
     66     }
     67 
     68     @Implementation
     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
     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
     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
    101     public String toString() {
    102         return "ComponentName{" +
    103                 "pkg='" + pkg + '\'' +
    104                 ", cls='" + cls + '\'' +
    105                 '}';
    106     }
    107 }
    108