| package org.junit.tests; |
| |
| import static org.hamcrest.CoreMatchers.is; |
| import static org.hamcrest.MatcherAssert.assertThat; |
| import static org.junit.Assume.assumeNotNull; |
| import static org.junit.Assume.assumeThat; |
| |
| import java.lang.reflect.Method; |
| |
| import org.junit.Test; |
| import org.junit.Test.None; |
| import org.junit.experimental.theories.DataPoints; |
| import org.junit.experimental.theories.Theories; |
| import org.junit.experimental.theories.Theory; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.model.FrameworkMethod; |
| |
| @RunWith(Theories.class) |
| public class ObjectContractTest { |
| @DataPoints |
| public static Object[] objects = {new FrameworkMethod(toStringMethod()), |
| new FrameworkMethod(toStringMethod()), 3, null}; |
| |
| @Theory |
| @Test(expected = None.class) |
| public void equalsThrowsNoException(Object a, Object b) { |
| assumeNotNull(a); |
| a.equals(b); |
| } |
| |
| @Theory |
| public void equalsMeansEqualHashCodes(Object a, Object b) { |
| assumeNotNull(a, b); |
| assumeThat(a, is(b)); |
| assertThat(a.hashCode(), is(b.hashCode())); |
| } |
| |
| private static Method toStringMethod() { |
| try { |
| return Object.class.getMethod("toString"); |
| } catch (SecurityException e) { |
| } catch (NoSuchMethodException e) { |
| } |
| return null; |
| } |
| } |