blob: 541a25b94a59d9af54d34d066ae8db47e418fc58 [file] [log] [blame]
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;
}
}