package net.bytebuddy.agent.builder;
import net.bytebuddy.test.utility.ObjectPropertyAssertion;
import org.junit.Test;
import java.lang.instrument.Instrumentation;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class AgentBuilderRedefinitionStrategyTest {
@Test
public void testDisabledRedefinitionStrategyIsDisabled() throws Exception {
assertThat(AgentBuilder.RedefinitionStrategy.DISABLED.isEnabled(), is(false));
}
@Test
public void testRetransformationStrategyIsEnabled() throws Exception {
assertThat(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION.isEnabled(), is(true));
}
@Test
public void testRedefinitionStrategyIsEnabled() throws Exception {
assertThat(AgentBuilder.RedefinitionStrategy.REDEFINITION.isEnabled(), is(true));
}
@Test
public void testDisabledRedefinitionStrategyIsRetransforming() throws Exception {
assertThat(AgentBuilder.RedefinitionStrategy.DISABLED.isRetransforming(), is(false));
}
@Test
public void testRetransformationStrategyIsRetransforming() throws Exception {
assertThat(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION.isRetransforming(), is(true));
}
@Test
public void testRedefinitionStrategyIsRetransforming() throws Exception {
assertThat(AgentBuilder.RedefinitionStrategy.REDEFINITION.isRetransforming(), is(false));
}
@Test(expected = IllegalStateException.class)
public void testDisabledRedefinitionStrategyIsNotChecked() throws Exception {
AgentBuilder.RedefinitionStrategy.DISABLED.check(mock(Instrumentation.class));
}
@Test
public void testRetransformationStrategyIsChecked() throws Exception {
Instrumentation instrumentation = mock(Instrumentation.class);
when(instrumentation.isRetransformClassesSupported()).thenReturn(true);
AgentBuilder.RedefinitionStrategy.RETRANSFORMATION.check(instrumentation);
}
@Test(expected = IllegalStateException.class)
public void testRetransformationStrategyNotSupportedThrowsException() throws Exception {
AgentBuilder.RedefinitionStrategy.RETRANSFORMATION.check(mock(Instrumentation.class));
}
@Test
public void testRedefinitionStrategyIsChecked() throws Exception {
Instrumentation instrumentation = mock(Instrumentation.class);
when(instrumentation.isRedefineClassesSupported()).thenReturn(true);
AgentBuilder.RedefinitionStrategy.REDEFINITION.check(instrumentation);
}
@Test(expected = IllegalStateException.class)
public void testRedefinitionStrategyNotSupportedThrowsException() throws Exception {
AgentBuilder.RedefinitionStrategy.REDEFINITION.check(mock(Instrumentation.class));
}
@Test
public void testObjectProperties() throws Exception {
ObjectPropertyAssertion.of(AgentBuilder.RedefinitionStrategy.class).apply();
}
}