/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.ecmascript; 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.ecmascript.rule.AbstractEcmascriptRule; import net.sourceforge.pmd.lang.rule.properties.BooleanProperty; public class EcmascriptParserOptionsTest { @Test public void testDefaults() throws Exception { EcmascriptParserOptions parserOptions = new EcmascriptParserOptions(); assertTrue(parserOptions.isRecordingComments()); assertTrue(parserOptions.isRecordingLocalJsDocComments()); assertEquals(EcmascriptParserOptions.Version.VERSION_DEFAULT, parserOptions.getRhinoLanguageVersion()); MyRule rule = new MyRule(); parserOptions = (EcmascriptParserOptions) rule.getParserOptions(); assertTrue(parserOptions.isRecordingComments()); assertTrue(parserOptions.isRecordingLocalJsDocComments()); assertEquals(EcmascriptParserOptions.Version.VERSION_DEFAULT, parserOptions.getRhinoLanguageVersion()); } @Test public void testConstructor() throws Exception { MyRule rule = new MyRule(); rule.setProperty(EcmascriptParserOptions.RECORDING_COMMENTS_DESCRIPTOR, true); assertTrue(((EcmascriptParserOptions) rule.getParserOptions()).isRecordingComments()); rule.setProperty(EcmascriptParserOptions.RECORDING_COMMENTS_DESCRIPTOR, false); assertFalse(((EcmascriptParserOptions) rule.getParserOptions()).isRecordingComments()); rule.setProperty(EcmascriptParserOptions.RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR, true); assertTrue(((EcmascriptParserOptions) rule.getParserOptions()).isRecordingLocalJsDocComments()); rule.setProperty(EcmascriptParserOptions.RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR, false); assertFalse(((EcmascriptParserOptions) rule.getParserOptions()).isRecordingLocalJsDocComments()); rule.setProperty(EcmascriptParserOptions.RHINO_LANGUAGE_VERSION, "default"); assertEquals(EcmascriptParserOptions.Version.VERSION_DEFAULT, ((EcmascriptParserOptions) rule.getParserOptions()).getRhinoLanguageVersion()); rule.setProperty(EcmascriptParserOptions.RHINO_LANGUAGE_VERSION, "1.8"); assertEquals(EcmascriptParserOptions.Version.VERSION_1_8, ((EcmascriptParserOptions) rule.getParserOptions()).getRhinoLanguageVersion()); } @Test public void testSetters() { EcmascriptParserOptions options = new EcmascriptParserOptions(); options.setSuppressMarker("foo"); assertEquals("foo", options.getSuppressMarker()); options.setSuppressMarker(null); assertNull(options.getSuppressMarker()); } @Test public void testEqualsHashcode() throws Exception { BooleanProperty[] properties = new BooleanProperty[] { EcmascriptParserOptions.RECORDING_COMMENTS_DESCRIPTOR, EcmascriptParserOptions.RECORDING_LOCAL_JSDOC_COMMENTS_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); } EcmascriptParserOptions options1 = new EcmascriptParserOptions(); options1.setSuppressMarker("foo"); EcmascriptParserOptions options2 = new EcmascriptParserOptions(); options2.setSuppressMarker("bar"); EcmascriptParserOptions options3 = new EcmascriptParserOptions(); options3.setSuppressMarker("foo"); EcmascriptParserOptions options4 = new EcmascriptParserOptions(); options4.setSuppressMarker("bar"); verifyOptionsEqualsHashcode(options1, options2, options3, options4); options1 = new EcmascriptParserOptions(); options1.setRhinoLanguageVersion(EcmascriptParserOptions.Version.VERSION_DEFAULT); options2 = new EcmascriptParserOptions(); options2.setRhinoLanguageVersion(EcmascriptParserOptions.Version.VERSION_1_8); options3 = new EcmascriptParserOptions(); options3.setRhinoLanguageVersion(EcmascriptParserOptions.Version.VERSION_DEFAULT); options4 = new EcmascriptParserOptions(); options4.setRhinoLanguageVersion(EcmascriptParserOptions.Version.VERSION_1_8); verifyOptionsEqualsHashcode(options1, options2, options3, options4); } private static final class MyRule extends AbstractEcmascriptRule { } public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(EcmascriptParserOptionsTest.class); } }