Home | History | Annotate | Download | only in shadows
      1 package com.xtremelabs.robolectric.shadows;
      2 
      3 import android.graphics.Point;
      4 import com.xtremelabs.robolectric.internal.Implementation;
      5 import com.xtremelabs.robolectric.internal.Implements;
      6 import com.xtremelabs.robolectric.internal.RealObject;
      7 
      8 import static com.xtremelabs.robolectric.Robolectric.shadowOf_;
      9 
     10 /**
     11  * Shadow implementation of {@code Point}
     12  */
     13 @Implements(Point.class)
     14 public class ShadowPoint {
     15     @RealObject private Point realPoint;
     16 
     17     public void __constructor__(int x, int y) {
     18         realPoint.x = x;
     19         realPoint.y = y;
     20     }
     21 
     22     public void __constructor__(Point src) {
     23         realPoint.x = src.x;
     24         realPoint.y = src.y;
     25     }
     26 
     27     @Implementation
     28     public void set(int x, int y) {
     29         realPoint.x = x;
     30         realPoint.y = y;
     31     }
     32 
     33     @Implementation
     34     public final void negate() {
     35         realPoint.x = -realPoint.x;
     36         realPoint.y = -realPoint.y;
     37     }
     38 
     39     @Implementation
     40     public final void offset(int dx, int dy) {
     41         realPoint.x += dx;
     42         realPoint.y += dy;
     43     }
     44 
     45     @Override @Implementation
     46     public boolean equals(Object object) {
     47         if (object == null) return false;
     48         Object o = shadowOf_(object);
     49         if (o == null) return false;
     50         if (this == o) return true;
     51         if (getClass() != o.getClass()) return false;
     52 
     53         ShadowPoint that = (ShadowPoint) o;
     54         if (this.realPoint.x == that.realPoint.x && this.realPoint.y == that.realPoint.y) return true;
     55 
     56         return false;
     57     }
     58 
     59     @Override @Implementation
     60     public int hashCode() {
     61         return realPoint.x * 32713 + realPoint.y;
     62     }
     63 
     64     @Override @Implementation
     65     public String toString() {
     66         return "Point(" + realPoint.x + ", " + realPoint.y + ")";
     67     }
     68 
     69     /**
     70      * Non-Android utility method for comparing a point to a well-known value
     71      *
     72      * @param x x
     73      * @param y y
     74      * @return this.x == x && this.y == y
     75      */
     76     @Implementation
     77     public final boolean equals(int x, int y) {
     78         return realPoint.x == x && realPoint.y == y;
     79     }
     80 }
     81