}
@Test
public void testIntersect() {
RMAssertion rma = new RMAssertion();
RMConfiguration cfg0 = new RMConfiguration();
assertTrue(RMPolicyUtilities.equals(cfg0, RMPolicyUtilities.intersect(rma, cfg0)));
InactivityTimeout aiat = new RMAssertion.InactivityTimeout();
aiat.setMilliseconds(new Long(7200000));
rma.setInactivityTimeout(aiat);
cfg0.setInactivityTimeout(new Long(3600000));
RMConfiguration cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
assertNull(cfg1.getBaseRetransmissionInterval());
assertNull(cfg1.getAcknowledgementInterval());
assertFalse(cfg1.isExponentialBackoff());
BaseRetransmissionInterval abri = new RMAssertion.BaseRetransmissionInterval();
abri.setMilliseconds(new Long(20000));
rma.setBaseRetransmissionInterval(abri);
cfg0.setBaseRetransmissionInterval(new Long(10000));
cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
assertEquals(20000L, cfg1.getBaseRetransmissionInterval().longValue());
assertNull(cfg1.getAcknowledgementInterval());
assertFalse(cfg1.isExponentialBackoff());
AcknowledgementInterval aai = new RMAssertion.AcknowledgementInterval();
aai.setMilliseconds(new Long(2000));
rma.setAcknowledgementInterval(aai);
cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
assertEquals(20000L, cfg1.getBaseRetransmissionInterval().longValue());
assertEquals(2000L, cfg1.getAcknowledgementInterval().longValue());
assertFalse(cfg1.isExponentialBackoff());
cfg0.setExponentialBackoff(true);
cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
assertEquals(20000L, cfg1.getBaseRetransmissionInterval().longValue());
assertEquals(2000L, cfg1.getAcknowledgementInterval().longValue());
assertTrue(cfg1.isExponentialBackoff());
}