/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang; import org.junit.Assert; import org.junit.Test; /** * Unit tests for {@link ParserOptions}. */ public class ParserOptionsTest { /** * SuppressMarker should be initially null and changeable. */ @Test public void testSuppressMarker() { ParserOptions parserOptions = new ParserOptions(); Assert.assertNull(parserOptions.getSuppressMarker()); parserOptions.setSuppressMarker("foo"); Assert.assertEquals("foo", parserOptions.getSuppressMarker()); } /** * Verify that the equals and hashCode methods work as expected. */ @Test public void testEqualsHashcode() { ParserOptions options1 = new ParserOptions(); options1.setSuppressMarker("foo"); ParserOptions options2 = new ParserOptions(); options2.setSuppressMarker("bar"); ParserOptions options3 = new ParserOptions(); options3.setSuppressMarker("foo"); ParserOptions options4 = new ParserOptions(); options4.setSuppressMarker("bar"); verifyOptionsEqualsHashcode(options1, options2, options3, options4); } /** * Verify equals and hashCode for 4 {@link ParserOptions} instances. The * given options should be as follows: 1 and 3 are equals, as are 2 and 4. * * @param options1 * first option instance - equals third * @param options2 * second option instance - equals fourth * @param options3 * third option instance - equals first * @param options4 * fourth option instance - equals second */ public static void verifyOptionsEqualsHashcode(ParserOptions options1, ParserOptions options2, ParserOptions options3, ParserOptions options4) { // Objects should be different Assert.assertNotSame(options1, options2); Assert.assertNotSame(options1, options2); Assert.assertNotSame(options1, options3); Assert.assertNotSame(options2, options3); Assert.assertNotSame(options2, options4); Assert.assertNotSame(options3, options4); // Check all 16 equality combinations Assert.assertEquals(options1, options1); Assert.assertFalse(options1.equals(options2)); Assert.assertEquals(options1, options3); Assert.assertFalse(options1.equals(options4)); Assert.assertFalse(options2.equals(options1)); Assert.assertEquals(options2, options2); Assert.assertFalse(options2.equals(options3)); Assert.assertEquals(options2, options4); Assert.assertEquals(options3, options1); Assert.assertFalse(options3.equals(options2)); Assert.assertEquals(options3, options3); Assert.assertFalse(options3.equals(options4)); Assert.assertFalse(options4.equals(options1)); Assert.assertEquals(options4, options2); Assert.assertFalse(options4.equals(options3)); Assert.assertEquals(options4, options4); // Hashcodes should match up Assert.assertNotEquals(options1.hashCode(), options2.hashCode()); Assert.assertEquals(options1.hashCode(), options3.hashCode()); Assert.assertNotEquals(options1.hashCode(), options4.hashCode()); Assert.assertNotEquals(options2.hashCode(), options3.hashCode()); Assert.assertEquals(options2.hashCode(), options4.hashCode()); Assert.assertNotEquals(options3.hashCode(), options4.hashCode()); } }