CategoryPartitionAddEdgeMultiGraph.java

package org.graphstream.graph.implementations;

import static org.junit.Assert.*;

import java.util.Random;

import org.databene.benerator.anno.Source;
import org.databene.feed4junit.Feeder;
import org.graphstream.graph.Edge;
import org.graphstream.graph.IdAlreadyInUseException;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;

@RunWith(Feeder.class)
public class CategoryPartitionAddEdgeMultiGraph {

	
	// idExistance,idValue,graphNrNodes,graphStrictChecking,
	// graphNrEdges,graphAutoCreate,sourceEx
	
	@Rule
	public ExpectedException exception = ExpectedException.none();
	
	@Test(expected=IdAlreadyInUseException.class)
	@Source("csvFiles/MultigraphAddEdge/CategoryPartitionAddEdge01.csv")
	public void strtCheckingException(Boolean idExistance, String idValue, String nrNodes,
									   Boolean strictChecking, String nrEdges, Boolean autoCreate,
									   Boolean sourceEx, Boolean sourceEqTarget, 
									   Boolean sourceConnToTarget, Boolean targetExistance) {
		MultiGraph mg = new MultiGraph("myGraph", strictChecking, autoCreate);
		int numOfNodes = 10;
		for (int i = 0; i < numOfNodes; i++) {
			mg.addNode("node"+i);
		}
		mg.addEdge("e1", "node1", "node2");
		mg.addEdge("e2", "node3", "node4");
		mg.addEdge("e3", "node2", "node4");
		mg.addEdge("e4", "node3", "node5");
		mg.addEdge("e5", "node2", "node1");
		//add an edge with existing id
		mg.addEdge("e1", "node1", "node6");
	}
	
	@Test
	@Source("csvFiles/MultigraphAddEdge/CategoryPartitionAddEdge02.csv")
	public void strtCheckNullCreation(Boolean idExistance, String idValue, String nrNodes,
			   Boolean strictChecking, String nrEdges, Boolean autoCreate,
			   Boolean sourceEx, Boolean sourceEqTarget, 
			   Boolean sourceConnToTarget, Boolean targetExistance){
		MultiGraph mg = new MultiGraph("myGraph", strictChecking, autoCreate);
		if(nrNodes.equals("many")){
			int numOfNodes = 10;
			for (int i = 0; i < numOfNodes; i++) {
				mg.addNode("node"+i);
			}
		}
		if(nrEdges.equals("many")){
			mg.addEdge("e1", "node1", "node2");
			mg.addEdge("e2", "node3", "node4");
			mg.addEdge("e3", "node2", "node4");
			mg.addEdge("e4", "node3", "node5");
			mg.addEdge("e5", "node2", "node1");
		}
		
		
		Edge e = mg.addEdge("e6", "node10", "node11");
		assertEquals(null, e);
	}
	@Test
	@Source("csvFiles/MultigraphAddEdge/CategoryPartitionAddEdge03.csv")
	public void strtCheckExixstingEdgeReturn(Boolean idExistance, String idValue, String nrNodes,
			   Boolean strictChecking, String nrEdges, Boolean autoCreate,
			   Boolean sourceEx, Boolean sourceEqTarget, 
			   Boolean sourceConnToTarget, Boolean targetExistance){
		MultiGraph mg = new MultiGraph("myGraph", strictChecking, autoCreate);
		int numOfNodes = 10;
		for (int i = 0; i < numOfNodes; i++) {
			mg.addNode("node"+i);
		}
		mg.addEdge("e1", "node1", "node2");
		mg.addEdge("e2", "node3", "node4");
		mg.addEdge("e3", "node2", "node4");
		mg.addEdge("e4", "node3", "node5");
		mg.addEdge("e5", "node2", "node1");
		
		Edge e;

		e = mg.addEdge("e1", "node1", "node2");
		
		assertEquals(mg.getEdge("e1"), e);
	}
	@Test
	@Source("csvFiles/MultigraphAddEdge/CategoryPartitionAddEdge04.csv")
	public void edgeCreation(Boolean idExistance, String idValue, String nrNodes,
			   Boolean strictChecking, String nrEdges, Boolean autoCreate,
			   Boolean sourceEx, Boolean sourceEqTarget, 
			   Boolean sourceConnToTarget, Boolean targetExistance){
		MultiGraph mg = new MultiGraph("myGraph", strictChecking, autoCreate);
		int numOfNodes = 10;
		for (int i = 0; i < numOfNodes; i++) {
			mg.addNode("node"+i);
		}
		mg.addEdge("e1", "node1", "node2");
		mg.addEdge("e2", "node3", "node4");
		mg.addEdge("e3", "node2", "node4");
		mg.addEdge("e4", "node3", "node5");
		mg.addEdge("e5", "node2", "node1");
		
		if(sourceConnToTarget){
			mg.addEdge("ePre", "node1", "node1");
		}
		Edge e;
		if(sourceEx){
			e = mg.addEdge("e10", "node1", "node1");
		}else{
			e = mg.addEdge("e10", "node10", "node10");
		}
		
		assertEquals(mg.getEdge("e10"), e);
	}
}
//System.out.println("idEx::"+idExistance+"::idVal::"+idValue+"::nrNod::"+nrNodes+"::strCheck::"+strictChecking+"::nrEd::"+nrEdges+
//		"::autoC::"+autoCreate+"::sorcEx::"+sourceEx+"::sEquTar::"+sourceEqTarget+"::targetExistance::"+targetExistance+"::sourceDeg::"+sourceDeg+
//		"::sourceConnTar::"+sourceConnToTarget+"::out::"+outcome);