package org.geotools.kml.bindings;
import java.util.List;
import java.util.Map;
import org.geotools.kml.Folder;
import org.geotools.kml.v22.KML;
import org.geotools.kml.v22.KMLTestSupport;
import org.geotools.xml.Binding;
import org.opengis.feature.simple.SimpleFeature;
public class FolderBindingTest extends KMLTestSupport {
public void testType() throws Exception {
assertEquals(SimpleFeature.class, binding(KML.Folder).getType());
}
public void testExecutionMode() throws Exception {
assertEquals(Binding.AFTER, binding(KML.Folder).getExecutionMode());
}
public void testParse() throws Exception {
String xml = "<Folder>" + "<name>foo</name>" + "</Folder>";
buildDocument(xml);
SimpleFeature folder = (SimpleFeature) parse();
assertEquals("foo", folder.getAttribute("name"));
}
@SuppressWarnings("unchecked")
public void testFolderHierarchy() throws Exception {
String xml = "<Folder><name>foo</name>" + "<Folder><name>bar</name>"
+ "<Placemark><name>morx</name></Placemark>" + "</Folder>" + "</Folder>";
buildDocument(xml);
SimpleFeature folder1 = (SimpleFeature) parse();
List<SimpleFeature> features = (List<SimpleFeature>) folder1.getAttribute("Feature");
SimpleFeature folder2 = features.get(0);
features = (List<SimpleFeature>) folder2.getAttribute("Feature");
SimpleFeature placemark = features.get(0);
Map<Object, Object> userData = placemark.getUserData();
Object folderObject = userData.get("Folder");
assertNotNull("No folder user data", folderObject);
assertTrue("Unknown user data", folderObject instanceof List<?>);
List<Folder> folders = (List<Folder>) folderObject;
assertEquals(2, folders.size());
assertEquals("foo", folders.get(0).getName());
assertEquals("bar", folders.get(1).getName());
assertEquals("morx", placemark.getAttribute("name"));
}
}