private void parseUntilNext(int event) throws XmlPullParserException, IOException { while (parser.next() != event) { if (parser.getEventType() == XmlResourceParser.END_DOCUMENT) { throw new RuntimeException("Impossible to find: " + event + ". End of document reached."); } } }
@Test public void testGetEventType() throws XmlPullParserException, IOException { int evt; while ((evt = parser.next()) != XmlResourceParser.END_DOCUMENT) { assertThat(parser.getEventType()).isEqualTo(evt); } }
/** Test that next tag will only return tag events. */ @Test public void testNextTag() throws XmlPullParserException, IOException { Set<Integer> acceptableTags = new HashSet<>(); acceptableTags.add(XmlResourceParser.START_TAG); acceptableTags.add(XmlResourceParser.END_TAG); forgeAndOpenDocument("<foo><bar/><text>message</text></foo>"); int evt; do { evt = parser.next(); assertTrue(acceptableTags.contains(evt)); } while (evt == XmlResourceParser.END_TAG && "foo".equals(parser.getName())); }
@Test public void testGetDepth() throws XmlPullParserException, IOException { // Recorded depths from preference file elements List<Integer> expectedDepths = asList(1, 2, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3); List<Integer> actualDepths = new ArrayList<>(); int evt; while ((evt = parser.next()) != XmlResourceParser.END_DOCUMENT) { switch (evt) { case (XmlResourceParser.START_TAG): { actualDepths.add(parser.getDepth()); break; } } } assertThat(actualDepths).isEqualTo(expectedDepths); }
@Test public void testNext() throws XmlPullParserException, IOException { // Recorded events while parsing preferences from Android List<String> expectedEvents = Arrays.asList( "<xml>", "<", // PreferenceScreen "<", // PreferenceCategory "<", // Preference ">", ">", "<", // PreferenceScreen "<", // Preference ">", "<", // Preference ">", ">", "<", // CheckBoxPreference ">", "<", // EditTextPreference ">", "<", // ListPreference ">", "<", // Preference ">", "<", // RingtonePreference ">", "<", // Preference ">", "<", ">", "<", "<", ">", ">", ">", "</xml>"); List<String> actualEvents = new ArrayList<>(); int evt; do { evt = parser.next(); switch (evt) { case XmlPullParser.START_DOCUMENT: actualEvents.add("<xml>"); break; case XmlPullParser.END_DOCUMENT: actualEvents.add("</xml>"); break; case XmlPullParser.START_TAG: actualEvents.add("<"); break; case XmlPullParser.END_TAG: actualEvents.add(">"); break; } } while (evt != XmlResourceParser.END_DOCUMENT); assertThat(actualEvents).isEqualTo(expectedEvents); }
@Test public void testGetXmlInt() throws XmlPullParserException, IOException { assertThat(parser).isNotNull(); int evt = parser.next(); assertThat(evt).isEqualTo(XmlResourceParser.START_DOCUMENT); }