package net.bytebuddy.implementation.bytecode;
import net.bytebuddy.test.utility.ObjectPropertyAssertion;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
public class StackManipulationSizeTest {
@Test
public void testSizeGrowth() throws Exception {
StackManipulation.Size first = new StackManipulation.Size(2, 5);
StackManipulation.Size second = new StackManipulation.Size(1, 1);
StackManipulation.Size merged = first.aggregate(second);
assertThat(merged.getSizeImpact(), is(3));
assertThat(merged.getMaximalSize(), is(5));
}
@Test
public void testSizeReduction() throws Exception {
StackManipulation.Size first = new StackManipulation.Size(-3, 0);
StackManipulation.Size second = new StackManipulation.Size(-2, 0);
StackManipulation.Size merged = first.aggregate(second);
assertThat(merged.getSizeImpact(), is(-5));
assertThat(merged.getMaximalSize(), is(0));
}
@Test
public void testSizeGrowthAndReduction() throws Exception {
StackManipulation.Size first = new StackManipulation.Size(3, 4);
StackManipulation.Size second = new StackManipulation.Size(-5, 1);
StackManipulation.Size merged = first.aggregate(second);
assertThat(merged.getSizeImpact(), is(-2));
assertThat(merged.getMaximalSize(), is(4));
}
@Test
public void testObjectProperties() throws Exception {
ObjectPropertyAssertion.of(StackManipulation.Size.class).apply();
}
}