| package com.xtremelabs.robolectric.shadows; |
| |
| import com.xtremelabs.robolectric.internal.Implementation; |
| import com.xtremelabs.robolectric.internal.Implements; |
| |
| import android.view.View; |
| |
| /** |
| * Shadow for {@code View.MeasureSpec} inner class. |
| * |
| * As the implementation is very simple, it is taken from the AOSP source. |
| */ |
| @Implements(View.MeasureSpec.class) |
| public class ShadowViewMeasureSpec { |
| |
| private static final int MODE_SHIFT = 30; |
| private static final int MODE_MASK = 0x3 << MODE_SHIFT; |
| |
| @Implementation |
| public static int getMode (int measureSpec) { |
| return (measureSpec & MODE_MASK); |
| } |
| |
| @Implementation |
| public static int getSize (int measureSpec) { |
| return (measureSpec & ~MODE_MASK); |
| } |
| |
| @Implementation |
| public static int makeMeasureSpec (int size, int mode) { |
| return size + mode; |
| } |
| |
| @Implementation |
| public static String toString (int measureSpec) { |
| int mode = getMode(measureSpec); |
| int size = getSize(measureSpec); |
| |
| StringBuilder sb = new StringBuilder("MeasureSpec: "); |
| |
| if (mode == View.MeasureSpec.UNSPECIFIED) |
| sb.append("UNSPECIFIED "); |
| else if (mode == View.MeasureSpec.EXACTLY) |
| sb.append("EXACTLY "); |
| else if (mode == View.MeasureSpec.AT_MOST) |
| sb.append("AT_MOST "); |
| else |
| sb.append(mode).append(" "); |
| |
| sb.append(size); |
| return sb.toString(); |
| } |
| |
| } |