package org.springframework.roo.shell; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.lang.reflect.Method; import org.junit.Test; /** * Unit test of {@link MethodTarget} * * @author Andrew Swan * @since 1.2.0 */ public class MethodTargetTest { private static final Object TARGET_1 = new CommandMarker() {}; private static final Object TARGET_2 = new CommandMarker() {}; private static final Method METHOD_1 = TARGET_1.getClass().getMethods()[0]; // Unmockable private static final Method METHOD_2 = TARGET_2.getClass().getMethods()[1]; // Unmockable @Test public void testInstanceDoesNotEqualNull() { assertFalse(new MethodTarget(METHOD_1, TARGET_1).equals(null)); } @Test public void testInstanceEqualsItself() { final MethodTarget instance = new MethodTarget(METHOD_1, TARGET_1); assertEquals(instance, instance); } @Test public void testInstancesWithDifferentMethodAreNotEqual() { assertFalse(new MethodTarget(METHOD_1, TARGET_1).equals(new MethodTarget(METHOD_2, TARGET_1))); } @Test public void testInstancesWithDifferentTargetAreNotEqual() { assertFalse(new MethodTarget(METHOD_1, TARGET_1).equals(new MethodTarget(METHOD_1, TARGET_2))); } @Test public void testInstancesWithSameMethodAndTargetAreEqualAndHaveSameHashCode() { final MethodTarget instance1 = new MethodTarget(METHOD_1, TARGET_1, "the-buff", "the-key"); final MethodTarget instance2 = new MethodTarget(METHOD_1, TARGET_1); assertEquals(instance1, instance2); assertEquals(instance1.hashCode(), instance2.hashCode()); } }