package rocks.inspectit.shared.all.communication.data; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import org.testng.annotations.Test; /** * Tests that functionality in the {@link InvocationAwareData} is correct. * * @author Ivan Senic * */ @SuppressWarnings("PMD") public class InvocationAwareDataTest { /** * Tests the simple aggregation when objects are in different invocations. */ @Test public void simpleDifferentParentsAggregation() { InvocationAwareData i1 = getInvocationAwareData(); i1.addInvocationParentId(Long.valueOf(1)); InvocationAwareData i2 = getInvocationAwareData(); i2.addInvocationParentId(Long.valueOf(2)); i1.aggregateInvocationAwareData(i2); assertThat(i1.getObjectsInInvocationsCount(), is(equalTo(2))); assertThat(i1.getInvocationParentsIdSet().size(), is(equalTo(2))); assertThat(i1.getInvocationParentsIdSet(), contains(1L, 2L)); } /** * Tests the simple aggregation when objects are in same invocations. */ @Test public void simpleSameParentsAggregation() { InvocationAwareData i1 = getInvocationAwareData(); i1.addInvocationParentId(Long.valueOf(1)); InvocationAwareData i2 = getInvocationAwareData(); i2.addInvocationParentId(Long.valueOf(1)); i1.aggregateInvocationAwareData(i2); assertThat(i1.getObjectsInInvocationsCount(), is(equalTo(2))); assertThat(i1.getInvocationParentsIdSet().size(), is(equalTo(1))); assertThat(i1.getInvocationParentsIdSet(), contains(1L)); } /** * Tests the complicated aggregation when objects are in different invocations. */ @Test public void complicatedDifferentParentsAggregation() { InvocationAwareData i1 = getInvocationAwareData(); i1.addInvocationParentId(Long.valueOf(1)); InvocationAwareData i2 = getInvocationAwareData(); i2.addInvocationParentId(Long.valueOf(2)); i1.aggregateInvocationAwareData(i2); InvocationAwareData i3 = getInvocationAwareData(); i3.addInvocationParentId(Long.valueOf(3)); InvocationAwareData i4 = getInvocationAwareData(); i4.addInvocationParentId(Long.valueOf(4)); i3.aggregateInvocationAwareData(i4); i1.aggregateInvocationAwareData(i3); assertThat(i1.getObjectsInInvocationsCount(), is(equalTo(4))); assertThat(i1.getInvocationParentsIdSet().size(), is(equalTo(4))); assertThat(i1.getInvocationParentsIdSet(), contains(1L, 2L, 3L, 4L)); } /** * Tests the complicated aggregation when objects are in same invocations. */ @Test public void complicatedSameParentsAggregation() { InvocationAwareData i1 = getInvocationAwareData(); i1.addInvocationParentId(Long.valueOf(1)); InvocationAwareData i2 = getInvocationAwareData(); i2.addInvocationParentId(Long.valueOf(2)); i1.aggregateInvocationAwareData(i2); InvocationAwareData i3 = getInvocationAwareData(); i3.addInvocationParentId(Long.valueOf(1)); InvocationAwareData i4 = getInvocationAwareData(); i4.addInvocationParentId(Long.valueOf(2)); i3.aggregateInvocationAwareData(i4); i1.aggregateInvocationAwareData(i3); assertThat(i1.getObjectsInInvocationsCount(), is(equalTo(4))); assertThat(i1.getInvocationParentsIdSet().size(), is(equalTo(2))); assertThat(i1.getInvocationParentsIdSet(), contains(1L, 2L)); } /** * Gets the instance of the abstract class {@link InvocationAwareData}. * * @return Gets the instance of the abstract class {@link InvocationAwareData}. */ private InvocationAwareData getInvocationAwareData() { return new InvocationAwareData() { /** * Generated UID. */ private static final long serialVersionUID = 8228055838391889943L; @Override public double getInvocationAffiliationPercentage() { return 0; } }; } }