package com.google.maps.android.kml; import android.graphics.Color; import android.test.ActivityTestCase; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import java.io.InputStream; import java.util.HashMap; public class KmlParserTest extends ActivityTestCase { public XmlPullParser createParser(int res) throws Exception { InputStream stream = getInstrumentation().getContext().getResources().openRawResource(res); XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser parser = factory.newPullParser(); parser.setInput(stream, null); parser.next(); return parser; } public void testInlineStyle() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_inline_style); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertNotNull(mParser.getPlacemarks()); assertEquals(mParser.getPlacemarks().size(), 1); for (KmlPlacemark placemark : mParser.getPlacemarks().keySet()) { KmlStyle inlineStyle = placemark.getInlineStyle(); assertNotNull(inlineStyle); assertEquals(inlineStyle.getPolylineOptions().getColor(), Color.parseColor("#000000")); assertEquals(inlineStyle.getPolygonOptions().getFillColor(), Color.parseColor("#ffffff")); assertEquals(inlineStyle.getPolylineOptions().getColor(), inlineStyle.getPolygonOptions().getStrokeColor()); assertEquals(placemark.getGeometry().getGeometryType(), "MultiGeometry"); } } public void testPolyStyleBooleanNumeric() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_poly_style_boolean_numeric); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertNotNull(mParser.getPlacemarks()); assertEquals(1, mParser.getContainers().size()); KmlContainer kmlContainer = mParser.getContainers().get(0); assertEquals(true, kmlContainer.hasPlacemarks()); HashMap<String, KmlStyle> styles = kmlContainer.getStyles(); KmlStyle kmlStyle = styles.get("#fireadvisory"); assertNotNull(kmlStyle); assertEquals(true, kmlStyle.hasFill()); assertEquals(false, kmlStyle.hasOutline()); } public void testPolyStyleBooleanAlpha() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_poly_style_boolean_alpha); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertNotNull(mParser.getPlacemarks()); assertEquals(1, mParser.getContainers().size()); KmlContainer kmlContainer = mParser.getContainers().get(0); assertEquals(true, kmlContainer.hasPlacemarks()); HashMap<String, KmlStyle> styles = kmlContainer.getStyles(); KmlStyle kmlStyle = styles.get("#fireadvisory"); assertNotNull(kmlStyle); assertEquals(true, kmlStyle.hasFill()); assertEquals(false, kmlStyle.hasOutline()); } public void testContainerHeirarchy() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_document_nest); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertEquals(mParser.getContainers().get(0).getContainerId(), "hasId"); assertEquals(mParser.getContainers().size(), 1); assertTrue(mParser.getContainers().get(0).hasContainers()); } public void testPlacemarkParsing() throws Exception { XmlPullParser parser = createParser(com.google.maps.android.test.R.raw.amu_unsupported); KmlParser mParser = new KmlParser(parser); mParser.parseKml(); assertTrue(mParser.getPlacemarks().size() == 1); } }