1 package net.sourceforge.pmd.lang.xml; 2 3 import static net.sourceforge.pmd.lang.ParserOptionsTest.verifyOptionsEqualsHashcode; 4 5 import static org.junit.Assert.assertEquals; 6 import static org.junit.Assert.assertFalse; 7 import static org.junit.Assert.assertNull; 8 import static org.junit.Assert.assertTrue; 9 import net.sourceforge.pmd.lang.ParserOptions; 10 import net.sourceforge.pmd.lang.rule.properties.BooleanProperty; 11 import net.sourceforge.pmd.lang.xml.XmlParserOptions; 12 import net.sourceforge.pmd.lang.xml.rule.AbstractXmlRule; 13 14 import org.junit.Test; 15 16 public class XmlParserOptionsTest { 17 18 @Test 19 public void testDefaults() throws Exception { 20 XmlParserOptions options = new XmlParserOptions(); 21 assertFalse(options.isCoalescing()); 22 assertTrue(options.isExpandEntityReferences()); 23 assertFalse(options.isIgnoringComments()); 24 assertFalse(options.isIgnoringElementContentWhitespace()); 25 assertTrue(options.isNamespaceAware()); 26 assertFalse(options.isValidating()); 27 assertFalse(options.isXincludeAware()); 28 29 MyRule rule = new MyRule(); 30 options = (XmlParserOptions) rule.getParserOptions(); 31 assertFalse(options.isCoalescing()); 32 assertTrue(options.isExpandEntityReferences()); 33 assertFalse(options.isIgnoringComments()); 34 assertFalse(options.isIgnoringElementContentWhitespace()); 35 assertTrue(options.isNamespaceAware()); 36 assertFalse(options.isValidating()); 37 assertFalse(options.isXincludeAware()); 38 } 39 40 @Test 41 public void testConstructor() throws Exception { 42 MyRule rule = new MyRule(); 43 44 rule.setProperty(XmlParserOptions.COALESCING_DESCRIPTOR, true); 45 assertTrue(((XmlParserOptions) rule.getParserOptions()).isCoalescing()); 46 rule.setProperty(XmlParserOptions.COALESCING_DESCRIPTOR, false); 47 assertFalse(((XmlParserOptions) rule.getParserOptions()).isCoalescing()); 48 49 rule.setProperty(XmlParserOptions.EXPAND_ENTITY_REFERENCES_DESCRIPTOR, true); 50 assertTrue(((XmlParserOptions) rule.getParserOptions()).isExpandEntityReferences()); 51 rule.setProperty(XmlParserOptions.EXPAND_ENTITY_REFERENCES_DESCRIPTOR, false); 52 assertFalse(((XmlParserOptions) rule.getParserOptions()).isExpandEntityReferences()); 53 54 rule.setProperty(XmlParserOptions.IGNORING_COMMENTS_DESCRIPTOR, true); 55 assertTrue(((XmlParserOptions) rule.getParserOptions()).isIgnoringComments()); 56 rule.setProperty(XmlParserOptions.IGNORING_COMMENTS_DESCRIPTOR, false); 57 assertFalse(((XmlParserOptions) rule.getParserOptions()).isIgnoringComments()); 58 59 rule.setProperty(XmlParserOptions.IGNORING_ELEMENT_CONTENT_WHITESPACE_DESCRIPTOR, true); 60 assertTrue(((XmlParserOptions) rule.getParserOptions()).isIgnoringElementContentWhitespace()); 61 rule.setProperty(XmlParserOptions.IGNORING_ELEMENT_CONTENT_WHITESPACE_DESCRIPTOR, false); 62 assertFalse(((XmlParserOptions) rule.getParserOptions()).isIgnoringElementContentWhitespace()); 63 64 rule.setProperty(XmlParserOptions.NAMESPACE_AWARE_DESCRIPTOR, true); 65 assertTrue(((XmlParserOptions) rule.getParserOptions()).isNamespaceAware()); 66 rule.setProperty(XmlParserOptions.NAMESPACE_AWARE_DESCRIPTOR, false); 67 assertFalse(((XmlParserOptions) rule.getParserOptions()).isNamespaceAware()); 68 69 rule.setProperty(XmlParserOptions.VALIDATING_DESCRIPTOR, true); 70 assertTrue(((XmlParserOptions) rule.getParserOptions()).isValidating()); 71 rule.setProperty(XmlParserOptions.VALIDATING_DESCRIPTOR, false); 72 assertFalse(((XmlParserOptions) rule.getParserOptions()).isValidating()); 73 74 rule.setProperty(XmlParserOptions.XINCLUDE_AWARE_DESCRIPTOR, true); 75 assertTrue(((XmlParserOptions) rule.getParserOptions()).isXincludeAware()); 76 rule.setProperty(XmlParserOptions.XINCLUDE_AWARE_DESCRIPTOR, false); 77 assertFalse(((XmlParserOptions) rule.getParserOptions()).isXincludeAware()); 78 } 79 80 @Test 81 public void testSetters() { 82 XmlParserOptions options = new XmlParserOptions(); 83 84 options.setSuppressMarker("foo"); 85 assertEquals("foo", options.getSuppressMarker()); 86 options.setSuppressMarker(null); 87 assertNull(options.getSuppressMarker()); 88 89 options.setCoalescing(true); 90 assertTrue(options.isCoalescing()); 91 options.setCoalescing(false); 92 assertFalse(options.isCoalescing()); 93 94 options.setExpandEntityReferences(true); 95 assertTrue(options.isExpandEntityReferences()); 96 options.setExpandEntityReferences(false); 97 assertFalse(options.isExpandEntityReferences()); 98 99 options.setIgnoringComments(true); 100 assertTrue(options.isIgnoringComments()); 101 options.setIgnoringComments(false); 102 assertFalse(options.isIgnoringComments()); 103 104 options.setIgnoringElementContentWhitespace(true); 105 assertTrue(options.isIgnoringElementContentWhitespace()); 106 options.setIgnoringElementContentWhitespace(false); 107 assertFalse(options.isIgnoringElementContentWhitespace()); 108 109 options.setNamespaceAware(true); 110 assertTrue(options.isNamespaceAware()); 111 options.setNamespaceAware(false); 112 assertFalse(options.isNamespaceAware()); 113 114 options.setValidating(true); 115 assertTrue(options.isValidating()); 116 options.setValidating(false); 117 assertFalse(options.isValidating()); 118 119 options.setXincludeAware(true); 120 assertTrue(options.isXincludeAware()); 121 options.setXincludeAware(false); 122 assertFalse(options.isXincludeAware()); 123 } 124 125 @Test 126 public void testEqualsHashcode() throws Exception { 127 BooleanProperty[] properties = new BooleanProperty[] { XmlParserOptions.COALESCING_DESCRIPTOR, 128 XmlParserOptions.EXPAND_ENTITY_REFERENCES_DESCRIPTOR, XmlParserOptions.IGNORING_COMMENTS_DESCRIPTOR, 129 XmlParserOptions.IGNORING_ELEMENT_CONTENT_WHITESPACE_DESCRIPTOR, 130 XmlParserOptions.NAMESPACE_AWARE_DESCRIPTOR, XmlParserOptions.VALIDATING_DESCRIPTOR, 131 XmlParserOptions.XINCLUDE_AWARE_DESCRIPTOR, }; 132 133 for (int i = 0; i < properties.length; i++) { 134 BooleanProperty property = properties[i]; 135 136 MyRule rule = new MyRule(); 137 rule.setProperty(property, true); 138 ParserOptions options1 = rule.getParserOptions(); 139 rule.setProperty(property, false); 140 ParserOptions options2 = rule.getParserOptions(); 141 rule.setProperty(property, true); 142 ParserOptions options3 = rule.getParserOptions(); 143 rule.setProperty(property, false); 144 ParserOptions options4 = rule.getParserOptions(); 145 verifyOptionsEqualsHashcode(options1, options2, options3, options4); 146 } 147 148 XmlParserOptions options1 = new XmlParserOptions(); 149 options1.setSuppressMarker("foo"); 150 XmlParserOptions options2 = new XmlParserOptions(); 151 options2.setSuppressMarker("bar"); 152 XmlParserOptions options3 = new XmlParserOptions(); 153 options3.setSuppressMarker("foo"); 154 XmlParserOptions options4 = new XmlParserOptions(); 155 options4.setSuppressMarker("bar"); 156 verifyOptionsEqualsHashcode(options1, options2, options3, options4); 157 } 158 159 private static final class MyRule extends AbstractXmlRule { 160 } 161 162 public static junit.framework.Test suite() { 163 return new junit.framework.JUnit4TestAdapter(XmlParserOptionsTest.class); 164 } 165 }