Home | History | Annotate | Download | only in shadows
      1 package com.xtremelabs.robolectric.shadows;
      2 
      3 import com.xtremelabs.robolectric.internal.Implementation;
      4 import com.xtremelabs.robolectric.internal.Implements;
      5 
      6 import android.view.View;
      7 
      8 /**
      9  * Shadow for {@code View.MeasureSpec} inner class.
     10  *
     11  * As the implementation is very simple, it is taken from the AOSP source.
     12  */
     13 @Implements(View.MeasureSpec.class)
     14 public class ShadowViewMeasureSpec {
     15 
     16 	private static final int MODE_SHIFT = 30;
     17     private static final int MODE_MASK = 0x3 << MODE_SHIFT;
     18 
     19 	@Implementation
     20 	public static int getMode (int measureSpec) {
     21 		return (measureSpec & MODE_MASK);
     22 	}
     23 
     24 	@Implementation
     25 	public static int getSize (int measureSpec) {
     26 		return (measureSpec & ~MODE_MASK);
     27 	}
     28 
     29 	@Implementation
     30 	public static int makeMeasureSpec (int size, int mode) {
     31 		return size + mode;
     32 	}
     33 
     34 	@Implementation
     35 	public static String toString (int measureSpec) {
     36 		int mode = getMode(measureSpec);
     37         int size = getSize(measureSpec);
     38 
     39         StringBuilder sb = new StringBuilder("MeasureSpec: ");
     40 
     41         if (mode == View.MeasureSpec.UNSPECIFIED)
     42             sb.append("UNSPECIFIED ");
     43         else if (mode == View.MeasureSpec.EXACTLY)
     44             sb.append("EXACTLY ");
     45         else if (mode == View.MeasureSpec.AT_MOST)
     46             sb.append("AT_MOST ");
     47         else
     48             sb.append(mode).append(" ");
     49 
     50         sb.append(size);
     51         return sb.toString();
     52 	}
     53 
     54 }
     55