package org.skywalking.apm.agent.core.plugin.bytebuddy;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.method.ParameterDescription;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import static org.mockito.Mockito.when;
/**
* @author wusheng
*/
public class ArgumentTypeNameMatchTest {
@Test
public void testMatches() throws IllegalAccessException {
MethodDescription methodDescription = Mockito.mock(MethodDescription.class, Mockito.RETURNS_DEEP_STUBS);
ParameterDescription parameterDescription = Mockito.mock(ParameterDescription.class, Mockito.RETURNS_DEEP_STUBS);
when(methodDescription.getParameters().get(0)).thenReturn(parameterDescription);
when(methodDescription.getParameters().size()).thenReturn(1);
when(parameterDescription.getType().asErasure().getName()).thenReturn("org.skywalking.TestClass");
ArgumentTypeNameMatch matcher = ((ArgumentTypeNameMatch) ArgumentTypeNameMatch.takesArgumentWithType(0, "org.skywalking.TestClass"));
Assert.assertTrue(matcher.matches(methodDescription));
ArgumentTypeNameMatch matcher2 = ((ArgumentTypeNameMatch) ArgumentTypeNameMatch.takesArgumentWithType(0, "org.skywalking.TestClass2"));
Assert.assertFalse(matcher2.matches(methodDescription));
}
@Test
public void testMatchesWithNoParameters() {
MethodDescription methodDescription = Mockito.mock(MethodDescription.class, Mockito.RETURNS_DEEP_STUBS);
ParameterDescription parameterDescription = Mockito.mock(ParameterDescription.class, Mockito.RETURNS_DEEP_STUBS);
when(methodDescription.getParameters().size()).thenReturn(0);
ArgumentTypeNameMatch matcher2 = ((ArgumentTypeNameMatch) ArgumentTypeNameMatch.takesArgumentWithType(0, "org.skywalking.TestClass"));
Assert.assertFalse(matcher2.matches(methodDescription));
}
}