Package ngs.architecture

Source Code of ngs.architecture.ALRTest$TestALR

package ngs.architecture;

import ngs.architecture.TestNode;
import ngs.*;

import java.awt.*;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import junit.framework.JUnit4TestAdapter;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;

public class ALRTest
{
  private ALR alr = null;

  private class TestALR extends ALR
  {
    /**
     * Constructor with no topology.
     */
    public TestALR()
    {
      super(null);
    }

    /**
     * Constructor with topology.
     *
     * @param topology network topology.
     */
    public TestALR(final Topology topology)
    {
      super(topology);
    }
   
    public void sendMessage(final Node receiver,
                final Message message) throws Exception
    {
      super.sendMessage(receiver, message);
    }
  };

  /**
   * A node where you can specify the id.
   */
  private class TestIDNode extends TestNode
  {
    private final int id;

    public TestIDNode(final int id)
    {
      super();
      this.id = id;
    }

    public int getID()
    {
      return id;
    }
  }

  public void setALR(final ALR alr)
  {
    this.alr = alr;
  }

  @Test public void sendMessage() throws Exception
  {
    //if the alr has not been initialised set it up
    if (alr == null)
    {
      //create an anonymous class that extends ALR
      alr = new TestALR();
    }
    //create an anonymous node class
    TestNode receiver = new TestNode();
    TestNode sender = new TestNode();
    GameStateMessage m = new GameStateMessage(0, 0.0, sender, 0, 0);
    alr.sendMessage(receiver, m);
    //check that it is the same message
    GameStateMessage r = (GameStateMessage)receiver.getMessage();
    assertTrue(r == m);
    //check that the sender is the same
    assertEquals(sender, r.getSender());
    //check that the delay was increased
    assertEquals(1, r.getDelay());
    //repeat
    alr.sendMessage(receiver, m);
    r = (GameStateMessage)receiver.getMessage();
    assertTrue(r == m);
    assertEquals(2, r.getDelay());
  }

  @Test public void simpleTopology() throws Exception
  {
    //create an anonymous class that extends ALR
    alr = new TestALR(Topology.create("topologies/testTopology.ser"));
    //create an anonymous node class
    TestIDNode receiver = new TestIDNode(0);
    TestIDNode sender = new TestIDNode(1);
    GameStateMessage m = new GameStateMessage(0, 0.0, sender, 0, 0);
    alr.sendMessage(receiver, m);
    //check that it is the same message
    GameStateMessage r = (GameStateMessage)receiver.getMessage();
    assertTrue(r == m);
    //check that the sender is the same
    assertEquals(sender, r.getSender());
    //check that the delay was increased
    assertEquals(60, r.getDelay());
    //repeat
    alr.sendMessage(receiver, m);
    r = (GameStateMessage)receiver.getMessage();
    assertTrue(r == m);
    assertEquals(120, r.getDelay());
  }

  @Test public void simpleTopologyAgain() throws Exception
  {
    //create an anonymous class that extends ALR
    alr = new TestALR(Topology.create("topologies/testTopology.ser"));
    //create an anonymous node class
    TestIDNode n[] = new TestIDNode[10];
    for (int i=0; i<n.length; i++)
    {
      n[i] = new TestIDNode(i);
    }
    //send messages to/from the first node
    for (int i=1; i<n.length; i++)
    {
      GameStateMessage m = new GameStateMessage(0, 0.0, n[i], 100, 0);
      alr.sendMessage(n[0], m);
      m = new GameStateMessage(0, 0.0, n[0], 200, 0);
      alr.sendMessage(n[i], m);
    }
    //check the messages received by the server
    assertEquals(160, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(460, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(310, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(160, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(100, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(160, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(460, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(310, ((GameStateMessage)n[0].getMessage()).getDelay());
    assertEquals(160, ((GameStateMessage)n[0].getMessage()).getDelay());
    //check the messages receved by the nodes
    assertEquals(260, ((GameStateMessage)n[1].getMessage()).getDelay());
    assertEquals(560, ((GameStateMessage)n[2].getMessage()).getDelay());
    assertEquals(410, ((GameStateMessage)n[3].getMessage()).getDelay());
    assertEquals(260, ((GameStateMessage)n[4].getMessage()).getDelay());
    assertEquals(200, ((GameStateMessage)n[5].getMessage()).getDelay());
    assertEquals(260, ((GameStateMessage)n[6].getMessage()).getDelay());
    assertEquals(560, ((GameStateMessage)n[7].getMessage()).getDelay());
    assertEquals(410, ((GameStateMessage)n[8].getMessage()).getDelay());
    assertEquals(260, ((GameStateMessage)n[9].getMessage()).getDelay());
  }

  public static junit.framework.Test suite()
  {
    return new JUnit4TestAdapter(ALRTest.class);
  }
}
TOP

Related Classes of ngs.architecture.ALRTest$TestALR

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.