package com.mixpanel.android.mpmetrics; import android.graphics.Bitmap; import android.os.Parcel; import android.test.AndroidTestCase; import org.json.JSONException; import org.json.JSONObject; import java.util.List; public class UpdateDisplayStateTest extends AndroidTestCase { public void setUp() throws BadDecideObjectException, JSONException { final Bitmap.Config conf = Bitmap.Config.ARGB_8888; final Bitmap bitmap = Bitmap.createBitmap(100, 100, conf); final JSONObject inAppJson = new JSONObject( "{\"id\": 1234, \"message_id\": 4321, \"type\": \"takeover\", \"body\": \"Hook me up, yo!\", \"body_color\": 4294901760, \"title\": null, \"title_color\": 4278255360, \"image_url\": \"http://mixpanel.com/Balok.jpg\", \"bg_color\": 3909091328, \"close_color\": 4294967295, \"extras\": {\"image_fade\": true},\"buttons\": [{\"text\": \"Button!\", \"text_color\": 4278190335, \"bg_color\": 4294967040, \"border_color\": 4278255615, \"cta_url\": \"hellomixpanel://deeplink/howareyou\"}, {\"text\": \"Button 2!\", \"text_color\": 4278190335, \"bg_color\": 4294967040, \"border_color\": 4278255615, \"cta_url\": \"hellomixpanel://deeplink/howareyou\"}]}" ); final TakeoverInAppNotification inApp = new TakeoverInAppNotification(inAppJson); inApp.setImage(bitmap); mInAppState = new UpdateDisplayState.DisplayState.InAppNotificationState(inApp, 0xBB); } public void testInAppParcelable() { final Parcel parcel = Parcel.obtain(); mInAppState.writeToParcel(parcel, 0); parcel.setDataPosition(0); final UpdateDisplayState.DisplayState.InAppNotificationState reconstructed = UpdateDisplayState.DisplayState.InAppNotificationState.CREATOR.createFromParcel(parcel); assertSameNotification(mInAppState, reconstructed); } public void testWholeStateParcel() { { final Parcel parcel = Parcel.obtain(); final UpdateDisplayState original = new UpdateDisplayState(mInAppState, "TEST DISTINCT ID 1", "TEST TOKEN 1"); original.writeToParcel(parcel, 0); parcel.setDataPosition(0); final UpdateDisplayState reconstructed = UpdateDisplayState.CREATOR.createFromParcel(parcel); assertEquals(original.getDistinctId(), reconstructed.getDistinctId()); assertEquals(original.getToken(), reconstructed.getToken()); final UpdateDisplayState.DisplayState.InAppNotificationState reconstructedDisplay = (UpdateDisplayState.DisplayState.InAppNotificationState) reconstructed.getDisplayState(); assertSameNotification(mInAppState, reconstructedDisplay); } } private void assertSameNotification(UpdateDisplayState.DisplayState.InAppNotificationState original, UpdateDisplayState.DisplayState.InAppNotificationState reconstructed) { assertEquals(original.getHighlightColor(), reconstructed.getHighlightColor()); final TakeoverInAppNotification originalInApp = (TakeoverInAppNotification) original.getInAppNotification(); final TakeoverInAppNotification reconstructedInApp = (TakeoverInAppNotification) reconstructed.getInAppNotification(); assertEquals(originalInApp.getId(), reconstructedInApp.getId()); assertEquals(originalInApp.getMessageId(), reconstructedInApp.getMessageId()); assertEquals(originalInApp.getBody(), reconstructedInApp.getBody()); assertEquals(originalInApp.getBodyColor(), reconstructedInApp.getBodyColor()); assertEquals(originalInApp.getTitle(), reconstructedInApp.getTitle()); assertEquals(originalInApp.getTitleColor(), reconstructedInApp.getTitleColor()); assertEquals(originalInApp.getImageUrl(), reconstructedInApp.getImageUrl()); assertEquals(originalInApp.getButton(0).getBackgroundColor(), reconstructedInApp.getButton(0).getBackgroundColor()); assertEquals(originalInApp.getButton(0).getText(), reconstructedInApp.getButton(0).getText()); assertEquals(originalInApp.getButton(0).getCtaUrl(), reconstructedInApp.getButton(0).getCtaUrl()); assertEquals(originalInApp.getButton(0).getTextColor(), reconstructedInApp.getButton(0).getTextColor()); assertEquals(originalInApp.getButton(0).getBorderColor(), reconstructedInApp.getButton(0).getBorderColor()); assertEquals(originalInApp.getButton(1).getBackgroundColor(), reconstructedInApp.getButton(1).getBackgroundColor()); assertEquals(originalInApp.getButton(1).getText(), reconstructedInApp.getButton(1).getText()); assertEquals(originalInApp.getButton(1).getCtaUrl(), reconstructedInApp.getButton(1).getCtaUrl()); assertEquals(originalInApp.getButton(1).getTextColor(), reconstructedInApp.getButton(1).getTextColor()); assertEquals(originalInApp.getButton(1).getBorderColor(), reconstructedInApp.getButton(1).getBorderColor()); assertEquals(originalInApp.getCloseColor(), reconstructedInApp.getCloseColor()); assertEquals(originalInApp.getExtras().toString(), reconstructedInApp.getExtras().toString()); assertEquals(originalInApp.setShouldShowShadow(), reconstructedInApp.setShouldShowShadow()); assertEquals(originalInApp.getImageUrl(), reconstructedInApp.getImageUrl()); assertEquals(originalInApp.getTitle(), reconstructedInApp.getTitle()); assertEquals(originalInApp.getType(), reconstructedInApp.getType()); final Bitmap originalImage = originalInApp.getImage(); final Bitmap reconstructedImage = reconstructedInApp.getImage(); assertEquals(originalImage.getWidth(), reconstructedImage.getWidth()); assertEquals(originalImage.getPixel(0, 0), originalImage.getPixel(0, 0)); } private UpdateDisplayState.DisplayState.InAppNotificationState mInAppState; }