/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.xml; import static net.sourceforge.pmd.lang.ParserOptionsTest.verifyOptionsEqualsHashcode; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.rule.properties.BooleanProperty; import net.sourceforge.pmd.lang.xml.rule.AbstractXmlRule; public class XmlParserOptionsTest { @Test public void testDefaults() throws Exception { XmlParserOptions options = new XmlParserOptions(); assertFalse(options.isCoalescing()); assertTrue(options.isExpandEntityReferences()); assertFalse(options.isIgnoringComments()); assertFalse(options.isIgnoringElementContentWhitespace()); assertTrue(options.isNamespaceAware()); assertFalse(options.isValidating()); assertFalse(options.isXincludeAware()); MyRule rule = new MyRule(); options = (XmlParserOptions) rule.getParserOptions(); assertFalse(options.isCoalescing()); assertTrue(options.isExpandEntityReferences()); assertFalse(options.isIgnoringComments()); assertFalse(options.isIgnoringElementContentWhitespace()); assertTrue(options.isNamespaceAware()); assertFalse(options.isValidating()); assertFalse(options.isXincludeAware()); } @Test public void testConstructor() throws Exception { MyRule rule = new MyRule(); rule.setProperty(XmlParserOptions.COALESCING_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isCoalescing()); rule.setProperty(XmlParserOptions.COALESCING_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isCoalescing()); rule.setProperty(XmlParserOptions.EXPAND_ENTITY_REFERENCES_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isExpandEntityReferences()); rule.setProperty(XmlParserOptions.EXPAND_ENTITY_REFERENCES_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isExpandEntityReferences()); rule.setProperty(XmlParserOptions.IGNORING_COMMENTS_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isIgnoringComments()); rule.setProperty(XmlParserOptions.IGNORING_COMMENTS_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isIgnoringComments()); rule.setProperty(XmlParserOptions.IGNORING_ELEMENT_CONTENT_WHITESPACE_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isIgnoringElementContentWhitespace()); rule.setProperty(XmlParserOptions.IGNORING_ELEMENT_CONTENT_WHITESPACE_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isIgnoringElementContentWhitespace()); rule.setProperty(XmlParserOptions.NAMESPACE_AWARE_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isNamespaceAware()); rule.setProperty(XmlParserOptions.NAMESPACE_AWARE_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isNamespaceAware()); rule.setProperty(XmlParserOptions.VALIDATING_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isValidating()); rule.setProperty(XmlParserOptions.VALIDATING_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isValidating()); rule.setProperty(XmlParserOptions.XINCLUDE_AWARE_DESCRIPTOR, true); assertTrue(((XmlParserOptions) rule.getParserOptions()).isXincludeAware()); rule.setProperty(XmlParserOptions.XINCLUDE_AWARE_DESCRIPTOR, false); assertFalse(((XmlParserOptions) rule.getParserOptions()).isXincludeAware()); } @Test public void testSetters() { XmlParserOptions options = new XmlParserOptions(); options.setSuppressMarker("foo"); assertEquals("foo", options.getSuppressMarker()); options.setSuppressMarker(null); assertNull(options.getSuppressMarker()); options.setCoalescing(true); assertTrue(options.isCoalescing()); options.setCoalescing(false); assertFalse(options.isCoalescing()); options.setExpandEntityReferences(true); assertTrue(options.isExpandEntityReferences()); options.setExpandEntityReferences(false); assertFalse(options.isExpandEntityReferences()); options.setIgnoringComments(true); assertTrue(options.isIgnoringComments()); options.setIgnoringComments(false); assertFalse(options.isIgnoringComments()); options.setIgnoringElementContentWhitespace(true); assertTrue(options.isIgnoringElementContentWhitespace()); options.setIgnoringElementContentWhitespace(false); assertFalse(options.isIgnoringElementContentWhitespace()); options.setNamespaceAware(true); assertTrue(options.isNamespaceAware()); options.setNamespaceAware(false); assertFalse(options.isNamespaceAware()); options.setValidating(true); assertTrue(options.isValidating()); options.setValidating(false); assertFalse(options.isValidating()); options.setXincludeAware(true); assertTrue(options.isXincludeAware()); options.setXincludeAware(false); assertFalse(options.isXincludeAware()); } @Test public void testEqualsHashcode() throws Exception { BooleanProperty[] properties = new BooleanProperty[] { XmlParserOptions.COALESCING_DESCRIPTOR, XmlParserOptions.EXPAND_ENTITY_REFERENCES_DESCRIPTOR, XmlParserOptions.IGNORING_COMMENTS_DESCRIPTOR, XmlParserOptions.IGNORING_ELEMENT_CONTENT_WHITESPACE_DESCRIPTOR, XmlParserOptions.NAMESPACE_AWARE_DESCRIPTOR, XmlParserOptions.VALIDATING_DESCRIPTOR, XmlParserOptions.XINCLUDE_AWARE_DESCRIPTOR, }; for (int i = 0; i < properties.length; i++) { BooleanProperty property = properties[i]; MyRule rule = new MyRule(); rule.setProperty(property, true); ParserOptions options1 = rule.getParserOptions(); rule.setProperty(property, false); ParserOptions options2 = rule.getParserOptions(); rule.setProperty(property, true); ParserOptions options3 = rule.getParserOptions(); rule.setProperty(property, false); ParserOptions options4 = rule.getParserOptions(); verifyOptionsEqualsHashcode(options1, options2, options3, options4); } XmlParserOptions options1 = new XmlParserOptions(); options1.setSuppressMarker("foo"); XmlParserOptions options2 = new XmlParserOptions(); options2.setSuppressMarker("bar"); XmlParserOptions options3 = new XmlParserOptions(); options3.setSuppressMarker("foo"); XmlParserOptions options4 = new XmlParserOptions(); options4.setSuppressMarker("bar"); verifyOptionsEqualsHashcode(options1, options2, options3, options4); } private static final class MyRule extends AbstractXmlRule { } public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(XmlParserOptionsTest.class); } }