package net.bytebuddy.dynamic.scaffold; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.test.utility.MockitoRule; import net.bytebuddy.test.utility.ObjectPropertyAssertion; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.mockito.Mock; import java.util.Collections; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class MethodGraphCompilerDefaultHarmonizerForJavaMethodTest { private static final String FOO = "foo", BAR = "bar"; private static final int MODIFIERS = 42; @Rule public TestRule mockitoRule = new MockitoRule(this); @Mock private TypeDescription first, second; private MethodGraph.Compiler.Default.Harmonizer<MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.Token> harmonizer; @Before public void setUp() throws Exception { harmonizer = MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.INSTANCE; } @Test public void testMethodEqualityHashCode() throws Exception { assertThat(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))).hashCode(), is(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))).hashCode())); } @Test public void testMethodEquality() throws Exception { assertThat(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))), is(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))))); } @Test public void testMethodReturnTypeInequalityHashCode() throws Exception { assertThat(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))).hashCode(), is(harmonizer.harmonize(new MethodDescription.TypeToken(second, Collections.singletonList(first))).hashCode())); } @Test public void testMethodReturnTypeInequality() throws Exception { assertThat(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))), is(harmonizer.harmonize(new MethodDescription.TypeToken(second, Collections.singletonList(first))))); } @Test public void testMethodParameterTypesHashCode() throws Exception { assertThat(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))).hashCode(), not(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(second))).hashCode())); } @Test public void testMethodParameterTypesEquality() throws Exception { assertThat(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(first))), not(harmonizer.harmonize(new MethodDescription.TypeToken(first, Collections.singletonList(second))))); } @Test public void testFactory() throws Exception { assertThat(MethodGraph.Compiler.Default.forJavaHierarchy(), is((MethodGraph.Compiler) new MethodGraph.Compiler .Default<MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.Token>(MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.INSTANCE, MethodGraph.Compiler.Default.Merger.Directional.LEFT, TypeDescription.Generic.Visitor.Reifying.INITIATING))); } @Test public void testObjectProperties() throws Exception { ObjectPropertyAssertion.of(MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.class).apply(); } }