package org.geotools.kml.bindings; import java.net.URI; import java.util.List; import java.util.Map; import org.geotools.kml.v22.KML; import org.geotools.kml.v22.KMLTestSupport; import org.geotools.xml.Binding; public class ExtendedDataTypeBindingTest extends KMLTestSupport { public void testExecutionMode() throws Exception { assertEquals(Binding.OVERRIDE, binding(KML.ExtendedDataType).getExecutionMode()); } public void testGetType() { assertEquals(Map.class, binding(KML.ExtendedDataType).getType()); } // to avoid warnings @SuppressWarnings("unchecked") private Map<String, Object> parseExtendedData() throws Exception { return (Map<String, Object>) parse(); } @SuppressWarnings("unchecked") public void testParseEmpty() throws Exception { String xml = "<ExtendedData></ExtendedData>"; buildDocument(xml); Map<String, Object> document = parseExtendedData(); assertEquals(3, document.size()); List<URI> schemas = (List<URI>) document.get("schemas"); Map<String, Object> typed = (Map<String, Object>) document.get("typed"); Map<String, Object> untyped = (Map<String, Object>) document.get("untyped"); assertTrue(schemas.isEmpty()); assertTrue(typed.isEmpty()); assertTrue(untyped.isEmpty()); } public void testParseUntyped() throws Exception { String xml = "<ExtendedData>" + "<Data name=\"foo\"><value>bar</value></Data>" + "</ExtendedData>"; buildDocument(xml); Map<String, Object> document = parseExtendedData(); @SuppressWarnings("unchecked") Map<String, Object> untyped = (Map<String, Object>) document.get("untyped"); assertEquals("bar", untyped.get("foo")); } @SuppressWarnings("unchecked") public void testParseTyped() throws Exception { String xml = "<ExtendedData>" + "<SchemaData schemaUrl=\"#foo\">" + "<SimpleData name=\"quux\">morx</SimpleData>" + "</SchemaData>" + "</ExtendedData>"; buildDocument(xml); Map<String, Object> document = parseExtendedData(); Map<String, Object> typed = (Map<String, Object>) document.get("typed"); assertEquals("morx", typed.get("quux")); List<URI> schemaURLS = (List<URI>) document.get("schemas"); assertEquals(1, schemaURLS.size()); assertEquals("foo", schemaURLS.get(0).getFragment()); } @SuppressWarnings("unchecked") public void testParseMultipleTypes() throws Exception { String xml = "<ExtendedData>" + "<SchemaData schemaUrl=\"#foo1\">" + "<SimpleData name=\"quux\">morx</SimpleData>" + "</SchemaData>" + "<SchemaData schemaUrl=\"#foo2\">" + "<SimpleData name=\"fleem\">zul</SimpleData>" + "</SchemaData>" + "</ExtendedData>"; buildDocument(xml); Map<String, Object> document = parseExtendedData(); Map<String, Object> typed = (Map<String, Object>) document.get("typed"); assertEquals("morx", typed.get("quux")); List<URI> schemaURLS = (List<URI>) document.get("schemas"); assertEquals(2, schemaURLS.size()); assertEquals("foo1", schemaURLS.get(0).getFragment()); assertEquals("foo2", schemaURLS.get(1).getFragment()); } }