Package rinde.sim.core.model.road

Source Code of rinde.sim.core.model.road.PointsEquality

package rinde.sim.core.model.road;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import rinde.sim.core.graph.Connection;
import rinde.sim.core.graph.ConnectionData;
import rinde.sim.core.graph.Graph;
import rinde.sim.core.graph.LengthData;
import rinde.sim.core.graph.Point;
import rinde.sim.core.graph.TestMultimapGraph;
import rinde.sim.core.graph.TestTableGraph;

/**
* Test whether points are value objects
* @author Bartosz Michalik <bartosz.michalik@cs.kuleuven.be>
*
*/

@RunWith(Parameterized.class)
public class PointsEquality {

  @Parameters
  public static Collection<Object[]> configs() {
    return Arrays.asList(new Object[][] { { new TestMultimapGraph() }, { new TestTableGraph() } });
  }

  private final Graph<LengthData> graph;

  public PointsEquality(Graph<LengthData> g) {
    graph = g;
  }

  @Test
  public void pointsEqual() {
    Point p1 = new Point(0.1, 0.2);
    Point p2 = new Point(0.1, 0.2);
    assertEquals(p1, p1);
    assertEquals(p2, p2);
    assertEquals(p1, p2);

    assertEquals(p1, Point.duplicate(p1));
    assertEquals(p1, Point.duplicate(p2));
  }

  @Test
  public void midPointsEqual() {
    GraphRoadModel.Loc p1 = GraphRoadModel.newLoc(new Point(0.2, 10000));
    Connection<?> conn = new Connection<ConnectionData>(new Point(0.2, 10000), new Point(0.2, 10000), null);
    GraphRoadModel.Loc p2 = GraphRoadModel.newLoc(conn, 10);

    assertEquals(p1, p1);
    assertEquals(p2, p2);
    assertEquals(p1, p2);
    assertEquals(p1, Point.duplicate(p1));
    assertEquals(p1, Point.duplicate(p2));
  }

  @Test
  public void mixedPointsEqual() {
    Point p1 = new Point(5, 0.20101);
    GraphRoadModel.Loc p2 = GraphRoadModel.newLoc(new Point(5, 0.20101));

    assertEquals(p1, p1);
    assertEquals(p2, p2);
    assertEquals(p1, p2);

    assertEquals(p1, Point.duplicate(p1));
    assertEquals(p1, Point.duplicate(p2));
  }

  /**
   * Check consistency wrt. handling value objects
   */
  @Test
  public void graphDataConsistency() {
    Point A, B, C, D;
    A = new Point(0, 0);
    B = new Point(0, 13);
    C = new Point(13, 17);
    D = new Point(17, 0);

    graph.addConnection(A, B);
    graph.addConnection(B, C);
    graph.addConnection(B, D);

    checkAssertions(A, B, C, D);

    // check if for other objects
    Point Aa, Bb;
    Aa = new Point(0, 0);
    Bb = Point.duplicate(B);

    GraphRoadModel.Loc Cc = GraphRoadModel.newLoc(new Point(13, 17));
    GraphRoadModel.Loc Dd = GraphRoadModel.newLoc(graph.getConnection(B, D), 100);

    checkAssertions(Aa, Bb, C, D);
    checkAssertions(A, B, Cc, Dd);
    checkAssertions(Aa, Bb, Cc, Dd);
  }

  private void checkAssertions(Point A, Point B, Point C, Point D) {
    // contain nodes
    assertTrue("contains A", graph.containsNode(A));
    assertTrue("contains B", graph.containsNode(B));
    assertTrue("contains C", graph.containsNode(C));
    assertTrue("contains D", graph.containsNode(D));

    assertTrue("connection A->B", graph.hasConnection(A, B));
    assertTrue("connection B->C", graph.hasConnection(B, C));
    assertTrue("connection B->D", graph.hasConnection(B, D));

    assertFalse("!connection B->A", graph.hasConnection(B, A));
    assertFalse("!connection C->B", graph.hasConnection(A, C));
    assertFalse("!connection D->B", graph.hasConnection(A, D));
    assertFalse("!connection A->C", graph.hasConnection(A, C));
    assertFalse("!connection A->D", graph.hasConnection(A, D));
  }

  @Test
  public void testNaN() {
    // assertTrue(Double.NaN == Double.NaN);
    assertTrue(Double.compare(Double.NaN, Double.NaN) == 0);
  }

}
TOP

Related Classes of rinde.sim.core.model.road.PointsEquality

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.