CategoryPartitionAddEdgeSingleGraph.java

package org.graphstream.graph.implementations;

import static org.junit.Assert.*;

import javax.validation.constraints.AssertTrue;

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


@RunWith(Feeder.class)
public class CategoryPartitionAddEdgeSingleGraph {

	//graphStrictChecking
	//graphAutoCreate, sourceExistance, sourceEqTarget, sourceDegree
	//sourceConnectedTarget, targetExistance
	@Rule
	public ExpectedException exception = ExpectedException.none();

	//Test using AddEdge(String, String, String)
	
	@Test
	public void test1() {
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		//source do not exist
		sg.addNode("N3");//target
		exception.expect(ElementNotFoundException.class);
		Edge e = sg.addEdge("E2","N1","N3");
		
		fail();
	} 

	@Test
	public void test2() {
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		sg.addNode("N1");//source and target
		sg.addNode("N2");
		sg.addNode("N3");
		sg.addEdge("E1","N1","N2");
		sg.addEdge("E2","N1","N3");
		Edge e = sg.addEdge("E3","N1","N1");
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}

	@Test
	public void test3() {
		SingleGraph sg = new SingleGraph("MyGraph", false, false);
		sg.addNode("N1");//source and target
		sg.addNode("N2");
		sg.addNode("N3");
		sg.addEdge("E1","N1","N2");
		sg.addEdge("E2","N1","N3");
		sg.addEdge("E3","N1","N1");
		Edge e = sg.addEdge("E4","N1","N2");
		
		assertTrue(e==null);
	}

	@Test
	public void test4() {
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		sg.addNode("N1");//source 
		sg.addEdge("E1","N1","N1");
		exception.expect(ElementNotFoundException.class);
		Edge e = sg.addEdge("E3","N1","N2");
		
		fail();
	}
	
	@Test
	public void test5() {
		SingleGraph sg = new SingleGraph("MyGraph", false, false);
		Edge e = sg.addEdge("E1","N1","N2");
		
		assertTrue(e==null);
	}

	@Test
	public void test6() {
		SingleGraph sg = new SingleGraph("MyGraph", false, true);
		sg.addNode("N1");//source 
		sg.addNode("N2");//target
		sg.addEdge("E1","N1","N2");
		sg.addEdge("E2","N1","N1");
		Edge e = sg.addEdge("E3","N1","N2");
		
		assertTrue(e==null);
	}
	
	@Test
	public void test7() {
		SingleGraph sg = new SingleGraph("MyGraph", false, true); 
		sg.addNode("N1");//source
		sg.addNode("N2");
		sg.addEdge("E1","N1","N2");
		sg.addEdge("E2","N1","N1");
		Edge e = sg.addEdge("E3","N1","N3");
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N3");
	}
	
