| package com.google.android.apps.pixelperfect.api; |
| |
| import android.os.Bundle; |
| import android.os.Parcel; |
| import android.test.suitebuilder.annotation.SmallTest; |
| |
| import com.google.android.apps.pixelperfect.platform.ScreenshotGrabber; |
| import com.google.common.logging.RecordedEvent; |
| import com.google.common.logging.RecordedEvent.Screenshot; |
| |
| import junit.framework.TestCase; |
| |
| import java.io.ByteArrayOutputStream; |
| |
| /** |
| * Tests for {@link ScreenshotParcel}. |
| */ |
| @SmallTest |
| public class ScreenshotParcelTest extends TestCase { |
| private Screenshot mScreenshotProto = null; |
| private Parcel mParcel = null; |
| |
| private void createTestScreenshotProto() throws Exception { |
| final int height = 10; |
| final int width = 15; |
| final int rotation = 100; |
| final int quality = 50; |
| final byte[] compressed_bytes = new byte[] { |
| (byte) 0xca, (byte) 0xfe }; |
| |
| ByteArrayOutputStream output = new ByteArrayOutputStream( |
| compressed_bytes.length); |
| output.write(compressed_bytes, 0, compressed_bytes.length); |
| ScreenshotGrabber grabber = new ScreenshotGrabber(); |
| mScreenshotProto = grabber.fillScreenshotProto( |
| output, height, width, rotation, |
| RecordedEvent.Bitmap.BitmapConfig.Config.ARGB_8888, |
| RecordedEvent.Bitmap.CompressionConfig.CompressFormat.JPEG, |
| quality); |
| |
| // TODO(mukarram) figure out why ScreenshotParcel(mScreenshotProto) |
| // does not work. |
| ScreenshotParcel screenshotParcel = new ScreenshotParcel(); |
| screenshotParcel.screenshotProto = mScreenshotProto; |
| |
| Bundle bundle = new Bundle(); |
| bundle.putParcelable("screenshotParcel", screenshotParcel); |
| mParcel = Parcel.obtain(); |
| bundle.writeToParcel(mParcel, 0); |
| } |
| |
| public static void assertProtosEqual(Screenshot protoA, Screenshot protoB) { |
| assertEquals(protoA.getRotation(), protoB.getRotation()); |
| assertEquals(protoA.getBitmap().getBitmap(), protoB.getBitmap().getBitmap()); |
| assertEquals(protoA.getBitmap().getHeight(), protoB.getBitmap().getHeight()); |
| assertEquals(protoA.getBitmap().getWidth(), protoB.getBitmap().getWidth()); |
| assertEquals(protoA.getRotation(), protoB.getRotation()); |
| |
| assertEquals(protoA.getBitmap().getBitmapConfig().getValue(), |
| protoB.getBitmap().getBitmapConfig().getValue()); |
| assertEquals(protoA.getBitmap().getCompressionConfig().getFormat(), |
| protoB.getBitmap().getCompressionConfig().getFormat()); |
| assertEquals(protoA.getBitmap().getCompressionConfig().getQuality(), |
| protoB.getBitmap().getCompressionConfig().getQuality()); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| createTestScreenshotProto(); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| if (mParcel != null) { |
| mParcel.recycle(); |
| } |
| } |
| |
| public void testParcelReadWrite() { |
| mParcel.setDataPosition(0); |
| Bundle testBundle = mParcel.readBundle(); |
| testBundle.setClassLoader(ScreenshotParcelTest.class.getClassLoader()); |
| ScreenshotParcel testScreenshotParcel = testBundle.getParcelable("screenshotParcel"); |
| assertProtosEqual(mScreenshotProto, testScreenshotParcel.screenshotProto); |
| } |
| |
| } |