DS-Lab / src / test / java / dslab / protocol / SingleDomainMessageTest.java
SingleDomainMessageTest.java
Raw
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();
    }
}