package dslab.protocol; import dslab.protocol.dmtp.SingleDomainMessage; import dslab.routing.Address; import org.junit.Test; import static dslab.TestObjects.*; import static dslab.protocol.MessageBuilder.aMessage; import static org.hamcrest.CoreMatchers.hasItems; import static org.junit.Assert.assertThat; public class SingleDomainMessageTest { @Test public void shouldAcceptMultipleRecipientsFromSameDomain() { new SingleDomainMessage(aMessage().recipients(trillianAtEarthPlanet, arthurAtEarthPlanet).build()); } @Test(expected = IllegalArgumentException.class) public void shouldRejectRecipientsFromDifferentDomains() { new SingleDomainMessage(aMessage().recipients(trillianAtEarthPlanet, zaphodAtUniverZe).build()); } @Test public void shouldSplitRegularMessageIntoMultipleSingleDomainMessages() { var result = SingleDomainMessage.split( messageTo(trillianAtEarthPlanet, arthurAtEarthPlanet, zaphodAtUniverZe)); assertThat(result, hasItems( singleDomainMessageTo(trillianAtEarthPlanet, arthurAtEarthPlanet), singleDomainMessageTo(zaphodAtUniverZe))); } private SingleDomainMessage singleDomainMessageTo(Address... recipients) { return new SingleDomainMessage(aMessage().recipients(recipients).build()); } private Message messageTo(Address...recipients){ return aMessage().recipients(recipients).build(); } }