package org.geoserver.wfs.kvp; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import javax.xml.XMLConstants; import junit.framework.TestCase; import org.xml.sax.helpers.NamespaceSupport; public class NamespaceKvpParserTest extends TestCase { private NamespaceKvpParser parser; protected void setUp() throws Exception { parser = new NamespaceKvpParser("namespace"); } public void testEmpty() throws Exception { NamespaceSupport ctx = parser.parse(""); assertNotNull(ctx); List<String> prefixes = getPrefixes(ctx); assertTrue(prefixes.contains("xml"));// this one is always present assertEquals(1, prefixes.size()); } public void testFormatError() throws Exception { try { parser.parse("xmlns[bad=format]"); fail("Expected IAE"); } catch (IllegalArgumentException e) { assertTrue(true); } try { parser.parse("xmlns(bad=http://format]"); fail("Expected IAE"); } catch (IllegalArgumentException e) { assertTrue(true); } try { parser.parse("bad=http://format"); fail("Expected IAE"); } catch (IllegalArgumentException e) { assertTrue(true); } } public void testSingle() throws Exception { NamespaceSupport ctx = parser.parse("xmlns(foo=http://bar)"); assertEquals("http://bar", ctx.getURI("foo")); } public void testMultiple() throws Exception { NamespaceSupport ctx = parser .parse("xmlns(foo=http://bar), xmlns(ex=http://example.com),xmlns(gs=http://geoserver.org)"); assertEquals("http://bar", ctx.getURI("foo")); assertEquals("http://example.com", ctx.getURI("ex")); assertEquals("http://geoserver.org", ctx.getURI("gs")); } public void testDefaultNamespace() throws Exception{ NamespaceSupport ctx = parser.parse("xmlns(http://default.namespace.com)"); assertEquals("http://default.namespace.com", ctx.getURI(XMLConstants.DEFAULT_NS_PREFIX)); } @SuppressWarnings("unchecked") private List<String> getPrefixes(NamespaceSupport ctx) { Enumeration<String> prefixes = ctx.getPrefixes(); List<String> l = new ArrayList<String>(); while (prefixes.hasMoreElements()) { l.add(prefixes.nextElement()); } return l; } }