• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
getMode(int measureSpec)20 	public static int getMode (int measureSpec) {
21 		return (measureSpec & MODE_MASK);
22 	}
23 
24 	@Implementation
getSize(int measureSpec)25 	public static int getSize (int measureSpec) {
26 		return (measureSpec & ~MODE_MASK);
27 	}
28 
29 	@Implementation
makeMeasureSpec(int size, int mode)30 	public static int makeMeasureSpec (int size, int mode) {
31 		return size + mode;
32 	}
33 
34 	@Implementation
toString(int measureSpec)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