public void testSurveyStateSaving() { final String surveyJsonString = "{\"collections\":[{\"id\":151,\"selector\":\"\\\"@mixpanel\\\" in properties[\\\"$email\\\"]\"}]," + "\"id\":299," + "\"questions\":[" + "{\"prompt\":\"PROMPT1\",\"extra_data\":{\"$choices\":[\"Answer1,1\",\"Answer1,2\",\"Answer1,3\"]},\"type\":\"multiple_choice\",\"id\":287}," + "{\"prompt\":\"PROMPT2\",\"extra_data\":{},\"type\":\"text\",\"id\":289}]}"; Bitmap.Config conf = Bitmap.Config.ARGB_8888; Bitmap testBitmap = Bitmap.createBitmap(100, 100, conf); UpdateDisplayState originalUpdateDisplayState; try { final JSONObject surveyJson = new JSONObject(surveyJsonString); final Survey s = new Survey(surveyJson); final UpdateDisplayState.DisplayState.SurveyState surveyState = new UpdateDisplayState.DisplayState.SurveyState(s); surveyState.setHighlightColor(Color.WHITE); surveyState.setBackground(testBitmap); originalUpdateDisplayState = new UpdateDisplayState(surveyState, "DistinctId", "Token"); } catch (JSONException e) { throw new RuntimeException("Survey string in test doesn't parse"); } catch (BadDecideObjectException e) { throw new RuntimeException("Test survey string couldn't be made into a survey"); } final Bundle inBundle = new Bundle(); inBundle.putParcelable("TEST SURVEY PARCEL", originalUpdateDisplayState); final Parcel outerParcel = Parcel.obtain(); inBundle.writeToParcel(outerParcel, 0); outerParcel.setDataPosition(0); final Bundle outBundle = outerParcel.readBundle(); outBundle.setClassLoader(UpdateDisplayState.class.getClassLoader()); final UpdateDisplayState inUpdateDisplayState = outBundle.getParcelable("TEST SURVEY PARCEL"); final UpdateDisplayState.DisplayState.SurveyState surveyState = (UpdateDisplayState.DisplayState.SurveyState) inUpdateDisplayState.getDisplayState(); final Survey inSurvey = surveyState.getSurvey(); final String inDistinctId = inUpdateDisplayState.getDistinctId(); final String inToken = inUpdateDisplayState.getToken(); assertEquals("DistinctId", inDistinctId); assertEquals("Token", inToken); assertEquals(inSurvey.getId(), 299); List<Survey.Question> inQuestions = inSurvey.getQuestions(); assertEquals(2, inQuestions.size()); final Survey.Question q1 = inQuestions.get(0); assertEquals(q1.getId(), 287); assertEquals(q1.getPrompt(), "PROMPT1"); assertEquals(q1.getType(), Survey.QuestionType.MULTIPLE_CHOICE); final List<String> q1Choices = q1.getChoices(); assertEquals(q1Choices.size(), 3); assertEquals(q1Choices.get(0), "Answer1,1"); assertEquals(q1Choices.get(1), "Answer1,2"); assertEquals(q1Choices.get(2), "Answer1,3"); final Survey.Question q2 = inQuestions.get(1); assertEquals(q2.getId(), 289); assertEquals(q2.getPrompt(), "PROMPT2"); assertEquals(q2.getType(), Survey.QuestionType.TEXT); assertNotNull(surveyState.getBackground()); assertNotNull(surveyState.getAnswers()); }