PathTest.java

package org.graphstream.graph.implementations;

import static org.junit.Assert.*;

import java.util.Iterator;
import java.util.List;

import org.graphstream.graph.Node;
import org.graphstream.graph.Path;
import org.junit.Test;

public class PathTest {
	
	//TC-P_C01
	@Test
	public void emptyPathTest() {
		SingleGraph sg = new SingleGraph("single");
		Path path = new Path();
		boolean isEmpty = path.empty();
		assertTrue(isEmpty);
	}
	
	//TC-P_C02
	@Test
	public void rootPathSetRootMethodTest() {
		SingleGraph sg = new SingleGraph("single");
		Path path = new Path();
		
		sg.addNode("node1");
		
		AbstractNode node1 = sg.getNode("node1");
		
		path.setRoot(node1);
		
		assertEquals(node1, path.getRoot());
	}
	
	//TC-P_C03
	@Test
	public void rootPathAddMethodTest() {
		SingleGraph sg = new SingleGraph("single");
		Path path = new Path();
		
		sg.addNode("node1");
		sg.addNode("node2");
		
		AbstractNode node1 = sg.getNode("node1");
		AbstractNode node2 = sg.getNode("node2");
		
		AbstractEdge edge1 = new AbstractEdge("edge_1", node1, node2, true);
		
		path.add(node1, edge1);
		
		assertEquals(node1, path.getRoot());
	}
	
	//TC-P_C04
	@Test
	public void circularPathTest() {
		SingleGraph sg = new SingleGraph("single");
		Path path = new Path();
		
		sg.addNode("node1");
		sg.addNode("node2");
		sg.addNode("node3");
		
		AbstractNode node1 = sg.getNode("node1");
		AbstractNode node2 = sg.getNode("node2");
		AbstractNode node3 = sg.getNode("node3");
		
		AbstractEdge edge1 = new AbstractEdge("edge_1", node1, node2, true);
		AbstractEdge edge2 = new AbstractEdge("edge_2", node2, node3, true);
		AbstractEdge edge3 = new AbstractEdge("edge_3", node3, node1, true);
		
		path.setRoot(node1);
		
		path.add(node1, edge1);
		path.add(node2, edge2);
		path.add(node3, edge3);
		
		List<Node> nodes = path.getNodePath();
		
		int size = path.size();
		Node lastNode = nodes.get(size-1);
		
		assertEquals(path.getRoot(), lastNode);
		
	}
	
	//TC-P_C05
	@Test
	public void removeLoopsTest() {
		SingleGraph sg = new SingleGraph("single");
		Path path = new Path();
		
		sg.addNode("node1");
		sg.addNode("node2");
		sg.addNode("node3");
		
		AbstractNode node1 = sg.getNode("node1");
		AbstractNode node2 = sg.getNode("node2");
		AbstractNode node3 = sg.getNode("node3");
		
		AbstractEdge edge1 = new AbstractEdge("edge_1", node1, node2, true);
		AbstractEdge edge2 = new AbstractEdge("edge_2", node2, node3, true);
		AbstractEdge edge3 = new AbstractEdge("edge_3", node3, node3, true);
		
		path.setRoot(node1);
		
		path.add(node1, edge1);
		path.add(node2, edge2);
		path.add(node3, edge3);
		
		path.removeLoops();
		assertFalse(path.contains(edge3));
		
	}

}