package org.drooms.impl;
import org.assertj.core.api.Assertions;
import org.drooms.api.Edge;
import org.drooms.api.Node;
import org.junit.Test;
public class DefaultEdgeTest {
private static class NodeImpl implements Node {
private final int x, y;
public NodeImpl(final int x, final int y) {
this.x = x;
this.y = y;
}
@Override
public Type getType() {
return Type.REGULAR;
}
@Override
public int getX() {
return this.x;
}
@Override
public int getY() {
return this.y;
}
}
private final Node leastNode = new NodeImpl(10, 20);
private final Node largerNode = new NodeImpl(11, 20);
private final Node largestNode = new NodeImpl(9, 21);
@Test(expected = IllegalArgumentException.class)
public void testEdgeSame() {
new DefaultEdge(this.leastNode, this.leastNode);
}
@Test
public void testEqualsObject() {
final Edge e1 = new DefaultEdge(this.leastNode, this.largerNode);
final Edge e2 = new DefaultEdge(this.largerNode, this.leastNode);
Assertions.assertThat(e2).isEqualTo(e1);
}
@Test
public void testNotEqualsObject() {
final Edge e1 = new DefaultEdge(this.leastNode, this.largerNode);
final Edge e2 = new DefaultEdge(this.largerNode, this.largestNode);
Assertions.assertThat(e2).isNotEqualTo(e1);
}
@Test
public void testOrdering1() {
final Edge e1 = new DefaultEdge(this.leastNode, this.largerNode);
Assertions.assertThat(e1.getFirstNode()).isSameAs(this.leastNode);
Assertions.assertThat(e1.getSecondNode()).isSameAs(this.largerNode);
}
@Test
public void testOrdering2() {
final Edge e1 = new DefaultEdge(this.largerNode, this.leastNode);
Assertions.assertThat(e1.getFirstNode()).isSameAs(this.leastNode);
Assertions.assertThat(e1.getSecondNode()).isSameAs(this.largerNode);
}
@Test
public void testOrdering3() {
final Edge e1 = new DefaultEdge(this.leastNode, this.largestNode);
Assertions.assertThat(e1.getFirstNode()).isSameAs(this.leastNode);
Assertions.assertThat(e1.getSecondNode()).isSameAs(this.largestNode);
}
@Test
public void testOrdering4() {
final Edge e1 = new DefaultEdge(this.largestNode, this.leastNode);
Assertions.assertThat(e1.getFirstNode()).isSameAs(this.leastNode);
Assertions.assertThat(e1.getSecondNode()).isSameAs(this.largestNode);
}
@Test
public void testOrdering5() {
final Edge e1 = new DefaultEdge(this.largerNode, this.largestNode);
Assertions.assertThat(e1.getFirstNode()).isSameAs(this.largerNode);
Assertions.assertThat(e1.getSecondNode()).isSameAs(this.largestNode);
}
@Test
public void testOrdering6() {
final Edge e1 = new DefaultEdge(this.largestNode, this.largerNode);
Assertions.assertThat(e1.getFirstNode()).isSameAs(this.largerNode);
Assertions.assertThat(e1.getSecondNode()).isSameAs(this.largestNode);
}
}