	@Test
	public void test8() {
		SingleGraph sg = new SingleGraph("MyGraph", false, false);
		sg.addNode("N1");//source and target
		sg.addNode("N2");
		sg.addEdge("E1","N1","N2");
		Edge e = sg.addEdge("E3","N1","N1");
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test9() {
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		sg.addNode("N1");//source and target
		Edge e = sg.addEdge("E3","N1","N1");
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test10() {
		exception.expect(IdAlreadyInUseException.class);
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		sg.addNode("N1");//source and target
		sg.addEdge("E3","N1","N1");
		Edge e = sg.addEdge("E3","N1","N1");		
		fail();
	}
	
	@Test
	public void test11() {
		exception.expect(IdAlreadyInUseException.class);
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		sg.addNode("N1");//source and target
		sg.addEdge("E3","N1","N1");
		Edge e = sg.addEdge("E3","N1","N1");
		
		fail();
	}
	
	//Test using AddEdge(String, Node, Node)
	
	
	@Test
	public void test12() {
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1,node2);
		sg.addEdge("E2",node1,node3);
		Edge e = sg.addEdge("E3",node1,node1);
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test13() {
		SingleGraph sg = new SingleGraph("MyGraph", false, false);
		Node node1 = sg.addNode("N1");//source 
		Node node2 = sg.addNode("N2");//target
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1,node2);
		sg.addEdge("E2",node1,node3);
		sg.addEdge("E1",node1,node1);
		Edge e = sg.addEdge("E4",node1,node2);
		
		assertTrue(e==null);
	}

	@Test
	public void test14() {
		SingleGraph sg = new SingleGraph("MyGraph", false, true);
		Node node1 = sg.addNode("N1");//source 
		Node node2 = sg.addNode("N2");//target
		sg.addEdge("E1",node1,node2);
		sg.addEdge("E2",node1,node1);
		Edge e = sg.addEdge("E3",node1,node1);
		
		assertTrue(e==null);
	}
	
	@Test
	public void test15() {
		SingleGraph sg = new SingleGraph("MyGraph", false, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		sg.addEdge("E1",node1,node2);
		Edge e = sg.addEdge("E3",node1,node1);
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test16() {
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		Node node1 = sg.addNode("N1");//source and target
		Edge e = sg.addEdge("E3",node1,node1);
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test17(){
		SingleGraph sg = new SingleGraph("MyGraph", true, true);
		Node node1 = sg.addNode("N1");//source and target
		sg.addEdge("E3",node1,node1);
		exception.expect(IdAlreadyInUseException.class);
		Edge e = sg.addEdge("E3",node1,node1);		
		fail();
	}
	
	//Test using AddEdge(String, NodeIndex, NodeIndex)
	@Test
	public void test18(){
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1.getIndex(),node2.getIndex());
		sg.addEdge("E2",node1.getIndex(),node3.getIndex());
		Edge e = sg.addEdge("E3",node1.getIndex(),node1.getIndex());
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	//Test using AddEdge(String, NodeIndex, NodeIndex, directed)
	@Test
	public void test19(){
		SingleGraph sg = new SingleGraph("MyGraph", false, false);
		Node node1 = sg.addNode("N1");//source 
		Node node2 = sg.addNode("N2");//target
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1.getIndex(),node2.getIndex(),true);
		sg.addEdge("E2",node1.getIndex(),node3.getIndex(),true);
		Edge e = sg.addEdge("E4",node1.getIndex(),node2.getIndex(),true);
		
		assertTrue(e==null);
	}
	
	
	@Test
	public void test20(){
		
	}
	
	@Test
	public void test21(){
		
	}
	
	@Test
	public void test22(){
		
	}
	
	@Test
	public void test23(){
		
	}
	
	//Test using AddEdge(String, fromIndex, toIndex, directed)
	@Test
	public void test24(){
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1.getIndex(),node2.getIndex(), true);
		sg.addEdge("E2",node1.getIndex(),node3.getIndex(), true);
		Edge e = sg.addEdge("E3",node1.getIndex(),node1.getIndex(), true);
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	//Test using AddEdge(String, Node from, Node to, directed)
	@Test
	public void test25(){
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1,node2, true);
		sg.addEdge("E2",node1,node3, true);
		Edge e = sg.addEdge("E3",node1.getIndex(),node1.getIndex(), true);
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test27(){
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1,node2, true);
		sg.addEdge("E2",node1,node3, true);
		Edge e = sg.addEdge("E3",node1.getIndex(),node1.getIndex(), true);
		
		assertTrue(e.getSourceNode().getId()=="N1" && e.getTargetNode().getId()=="N1");
	}
	
	@Test
	public void test28(){
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1,node2);
		sg.addEdge("E2",node1,node3);
		exception.expect(EdgeRejectedException.class);
		Edge e = sg.addEdge("E3",node1,node2);
		
		fail();
	}
	@Test
	public void test31(){
		SingleGraph sg = new SingleGraph("MyGraph", true, false);
		Node node1 = sg.addNode("N1");//source and target
		Node node2 = sg.addNode("N2");
		Node node3 = sg.addNode("N3");
		sg.addEdge("E1",node1,node2);
		sg.addEdge("E2",node1,node3);
		exception.expect(EdgeRejectedException.class);
		Edge e = sg.addEdge("E3",node2,node1);
		
		fail();
	}

	@Test
	public void test26(){
		SingleGraph sg = createGraph(1025, true);
	}
	public SingleGraph createGraph(int n, Boolean strictChecking){
		SingleGraph graph = new SingleGraph("graph", strictChecking, true);
		Node old = graph.addNode("node0");
		
		for(int i =1; i<=n; i++){
			Node newNode = graph.addNode("node"+i);
			graph.addEdge("e"+i, old, newNode);
			old = newNode;
		}
		return graph; 
	}
	
//	private void test3() {
//		
//		SingleGraph s = new SingleGraph("sings");
//		MultiNode m1 = new MultiNode(s, "m1");
//		MultiNode m2 = new MultiNode(s, "m2");
//		s.addEdge("asda", m1, m2);
//		s.addEdge("asda1", m1, m2);
//		System.out.println(s.getEdge("asda"));
//		s.addNode("s");
//		
//	}
//
//
//
//	//true,correct,many,true,many,true,true,true,N,false,true
//	private void test4() {
//		SingleGraph singleGraph = new SingleGraph("singleGraph1", true, true);
//
//		for (int i = 0; i < 100; i++) {
//			singleGraph.addNode("Node_" + i);
//		}
//
//		// creaning n-1 edges
//		for (int i = 2; i < 90; i++) {
//			singleGraph.addEdge("Edge_"+i, "Node_"+i, "Node_"+(i+1));
//		}
//
//		//sourceDegree N
//		for (int i = 0; i < 100; i++) {
//			singleGraph.addEdge("EdgeDegree_"+i, "Node_1", "Node_"+i);
//		}
//		exception.expect(IdAlreadyInUseException.class);
//		singleGraph.addEdge("EdgeDegree_1", "Node_1", "Node_1");	
//	}
//
//	//false,correct,many,false,many,false,true,false,N-1,false,false
//	private void test2() {
//		SingleGraph singleGraph = new SingleGraph("singleGraph2", false, false);
//		String id = "myID";
//
//		for (int i = 0; i < 100; i++) {
//			singleGraph.addNode("Node_" + i);
//		}
//
//		for (int i = 2; i < 90; i++) {
//			singleGraph.addEdge("Edge_"+i, "Node_"+i, "Node_"+(i+1));
//		}
//
//		//sourceDegree N-1
//		for (int i = 0; i < 99; i++) {
//			singleGraph.addEdge("EdgeDegree_"+i, "Node_1", "Node_"+(i+1));
//		}
//		
//		
//		Edge ed = singleGraph.addEdge(id, "Node_1", "NodeTarget");
//		
//		assertEquals(100, singleGraph.getNodeCount());
//		
////		assertEquals("Node_1", singleGraph.getEdge(id).getSourceNode().getId());
//		//assertEquals("NodeTarget", singleGraph.getEdge(id).getTargetNode());
//	}
//
//
//	//	/*
//	//	 * create an edge with given id to control the id value existence
//	//	 * if strict checking is true it will raise IdAlreadynUseException
//	//	 * otherwise it will remove the existence edge and add new edge
//	//	 * changing the target and source node
//	//	 */
//	//	private void test1(SingleGraph singleGraph, String id, int nrNodes) {
//	//		if (id == null) {
//	//			exception.expect(AssertionError.class);
//	//		} else {
//	//			exception.expect(IdAlreadyInUseException.class);
//	//		}
//	//
//	//		singleGraph.addEdge(id, "Node_1", "Node_"+(nrNodes-1));
//	//		singleGraph.addEdge(id, "Node_2", "Node_"+(nrNodes-2));	
//	//
//	//
//	//	}
//





}